From b41da612cf029d390e99067a46d0e591c9b08c34 Mon Sep 17 00:00:00 2001 From: Daniel Seichter Date: Sat, 27 Jul 2024 20:48:50 +0200 Subject: [PATCH] Reduce complexity and extract functions --- src/validate_bzst.py | 59 ++++++++++++++++++++++++++------------------ 1 file changed, 35 insertions(+), 24 deletions(-) diff --git a/src/validate_bzst.py b/src/validate_bzst.py index d42fd28..66ee703 100644 --- a/src/validate_bzst.py +++ b/src/validate_bzst.py @@ -91,26 +91,7 @@ def start_validation(payload, iscli=True): try: resp = http.request("GET", URL, fields=bzstmap) - dom = minidom.parseString(resp.data) - params = dom.childNodes - - rc = {} - for param in params: - arrays = param.getElementsByTagName("array") - iskey = True - for array in arrays: - values = array.getElementsByTagName("value") - for value in values: - strings = value.getElementsByTagName("string") - if iskey: - iskey = False - for string in strings: - newkey = gettext(string.childNodes) - else: - iskey = True - for string in strings: - newvalue = gettext(string.childNodes) - rc[newkey] = newvalue + rc = parse_response(resp.data) validationresult = { "key1": payload["key1"], @@ -118,14 +99,12 @@ def start_validation(payload, iscli=True): "ownvat": payload["ownvat"], "foreignvat": payload["foreignvat"], "type": "BZST", - "valid": rc["ErrorCode"] in ["200", "216"], + "valid": is_valid(rc["ErrorCode"]), "errorcode": rc["ErrorCode"], "errorcode_description": load_codes(payload["lang"], rc["ErrorCode"]), "valid_from": rc["Gueltig_ab"], "valid_to": rc["Gueltig_bis"], - "timestamp": datetime.datetime.now(datetime.timezone.utc).strftime( - "%Y-%m-%dT%H:%M:%S" - ), + "timestamp": get_current_timestamp(), "company": rc["Firmenname"], "address": "", "town": rc["Ort"], @@ -139,6 +118,38 @@ def start_validation(payload, iscli=True): return {"vatError": "VAT3500", "vatErrorMessage": repr(e)} +def parse_response(response_data): + dom = minidom.parseString(response_data) + params = dom.childNodes + + rc = {} + for param in params: + arrays = param.getElementsByTagName("array") + iskey = True + for array in arrays: + values = array.getElementsByTagName("value") + for value in values: + strings = value.getElementsByTagName("string") + if iskey: + iskey = False + for string in strings: + newkey = gettext(string.childNodes) + else: + iskey = True + for string in strings: + newvalue = gettext(string.childNodes) + rc[newkey] = newvalue + return rc + + +def is_valid(error_code): + return error_code in ["200", "216"] + + +def get_current_timestamp(): + return datetime.datetime.now(datetime.timezone.utc).strftime("%Y-%m-%dT%H:%M:%S") + + def substitute_variables_in_description(payload): description = payload["errorcode_description"]