You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1023 B
43 lines
1023 B
# BUILT-INS |
|
import os |
|
|
|
# VENDOR |
|
import aiohttp |
|
from aiohttp import web |
|
import aiofiles |
|
|
|
dir = os.path.dirname(__file__) |
|
app = web.Application() |
|
|
|
|
|
async def index(request): |
|
if request.method == 'GET': |
|
async with aiofiles.open(os.path.join(dir, 'public', 'index.html')) as conn: |
|
return web.Response(text=await conn.read(), content_type='text/html') |
|
|
|
return web.HTTPMethodNotAllowed |
|
|
|
|
|
async def api(request): |
|
path = request.match_info["path"] |
|
|
|
try: |
|
async with aiohttp.ClientSession() as session: |
|
async with session.get('http://127.0.0.1:8050/%s' % path) as res: |
|
return web.Response(text=await res.text(), content_type="application/json") |
|
except Exception as e: |
|
raise web.HTTPBadRequest(e) |
|
|
|
|
|
app.add_routes([ |
|
web.get("/", index), |
|
web.get("/rest/{path:.+}", api) |
|
]) |
|
|
|
app.router.add_static('/', |
|
path=os.path.join(dir, 'public'), |
|
name='public') |
|
|
|
|
|
if __name__ == "__main__": |
|
web.run_app(app) |