def api_call( environment : str, accesstoken : str, category : str, action : str, data, ): url = conf_get("url." + environment) # input_["lang"] = "de" request_headers = { "Content-Type": "application/json", } if (accesstoken is not None): request_headers["Cookie"] = ("domrobot=%s" % (accesstoken, )) else: pass request_data_decoded = { "method": (category + "." + action), "params": data, } request = { "url": url, "method": "POST", "headers": request_headers, "data": _json.dumps(request_data_decoded), } # log("[>>] %s" % _json.dumps(request, indent = "\t")) response = http_call(request) # log("[<<] %s" % _json.dumps(response, indent = "\t")) if (not (response["status"] == 200)): raise ValueError("API call failed with status %u: %s" % (response["status"], response["data"], )) else: output_data_decoded = _json.loads(response["data"]) result = (output_data_decoded["resData"] if ("resData" in output_data_decoded) else {}) if ("Set-Cookie" in response["headers"]): result["_accesstoken"] = response["headers"]["Set-Cookie"].split("; ")[0].split("=")[1] else: pass if (output_data_decoded["code"] == 2002): raise ValueError("wrong use: %s" % str(output_data_decoded)) else: return result