From aa0c9b401efb6ac085a274ce18009a65c78bf467 Mon Sep 17 00:00:00 2001 From: Sunpy Date: Mon, 11 Mar 2019 13:54:27 +0100 Subject: [PATCH] api autodoc path --- helpers/apiDocumentationHelper.py | 26 ++++++++++++++++++++++++++ main.py | 9 +++++---- objects/glob.py | 1 + 3 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 helpers/apiDocumentationHelper.py diff --git a/helpers/apiDocumentationHelper.py b/helpers/apiDocumentationHelper.py new file mode 100644 index 0000000..0835b80 --- /dev/null +++ b/helpers/apiDocumentationHelper.py @@ -0,0 +1,26 @@ +import json + +import tornado.gen +import tornado.web + +from web import asyncTornado + +from objects import glob + +class handler(asyncTornado.asyncRequestHandler): + @tornado.web.asynchronous + @tornado.gen.engine + def asyncGet(self): + url = "/".join( [x for x in self.request.uri.split("/")][:-1] ) + ver = self.request.uri.split("/")[-1] + + data = { + "browse": ver, + "apis": [ + x[0] for x in glob.routes if x[0].startswith("%s/%s/" % (url, ver)) + ] + } + + self.write( json.dumps(data) ) + self.set_header("Content-Type", "application/json") + self.set_status(200) diff --git a/main.py b/main.py index ff56d39..210413a 100644 --- a/main.py +++ b/main.py @@ -8,6 +8,7 @@ import tornado.ioloop import tornado.web import tornado.netutil +from helpers import apiDocumentationHelper as doc_api from objects import glob @@ -31,9 +32,9 @@ def make_app(): Map out a directory array of modules in a given directory :param str: directory to map out and import - :return: tuple( endpoint, module.handle )[] routes + :return: tuple( endpoint, module.handler )[] routes """ - routes = [] + routes = [(r"/%s" % dir, doc_api.handler)] apis = get_files(dir) for api in apis: if api.endswith(".py"): @@ -46,8 +47,8 @@ def make_app(): routes += map_routes("%s/%s" % (dir, api)) return routes - routes = map_routes("api") - return tornado.web.Application(routes) + glob.routes = map_routes("api") + return tornado.web.Application(glob.routes) def build_database(): f = open("wayback.db", "w") diff --git a/objects/glob.py b/objects/glob.py index bcf5eea..170714d 100644 --- a/objects/glob.py +++ b/objects/glob.py @@ -6,6 +6,7 @@ from helpers import databaseHelper with open("config.json", "r") as f: config = json.load(f) +routes = [] app = None sql = None pool = ThreadPool(config["threads"])