]> git.ipfire.org Git - ipfire.org.git/blobdiff - src/backend/zeiterfassung.py
Use Python's internal asyncio stuff instead of Tornado's
[ipfire.org.git] / src / backend / zeiterfassung.py
index 626b3650cf011843844d1e1d3b940bc6fcbe4a6b..fef5e00b1fa85abd0bf00ab549a59f84dad30d0b 100644 (file)
@@ -4,11 +4,9 @@ import hashlib
 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"
@@ -24,13 +22,6 @@ class ZeiterfassungClient(Object):
                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 = ""
@@ -45,15 +36,14 @@ class ZeiterfassungClient(Object):
 
                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)
@@ -64,9 +54,7 @@ class ZeiterfassungClient(Object):
                )
 
                # 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())