import logging
from lxml import etree
from q2_sdk.models.cores.queries.base_query import BaseQuery
from q2_cores.Summit.queries import mock_responses
[docs]
class DemographicInfoQuery(BaseQuery):
def __init__(
self,
logger: logging.Logger,
teller_id: str,
account_number: str,
options: str = "MSLXY",
):
self.teller_id = teller_id
self.account_number = account_number
self.options = options
super().__init__(logger)
[docs]
def build(self) -> str:
"""
Call Shape:
.. code::
<Summit>
<RealTime>
<CommandRq>
<RequestHeader>
<Teller>
<ID>HBT</ID>
</Teller>
</RequestHeader>
<RQMS_RQSTRq>
<Account>85135</Account>
<Options>MSLXY</Options>
</RQMS_RQSTRq>
</CommandRq>
</RealTime>
</Summit>
"""
root = etree.Element("Summit")
realtime_node = etree.SubElement(root, "RealTime")
command_rq_node = etree.SubElement(realtime_node, "CommandRq")
request_header_node = etree.SubElement(command_rq_node, "RequestHeader")
teller_node = etree.SubElement(request_header_node, "Teller")
id_node = etree.SubElement(teller_node, "ID")
id_node.text = self.teller_id
rqms_rqst_rq_node = etree.SubElement(command_rq_node, "RQMS_RQSTRq")
account_node = etree.SubElement(rqms_rqst_rq_node, "Account")
account_node.text = self.account_number
options_node = etree.SubElement(rqms_rqst_rq_node, "Options")
options_node.text = self.options
xml_as_bytes = etree.tostring(root)
return xml_as_bytes.decode("utf8")
[docs]
def mock_response(self):
return mock_responses.mock_build_demographic_info_response()