diff --git a/mopidy_iris/core.py b/mopidy_iris/core.py index ea6066d0..527a0ccb 100755 --- a/mopidy_iris/core.py +++ b/mopidy_iris/core.py @@ -12,6 +12,7 @@ from mopidy import config, ext from mopidy.core import CoreListener from pkg_resources import parse_version from tornado.escape import json_encode, json_decode +from tornado.httpclient import AsyncHTTPClient from .system import IrisSystemThread @@ -414,15 +415,16 @@ class IrisCore(pykka.ThreadingActor): return response - def get_version(self, *args, **kwargs): + async def get_version(self, *args, **kwargs): callback = kwargs.get('callback', False) url = 'https://pypi.python.org/pypi/Mopidy-Iris/json' + http_client = AsyncHTTPClient() try: - response = urllib.request.urlopen(url, timeout=30).read() - response = json.loads(response) - latest_version = response['info']['version'] + http_response = await http_client.fetch(url) + response_body = json.loads(http_response.body) + latest_version = response_body['info']['version'] # compare our versions, and convert result to boolean upgrade_available = parse_version( latest_version ) > parse_version( self.version ) diff --git a/mopidy_iris/handlers.py b/mopidy_iris/handlers.py index 67514bf2..58eeb9bf 100755 --- a/mopidy_iris/handlers.py +++ b/mopidy_iris/handlers.py @@ -38,7 +38,7 @@ class WebsocketHandler(tornado.websocket.WebSocketHandler): iris.add_connection(connection=self, client=client) - def on_message(self, message): + async def on_message(self, message): logger.debug("Iris websocket message received: "+message) message = json_decode(message) @@ -137,14 +137,14 @@ class HttpHandler(tornado.web.RequestHandler): self.set_status(204) self.finish() - def get(self, slug=None): + async def get(self, slug=None): id = int(time.time()) # make sure the method exists if hasattr(iris, slug): try: - getattr(iris, slug)(request=self, callback=lambda response, error=False: self.handle_result(id=id, method=slug, response=response, error=error)) + await getattr(iris, slug)(request=self, callback=lambda response, error=False: self.handle_result(id=id, method=slug, response=response, error=error)) except Exception as e: logger.error(str(e)) @@ -152,7 +152,7 @@ class HttpHandler(tornado.web.RequestHandler): self.handle_result(id=id, error={'code': 32601, 'message': "Method "+slug+" does not exist"}) return - def post(self, slug=None): + async def post(self, slug=None): id = int(time.time()) @@ -165,7 +165,7 @@ class HttpHandler(tornado.web.RequestHandler): # make sure the method exists if hasattr(iris, slug): try: - getattr(iris, slug)(data=params, request=self.request, callback=lambda response=False, error=False: self.handle_result(id=id, method=slug, response=response, error=error)) + await getattr(iris, slug)(data=params, request=self.request, callback=lambda response=False, error=False: self.handle_result(id=id, method=slug, response=response, error=error)) except HTTPError as e: self.handle_result(id=id, error={'code': 32601, 'message': "Invalid JSON payload"})