Refactor: Clean up API documentation tags

This commit is contained in:
ReturnFI
2025-10-20 18:46:53 +00:00
parent 5b7a1cf5c3
commit a9309920c4
3 changed files with 29 additions and 39 deletions

View File

@ -5,18 +5,17 @@ import asyncio
from fastapi import FastAPI from fastapi import FastAPI
from starlette.staticfiles import StaticFiles from starlette.staticfiles import StaticFiles
from config import CONFIGS # Loads the configuration from .env from config import CONFIGS
from middleware import AuthMiddleware # Defines authentication middleware from middleware import AuthMiddleware
from middleware import AfterRequestMiddleware # Defines after request middleware from middleware import AfterRequestMiddleware
from dependency import get_session_manager # Defines dependencies across routers from dependency import get_session_manager
from openapi import setup_openapi_schema # Adds authorization header to openapi schema from openapi import setup_openapi_schema
from exception_handler import setup_exception_handler # Defines exception handlers from exception_handler import setup_exception_handler
# Append directory of cli_api.py to be able to import it
HYSTERIA_CORE_DIR = '/etc/hysteria/core/' HYSTERIA_CORE_DIR = '/etc/hysteria/core/'
sys.path.append(HYSTERIA_CORE_DIR) sys.path.append(HYSTERIA_CORE_DIR)
import routers # noqa: This import should be after the sys.path modification, because it imports cli_api import routers
def create_app() -> FastAPI: def create_app() -> FastAPI:
@ -24,11 +23,10 @@ def create_app() -> FastAPI:
Create FastAPI app. Create FastAPI app.
''' '''
# Set up FastAPI
app = FastAPI( app = FastAPI(
title='Hysteria Webpanel', title='Blitz API',
description='Webpanel for Hysteria', description='Webpanel for Hysteria2',
version='0.1.0', version='0.2.0',
contact={ contact={
'github': 'https://github.com/ReturnFI/Blitz' 'github': 'https://github.com/ReturnFI/Blitz'
}, },
@ -36,26 +34,19 @@ def create_app() -> FastAPI:
root_path=f'/{CONFIGS.ROOT_PATH}', root_path=f'/{CONFIGS.ROOT_PATH}',
) )
# Set up static files
app.mount('/assets', StaticFiles(directory='assets'), name='assets') app.mount('/assets', StaticFiles(directory='assets'), name='assets')
# Set up exception handlers
setup_exception_handler(app) setup_exception_handler(app)
# Set up authentication middleware
app.add_middleware(AuthMiddleware, session_manager=get_session_manager(), api_token=CONFIGS.API_TOKEN) app.add_middleware(AuthMiddleware, session_manager=get_session_manager(), api_token=CONFIGS.API_TOKEN)
# Set up after request middleware
app.add_middleware(AfterRequestMiddleware) app.add_middleware(AfterRequestMiddleware)
# Set up Routers app.include_router(routers.basic.router, prefix='', tags=['Web - Basic'])
app.include_router(routers.basic.router, prefix='', tags=['Basic Routes[Web]']) # Add basic router app.include_router(routers.login.router, prefix='', tags=['Web - Authentication'])
app.include_router(routers.login.router, prefix='', tags=['Authentication[Web]']) # Add authentication router app.include_router(routers.settings.router, prefix='/settings', tags=['Web - Settings'])
app.include_router(routers.settings.router, prefix='/settings', tags=['Settings[Web]']) # Add settings router app.include_router(routers.user.router, prefix='/users', tags=['Web - User Management'])
app.include_router(routers.user.router, prefix='/users', tags=['User Management[Web]']) # Add user router app.include_router(routers.api.v1.api_v1_router, prefix='/api/v1')
app.include_router(routers.api.v1.api_v1_router, prefix='/api/v1', tags=['API Version 1']) # Add API version 1 router # type: ignore
# Document that the API requires an API key
setup_openapi_schema(app) setup_openapi_schema(app)
return app return app
@ -66,7 +57,7 @@ app: FastAPI = create_app()
if __name__ == '__main__': if __name__ == '__main__':
from hypercorn.config import Config from hypercorn.config import Config
from hypercorn.asyncio import serve # type: ignore from hypercorn.asyncio import serve
from hypercorn.middleware import ProxyFixMiddleware from hypercorn.middleware import ProxyFixMiddleware
config = Config() config = Config()
@ -75,6 +66,5 @@ if __name__ == '__main__':
config.accesslog = '-' config.accesslog = '-'
config.errorlog = '-' config.errorlog = '-'
# Fix proxy headers app = ProxyFixMiddleware(app, 'legacy')
app = ProxyFixMiddleware(app, 'legacy') # type: ignore asyncio.run(serve(app, config))
asyncio.run(serve(app, config)) # type: ignore

View File

@ -5,6 +5,6 @@ from . import config
api_v1_router = APIRouter() api_v1_router = APIRouter()
api_v1_router.include_router(user.router, prefix='/users') api_v1_router.include_router(user.router, prefix='/users', tags=['API - Users'])
api_v1_router.include_router(server.router, prefix='/server') api_v1_router.include_router(server.router, prefix='/server', tags=['API - Server'])
api_v1_router.include_router(config.router, prefix='/config') api_v1_router.include_router(config.router, prefix='/config')

View File

@ -11,11 +11,11 @@ from . import extra_config
router = APIRouter() router = APIRouter()
router.include_router(hysteria.router, prefix='/hysteria') router.include_router(hysteria.router, prefix='/hysteria', tags=['API - Config - Hysteria'])
router.include_router(warp.router, prefix='/warp') router.include_router(warp.router, prefix='/warp', tags=['API - Config - Warp'])
router.include_router(telegram.router, prefix='/telegram') router.include_router(telegram.router, prefix='/telegram', tags=['API - Config - Telegram'])
router.include_router(normalsub.router, prefix='/normalsub') router.include_router(normalsub.router, prefix='/normalsub', tags=['API - Config - Normalsub'])
router.include_router(singbox.router, prefix='/singbox') router.include_router(singbox.router, prefix='/singbox', tags=['API - Config - Singbox'])
router.include_router(ip.router, prefix='/ip') router.include_router(ip.router, prefix='/ip', tags=['API - Config - IP'])
router.include_router(extra_config.router, prefix='/extra-config', tags=['Config - Extra Config']) router.include_router(extra_config.router, prefix='/extra-config', tags=['API - Config - Extra Config'])
router.include_router(misc.router) router.include_router(misc.router, tags=['API - Config - Misc'])