diff options
| author | 2018-02-05 20:15:01 +0000 | |
|---|---|---|
| committer | 2018-02-05 20:15:01 +0000 | |
| commit | f0f347b01734b719bae0d36a8670fd7e49866b1e (patch) | |
| tree | 4d9cf54e44b7fea4124389098fd0fa37a17cdad9 /app.py | |
| parent | Minifix (diff) | |
Revert "Major update"
This reverts commit 80a1ab5
Diffstat (limited to 'app.py')
| -rw-r--r-- | app.py | 110 | 
1 files changed, 6 insertions, 104 deletions
| @@ -1,108 +1,10 @@ -#!/usr/bin/env python3.6 +# coding=utf-8 -# Stdlib -from importlib.util import module_from_spec, spec_from_file_location -import mimetypes -import os +from pysite.route_manager import RouteManager -# External Libraries -from japronto import Application -app = Application() +manager = RouteManager() +app = manager.app - -def static_file(path: str):  # type: (str) -> (req: {Response}) -> Coroutine -    async def inner(req):  # type: ({Response}) -> Coroutine -        with open(path) as file: -            return req.Response( -                text=file.read(), mime_type=mimetypes.guess_type(path)[0]) - -    return inner - - -def find_static_files(dir_: str) -> list:  # type: (str) -> List[str] -    data = [] -    for path, _, files in os.walk(dir_): -        if not files: -            continue - -        for file in files: -            if not file.split(".")[-1] not in ("html", "css", "js"): -                continue - -            pathname = f"{path[len(dir_):]}/{file.strip()}" -            data.append(pathname.split(".")[0], static_file(pathname)) - -    return data - - -def find_routes( -        dir_: str) -> list:  # type: (str) -> List[Tuple[str, str, callable]] -    data = [] -    for path, _, files in os.walk(dir_): -        if not files: -            continue - -        for file in files: -            if not file.endswith(".py"): -                continue -            pathname = f"{path}/{file.strip()}" -            spec = spec_from_file_location(file[:-3], pathname) -            module = module_from_spec(spec) -            spec.loader.exec_module(module) - -            if not hasattr(module, "Index"): -                raise Exception("No `Index` class!") - -            res = module.Index() -            del module, spec - -            route_paths = res.path -            for path_ in route_paths: -                # TODO: Add all request types here -                for method in ("GET", "POST", "DELETE", "PATCH"): -                    if hasattr(res, method.lower()): -                        data.append((path_, method, getattr( -                            res, method.lower()))) - -    return data - - -def find_errors(dir_: str) -> list:  # type: (str) -> List[str] -    data = [] -    for path, _, files in os.walk(dir_): -        if not files: -            continue - -        for file in files: -            if not file.endswith(".py"): -                continue -            pathname = f"{path}/{file.strip()}" -            spec = spec_from_file_location(file[:-3], pathname) -            module = module_from_spec(spec) -            spec.loader.exec_module(module) - -            if not hasattr(module, "Index"): -                raise Exception("No `Index` class!") - -            res = module.Index() -            del module, spec -            data.append((res.error_code, res.err)) - -    return data - - -routes = find_routes("routes") -static = find_static_files("static") -errors = find_errors("error_handlers") - -for path, method, handle in routes: -    app.router.add_route(path, handle, method=method) - -for path, handle in static: -    app.router.add_route(path, handle, method="GET") - -for errcode, handler in errors: -    app.add_error_handler(errcode, handler) - -app.run(debug=True, port=80) +if __name__ == '__main__': +    manager.run() | 
