import logging
from typing import Optional
from lxml.builder import E
from .message_maker import MessageMaker
from .mock_responses import (
mock_initial_search_response,
mock_initial_search_ssn_response,
)
[docs]
class InitialSearchQuery(MessageMaker):
"""Builds the xml payload for MembershipDetails demographic call for the XP2 core."""
def __init__(
self,
logger: logging.Logger,
member_number: str,
class_name: Optional[str] = None,
namespace: Optional[str] = None,
):
self.member_number = member_number
self._method_name = "MembershipDetails"
super().__init__(logger, class_name, namespace)
[docs]
def build(self):
xml = E.MembershipDetailRequest(
E.MemberId(self.member_number, xmlns=self._namespace)
)
request = [xml]
return self.make_message(self._method_name, request)
[docs]
def mock_response(self):
return mock_initial_search_response()
[docs]
class InitialSearchSSNQuery(MessageMaker):
"""Builds the xml payload for IndividualLookup demographic call for the XP2 core."""
def __init__(
self,
logger: logging.Logger,
ssn: str,
class_name: Optional[str] = None,
namespace: Optional[str] = None,
):
self.ssn = ssn
self._method_name = "IndividualLookup"
super().__init__(logger, class_name, namespace)
[docs]
def build(self):
xml = E.IndividualLookupRequest(E.TaxId(self.ssn, xmlns=self._namespace))
request = [xml]
return self.make_message(self._method_name, request)
[docs]
def mock_response(self):
return mock_initial_search_ssn_response()