import base64
import json
import logging
from q2_sdk.models.cores.queries.base_query import BaseQuery
from .mock_responses import demographic_info_response
[docs]
class DemographicInfoQuery(BaseQuery):
"""
Builds the payload for the demographic call in the Fiserv Communicator Premier Open core
"""
def __init__(self, logger: logging.Logger, req_dict: dict) -> dict:
self.req_dict = req_dict
super().__init__(logger)
[docs]
def build(self) -> dict:
"""
Creates a demographic info query to retrieve the user's demographic information.
Example of query return to search by SSN:
.. code-block:: json
{
"UrlPath": "/parties/parties/secured/list",
"Method": "POST",
"Base64Body": "eyJSZWNDdHJsSW4iOiB7fSwgIlBhcnR5TGlzdFNlbCI6IHsiVGF4SWRlbnQiOiAiMTQ3ODUxMjM1In19",
}
We convert below request into Base64 and add it to Base64Body
.. code-block:: json
{
"RecCtrlIn":{},
"PartyListSel":{
"TaxIdent":"123456789"
}
}
"""
ssn_core_call = {
"RecCtrlIn": {},
"PartyListSel": {"TaxIdent": self.req_dict.get("ssn")},
}
json_str = json.dumps(ssn_core_call)
b64_encoded = base64.b64encode(json_str.encode("utf-8"))
base64_body = b64_encoded.decode("utf-8")
ssn_query = {
"UrlPath": "/parties/parties/secured/list",
"Method": "POST",
"Base64Body": base64_body,
}
return ssn_query
[docs]
def mock_response(self):
response = demographic_info_response()
return response