From d8968acab83c7a91b01eee4b35828a2b05c8dd6b Mon Sep 17 00:00:00 2001 From: Tom van der Lee Date: Wed, 1 Jul 2026 21:41:38 +0200 Subject: Split each part into its own app --- ttun_server/endpoints.py | 57 +++++------------------------------------------- 1 file changed, 5 insertions(+), 52 deletions(-) (limited to 'ttun_server/endpoints.py') diff --git a/ttun_server/endpoints.py b/ttun_server/endpoints.py index 22dcb6d..51c17aa 100644 --- a/ttun_server/endpoints.py +++ b/ttun_server/endpoints.py @@ -1,54 +1,7 @@ -import logging -from base64 import b64decode, b64encode -from uuid import uuid4 +from fastapi import FastAPI -from starlette.background import BackgroundTask -from starlette.requests import Request -from starlette.responses import Response +base_endpoints = FastAPI() -from ttun_server.proxy_queue import ProxyQueue -from ttun_server.types import HttpRequestData, HttpMessageType, HttpMessage - -logger = logging.getLogger(__name__) - - -async def proxy(request: Request) -> Response: - [subdomain, *_] = request.headers['host'].split('.') - identifier = str(uuid4()) - response_queue = await ProxyQueue.create_for_identifier(identifier) - - try: - request_queue = await ProxyQueue.get_for_identifier(subdomain) - - logger.debug('PROXY %s%s ', subdomain, request.url) - await request_queue.enqueue( - HttpMessage( - type=HttpMessageType.request.value, - identifier=identifier, - payload=HttpRequestData( - method=request.method, - path=str(request.url).replace(str(request.base_url), '/'), - headers=list(request.headers.items()), - body=b64encode(await request.body()).decode() - ) - ) - ) - - _response = await response_queue.dequeue() - payload = _response['payload'] - return Response( - status_code=payload['status'], - headers=dict(payload['headers']), - content=b64decode(payload['body'].encode()), - background=BackgroundTask(response_queue.delete) - ) - except AssertionError: - return Response( - content='Not Found', - status_code=404, - background=BackgroundTask(response_queue.delete) - ) - - -async def health(_: Request) -> Response: - return Response(content='OK', status_code=200) +@base_endpoints.get('/health/') +async def health(): + return 'OK' -- cgit v1.2.3