import logging
from lxml import etree
from q2_sdk.models.cores.queries.base_query import BaseQuery
from q2_cores import data_helpers
from q2_cores.Corelation.queries import mock_responses
[docs]
class LoginVerifyQuery(BaseQuery):
def __init__(self, logger: logging.Logger, member_number: int, channel_serial: int):
self.member_number = member_number
self.channel_serial = channel_serial
self.logger = logger
super().__init__(logger)
[docs]
def build(self):
"""
Creates query to get a Person, Account, and/or Login serial from SSN or CIF
Example query:
.. code-block:: xml
<query xmlns="http://www.corelationinc.com/queryLanguage/v1.0">
<sequence>
<transaction>
<step>
<loginVerify>
<channelSerial>1</channelSerial>
<loginId>111223333</loginId>
</loginVerify>
</step>
</transaction>
</sequence>
</query>
"""
query_node = etree.Element(
"query", xmlns="http://www.corelationinc.com/queryLanguage/v1.0"
)
sequence_node = etree.SubElement(query_node, "sequence")
transaction_node = etree.SubElement(sequence_node, "transaction")
step_node = etree.SubElement(transaction_node, "step")
login_verify_node = etree.SubElement(step_node, "loginVerify")
etree.SubElement(login_verify_node, "channelSerial").text = str(
self.channel_serial
)
etree.SubElement(login_verify_node, "loginId").text = str(self.member_number)
xml_payload = etree.tostring(query_node, pretty_print=False).decode()
self.logger.debug("GET_REQUEST: {}".format(xml_payload))
return data_helpers.normalize_xml_str(xml_payload)
[docs]
def mock_response(self):
return mock_responses.login_verify_response()