45 lines
1.2 KiB
Python
45 lines
1.2 KiB
Python
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
|
|
|
|
|