diff --git a/gestionatr/cli.py b/gestionatr/cli.py index 9fa02bde..216930fd 100644 --- a/gestionatr/cli.py +++ b/gestionatr/cli.py @@ -15,6 +15,7 @@ from gestionatr.input.messages import message_gas from gestionatr.input.messages.message import except_f1 from gestionatr.output.messages.sw_p0 import ENVELOP_BY_DISTR +from gestionatr.output.messages.sw_a5_29 import ENVELOP_GAS_BY_DISTR from gestionatr.exceptions import * from gestionatr import __version__ @@ -38,6 +39,25 @@ """ +A29_TEMPLATE = """ + + + GML + {emisora} + {destino} + {fecha_solicitud} + {hora_solicitud} + 29 + A5 + + + {fecha_solicitud} + {hora_solicitud} + {cups} + N + + +""" def get_gestionatr_version(ctx, param, value): if not value or ctx.resilient_parsing: @@ -88,9 +108,10 @@ def request_atr_29(url, user, password, xml_str=None, params=None): raise ValueError("XML or params must be passed to request_A5") if xml_str is None and params: codi_receptor = params['destino'] - params['fecha_solicitud'] = datetime.now().strftime('%Y-%m-%dT%H:%M:%S') + params['fecha_solicitud'] = datetime.now().strftime('%Y-%m-%d') + params['hora_solicitud'] = datetime.now().strftime('%H:%M:%S') params['solicitud'] = 10**11 + int((random.random() * 10**11)) - xml_str = re.sub(r'\s+<', '<', P0_TEMPLATE) + xml_str = re.sub(r'\s+<', '<', A29_TEMPLATE) xml_str = re.sub(r'\s+$', '', xml_str) xml_str = re.sub(r'\n', '', xml_str).format(**params) else: @@ -111,11 +132,12 @@ def request_atr_29(url, user, password, xml_str=None, params=None): # sol funcionar en la majoria. Aixi si una distri no la tenim documentada es fa el intent amb les 2 plantilles # principals que tenim. La "altres" i la "reintent" - distri_envelop = ENVELOP_BY_DISTR.get(codi_receptor, ENVELOP_BY_DISTR.get("altres")) - retry_envelop = ENVELOP_BY_DISTR.get("reintent") - retry2_envelop = ENVELOP_BY_DISTR.get("reintent_2") + distri_envelop = ENVELOP_GAS_BY_DISTR.get(codi_receptor, ENVELOP_GAS_BY_DISTR.get("altres")) + retry_envelop = ENVELOP_GAS_BY_DISTR.get("reintent") + retry_envelop2 = ENVELOP_GAS_BY_DISTR.get("reintent2") + retry_envelop3 = ENVELOP_GAS_BY_DISTR.get("reintent3") error = None - for envelop in [distri_envelop, retry_envelop, retry2_envelop]: + for envelop in [distri_envelop, retry_envelop, retry_envelop2, retry_envelop3]: xml_str_to_use = xml_str soap_content = envelop['template'].format(xml_str=xml_str_to_use) diff --git a/gestionatr/output/messages/sw_a5_29.py b/gestionatr/output/messages/sw_a5_29.py index 284fe6e3..66688aea 100644 --- a/gestionatr/output/messages/sw_a5_29.py +++ b/gestionatr/output/messages/sw_a5_29.py @@ -44,3 +44,76 @@ def __init__(self): self.numdocumento = XmlField('numdocumento') super(ValidacionClienteA529, self).__init__('validacioncliente', 'validacioncliente') + + +GAS_ENVELOPE_TEMPLATE_AMB_NAMESPACE_AL_PAS = """ + + + + + + {xml_str} + + + + +""" + +GAS_ENVELOPE_TEMPLATE_SENSE_NAMESPACE_AL_PAS01 = """ + + + + + + {xml_str} + + + + +""" + +GAS_ENVELOPE_TEMPLATE_CHATGPT = """ + + + + + +{xml_str} + + + + +""" + + +ENVELOP_GAS_BY_DISTR = { + 'altres': { + 'template': GAS_ENVELOPE_TEMPLATE_SENSE_NAMESPACE_AL_PAS01, + 'extra_headers': { + "soapAction": "" + }, + }, + 'reintent': { + 'template': GAS_ENVELOPE_TEMPLATE_AMB_NAMESPACE_AL_PAS, + 'extra_headers': { + "soapAction": "" + }, + }, + 'reintent2': { + 'template': GAS_ENVELOPE_TEMPLATE_CHATGPT, + 'extra_headers': { + "soapAction": "" + }, + }, + 'reintent3': { + 'template': GAS_ENVELOPE_TEMPLATE_CHATGPT, + 'extra_headers': { + }, + }, +}