import logging
from lxml import etree
from lxml.builder import E
from q2_sdk.models.cores.queries.base_query import BaseQuery
from .mock_responses import mock_demographic_info_response
[docs]
class DemographicInfoQuery(BaseQuery):
"""Builds the xml payload for the initial search call for SOA"""
def __init__(
self, logger: logging.Logger, name_id: str, group_name: str, inst_number: str
):
self.name_id = name_id
self.group_name = group_name
self.inst_number = inst_number
super().__init__(logger)
[docs]
def build(self):
xml = etree.tostring(
E.Request(
E.NameID(self.name_id),
E.Sequence("1"),
E.GroupName(self.group_name),
E.InstNumber(self.inst_number),
E.Type("Names"),
E.Type("NameFlexData"),
Echo="true",
TypeOfRequest="GetName",
),
encoding="unicode",
)
return xml
[docs]
def mock_response(self):
return mock_demographic_info_response()