|
|
|
@ -10,7 +10,8 @@ from typing import Optional
|
|
|
|
|
from typing import Union
|
|
|
|
|
|
|
|
|
|
import arrow
|
|
|
|
|
import httpx
|
|
|
|
|
import treq
|
|
|
|
|
from twisted.internet.defer import inlineCallbacks
|
|
|
|
|
|
|
|
|
|
# Project imports
|
|
|
|
|
import util
|
|
|
|
@ -54,6 +55,25 @@ class AgoraDesk:
|
|
|
|
|
|
|
|
|
|
logger.debug("creating instance of AgoraDesk API with api_key %s", self.api_key)
|
|
|
|
|
|
|
|
|
|
@inlineCallbacks
|
|
|
|
|
def callback_api_call(self, response, result):
|
|
|
|
|
logger.debug(response)
|
|
|
|
|
text = yield response.content()
|
|
|
|
|
try:
|
|
|
|
|
result["response"] = json.loads(text)
|
|
|
|
|
except json.decoder.JSONDecodeError:
|
|
|
|
|
result["success"] = "ERROR"
|
|
|
|
|
result["message"] = "Error parsing JSON."
|
|
|
|
|
return result
|
|
|
|
|
result["status"] = response.code
|
|
|
|
|
if response.code == 200:
|
|
|
|
|
result["success"] = True
|
|
|
|
|
result["message"] = "OK"
|
|
|
|
|
else:
|
|
|
|
|
result["message"] = "API ERROR"
|
|
|
|
|
|
|
|
|
|
return result
|
|
|
|
|
|
|
|
|
|
def _api_call(
|
|
|
|
|
self,
|
|
|
|
|
api_method: str,
|
|
|
|
@ -81,51 +101,53 @@ class AgoraDesk:
|
|
|
|
|
"status": None,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
response = None
|
|
|
|
|
if http_method == "POST":
|
|
|
|
|
if query_values:
|
|
|
|
|
response = httpx.post(
|
|
|
|
|
url=api_call_url,
|
|
|
|
|
# response = httpx.post(
|
|
|
|
|
# url=api_call_url,
|
|
|
|
|
# headers=headers,
|
|
|
|
|
# content=json.dumps(query_values),
|
|
|
|
|
# )
|
|
|
|
|
response = treq.post(
|
|
|
|
|
api_call_url,
|
|
|
|
|
headers=headers,
|
|
|
|
|
content=json.dumps(query_values),
|
|
|
|
|
data=json.dumps(query_values),
|
|
|
|
|
)
|
|
|
|
|
else:
|
|
|
|
|
response = httpx.post(
|
|
|
|
|
url=api_call_url,
|
|
|
|
|
# response = httpx.post(
|
|
|
|
|
# url=api_call_url,
|
|
|
|
|
# headers=headers,
|
|
|
|
|
# )
|
|
|
|
|
response = treq.post(
|
|
|
|
|
api_call_url,
|
|
|
|
|
headers=headers,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
response = httpx.get(url=api_call_url, headers=headers, params=query_values)
|
|
|
|
|
|
|
|
|
|
logger.debug(response)
|
|
|
|
|
result["response"] = json.loads(response.text)
|
|
|
|
|
result["status"] = response.status_code
|
|
|
|
|
if response.status_code == 200:
|
|
|
|
|
result["success"] = True
|
|
|
|
|
result["message"] = "OK"
|
|
|
|
|
else:
|
|
|
|
|
result["message"] = "API ERROR"
|
|
|
|
|
|
|
|
|
|
return result
|
|
|
|
|
except httpx.ConnectError as error:
|
|
|
|
|
result["message"] = str(error)
|
|
|
|
|
result["status"] = 600
|
|
|
|
|
result["response"] = {"error": {"message": error}}
|
|
|
|
|
return result
|
|
|
|
|
except json.decoder.JSONDecodeError:
|
|
|
|
|
result["message"] = "Not JSON"
|
|
|
|
|
# response = httpx.get(url=api_call_url, headers=headers, params=query_values)
|
|
|
|
|
response = treq.get(api_call_url, headers=headers, params=query_values)
|
|
|
|
|
if response:
|
|
|
|
|
result["status"] = response.status_code
|
|
|
|
|
result["response"] = {"error": {"message": response.text}}
|
|
|
|
|
return result
|
|
|
|
|
except httpx.ReadTimeout:
|
|
|
|
|
result["message"] = "Read timed out"
|
|
|
|
|
if response:
|
|
|
|
|
result["status"] = response.status_code
|
|
|
|
|
result["response"] = {"error": {"message": response.text}}
|
|
|
|
|
return result
|
|
|
|
|
response.addCallback(self.callback_api_call, result)
|
|
|
|
|
return response
|
|
|
|
|
|
|
|
|
|
# except httpx.ConnectError as error:
|
|
|
|
|
# result["message"] = str(error)
|
|
|
|
|
# result["status"] = 600
|
|
|
|
|
# result["response"] = {"error": {"message": error}}
|
|
|
|
|
# return result
|
|
|
|
|
# except json.decoder.JSONDecodeError:
|
|
|
|
|
# result["message"] = "Not JSON"
|
|
|
|
|
# if response:
|
|
|
|
|
# result["status"] = response.status_code
|
|
|
|
|
# result["response"] = {"error": {"message": response.text}}
|
|
|
|
|
# return result
|
|
|
|
|
# except httpx.ReadTimeout:
|
|
|
|
|
# result["message"] = "Read timed out"
|
|
|
|
|
# if response:
|
|
|
|
|
# result["status"] = response.status_code
|
|
|
|
|
# result["response"] = {"error": {"message": response.text}}
|
|
|
|
|
# return result
|
|
|
|
|
|
|
|
|
|
# Account related API Methods
|
|
|
|
|
# ===========================
|
|
|
|
|