diff --git a/izzylib/http_server_async/application.py b/izzylib/http_server_async/application.py index 4fb7a12..8a7d6df 100644 --- a/izzylib/http_server_async/application.py +++ b/izzylib/http_server_async/application.py @@ -22,6 +22,8 @@ frontend = Path(__file__).resolve().parent.parent.join('http_frontend') class Application: + ctx = DotDict() + def __init__(self, loop=None, views=[], middleware=[], **kwargs): if loop: self.loop = loop @@ -69,6 +71,14 @@ class Application: self.template = None + def __getitem__(self, key): + return self.ctx[key] + + + def __setitem__(self, key, value): + self.ctx[key] = value + + def get_route(self, path, method='GET'): return self.router(path, method.upper()) diff --git a/izzylib/http_server_async/response.py b/izzylib/http_server_async/response.py index 3909a87..cc62fa6 100644 --- a/izzylib/http_server_async/response.py +++ b/izzylib/http_server_async/response.py @@ -2,7 +2,7 @@ import json, traceback from datetime import datetime -from .misc import Cookies, Headers +from .misc import Cookies, Headers, CookieItem from ..dotdict import MultiDotDict @@ -85,6 +85,14 @@ class Response: return response + @classmethod + def new_redir(cls, path, status=302, **kwargs): + response = cls(**kwargs) + response.set_redir(path, status) + + return response + + def set_text(self, body=b'', status=None): self.body = body @@ -151,6 +159,10 @@ class Response: return self + def set_cookie(self, key, value, **kwargs): + self.cookies[key] = CookieItem(key, value, **kwargs) + + def compile(self): data = bytes(f'HTTP/1.1 {self.status}', 'utf-8') diff --git a/izzylib/http_server_async/view.py b/izzylib/http_server_async/view.py index 2f75321..55b0c20 100644 --- a/izzylib/http_server_async/view.py +++ b/izzylib/http_server_async/view.py @@ -1,4 +1,4 @@ -import magic, mimetypes +import mimetypes from . import http_methods, error @@ -10,6 +10,9 @@ from ..exceptions import ( MethodNotHandledException ) +try: import magic +except ImportError: magic = None + default_theme = DotDict( primary = Color('#e7a'), @@ -56,7 +59,12 @@ def Static(src): with open(src_path, 'rb') as fd: data = fd.read() - mime = magic.from_buffer(data[:2048], mime=True) or mimetypes.guess_type(path) + + if magic: + mime = magic.from_buffer(data[:2048], mime=True) or mimetypes.guess_type(path) + + else: + mime = mimetypes.guess_type(path) except (FileNotFoundError, IsADirectoryError) as e: raise error.NotFound('Static file not found')