import traceback import json import tornado.gen import tornado.web from web import asyncTornado from constants import argumentTypes from objects import glob ARGS = { ("file_hash", "file_version", "timestamp"): argumentTypes.one_required } SQL_STRUCT = { "main": "SELECT %s FROM updates WHERE filename = 'osu!.exe' ORDER BY file_version" } class handler(asyncTornado.asyncRequestHandler): @tornado.web.asynchronous @tornado.gen.engine def asyncGet(self): status_code = 400 data = {} try: args_filter = asyncTornado.check_arguments(self.request.arguments, ARGS) if not args_filter: raise Exception("Missing required arguments") conn = glob.new_sql() cur = conn.cursor() sql = SQL_STRUCT["main"] cur.execute(sql % ",".join(args_filter)) data = cur.fetchall() cur.close() conn.close() status_code = 200 except Exception as e: status_code = 400 data["status"] = status_code data["message"] = str(e) print("Err: %s" % e) traceback.print_exc() finally: self.write( json.dumps(data) ) self.set_header("Content-Type", "application/json") self.set_status(status_code)