import hmac
import json
import tornado.httpclient
-import tornado.gen
-import urllib
-import urlparse
+import urllib.parse
-from misc import Object
+from .misc import Object
class ZeiterfassungClient(Object):
algorithm = "Zeiterfassung-HMAC-SHA512"
if not all((self.url, self.api_key, self.api_secret)):
raise RuntimeError("%s is not configured" % self.__class__.__name__)
- # Create HTTPClient
- self.http_client = tornado.httpclient.AsyncHTTPClient(
- defaults = {
- "User-Agent" : "IPFireWebApp",
- }
- )
-
def _make_signature(self, method, path, body):
# Empty since we only support POST
canonical_query = ""
return h.hexdigest()
- @tornado.gen.coroutine
- def send_request(self, path, **kwargs):
- url = urlparse.urljoin(self.url, path)
+ async def send_request(self, path, **kwargs):
+ url = urllib.parse.urljoin(self.url, path)
# Query arguments are all keyword arguments
arguments = kwargs
request = tornado.httpclient.HTTPRequest(url, method="POST")
- request.body = urllib.urlencode(arguments)
+ request.body = urllib.parse.urlencode(arguments)
# Compose the signature
signature = self._make_signature("POST", path, request.body)
)
# Send the request
- response = yield self.http_client.fetch(request)
+ response = await self.backend.http_client.fetch(request)
# Decode the JSON response
- d = json.loads(response.body.decode())
-
- raise tornado.gen.Return(d)
+ return json.loads(response.body.decode())