42 lines
884 B
Python
42 lines
884 B
Python
import secrets
|
|
from fastapi import FastAPI, HTTPException, Security
|
|
from fastapi.openapi.models import APIKey
|
|
|
|
####################
|
|
# - Utilities
|
|
####################
|
|
async def g_api_key(
|
|
api_key_header: APIKey = Security(api_key_header),
|
|
) -> APIKey:
|
|
if api_key_header and secrets.compare_digest(
|
|
str(api_key_header),
|
|
settings.api_key.get_secret_value(),
|
|
):
|
|
return api_key_header
|
|
|
|
raise HTTPException(
|
|
status_code=HTTP_403_FORBIDDEN,
|
|
detail="Wrong API key.",
|
|
)
|
|
|
|
####################
|
|
# - Types
|
|
####################
|
|
class PInstSupCategory(Enum)
|
|
|
|
####################
|
|
# - FastAPI App
|
|
####################
|
|
app = FastAPI(
|
|
prefix="/v1",
|
|
dependencies=[Security(g_api_key)],
|
|
)
|
|
|
|
@app.post("/report/support")
|
|
async def report_support(
|
|
category:
|
|
description: str,
|
|
) -> bool:
|
|
"""Report an instance of granted Python Installation support."""
|
|
return await d_old_app_passes()
|