Source code for q2_sdk.hq.models.online_session

from typing import Optional
import re

from lxml import etree

from .xml_helper import find_with_default

RE_GUID = re.compile(r"[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}")


[docs] class OnlineSession: """ Object representation of the Session information that comes in on a Q2 Online request """ def __init__(self, request_xml: Optional[etree.Element] = None): """ :param request_xml: XML node from Online request """ self.hq_auth_token: Optional[str] = None self.aba: Optional[str] = None self.workstation: Optional[str] = None self.session_id: Optional[str] = None self.client_address: Optional[str] = None self.browser_is_compatible_with_uux: Optional[bool] = None self.is_uux_not_legacy: Optional[bool] = None self.is_csr_assist: bool = False self.logon_audit_id: Optional[str] = None if request_xml is not None: self._hydrate_from_xml(request_xml) def _hydrate_from_xml(self, request_xml): form = request_xml.find(".//Form") if hasattr(request_xml, "xmlDoc"): request_attrs = request_xml.xmlDoc.getchildren()[0] self.hq_auth_token = request_attrs.get("HqAuthToken") self.aba = request_attrs.get("ABA") self.logon_audit_id = request_attrs.get("LogonAuditId") self.workstation = find_with_default(form, "Workstation") self.session_id = find_with_default(form, "SessionId") self.client_address = find_with_default(form, "ClientAddress") self.browser_is_compatible_with_uux = find_with_default( form, "BrowserIsCompatibleWithUux", data_type=bool ) self.is_uux_not_legacy = find_with_default( form, "IsUuxNotLegacy", data_type=bool ) # If LoginName is a GUID, this is likely a CSR Assist session login_name = find_with_default(form, "LoginName") self.is_csr_assist = re.match(RE_GUID, str(login_name)) is not None