17 changed files with 2 additions and 104 deletions
@ -1,12 +0,0 @@ |
|||||
from fastapi import Header, HTTPException |
|
||||
from typing_extensions import Annotated |
|
||||
|
|
||||
|
|
||||
async def get_token_header(x_token: Annotated[str, Header()]): |
|
||||
if x_token != "fake-super-secret-token": |
|
||||
raise HTTPException(status_code=400, detail="X-Token header invalid") |
|
||||
|
|
||||
|
|
||||
async def get_query_token(token: str): |
|
||||
if token != "jessica": |
|
||||
raise HTTPException(status_code=400, detail="No Jessica token provided") |
|
||||
@ -1,8 +0,0 @@ |
|||||
from fastapi import APIRouter |
|
||||
|
|
||||
router = APIRouter() |
|
||||
|
|
||||
|
|
||||
@router.post("/") |
|
||||
async def update_admin(): |
|
||||
return {"message": "Admin getting schwifty"} |
|
||||
@ -1,23 +0,0 @@ |
|||||
from fastapi import Depends, FastAPI |
|
||||
|
|
||||
from .dependencies import get_query_token, get_token_header |
|
||||
from .internal import admin |
|
||||
from .routers import items, users |
|
||||
|
|
||||
app = FastAPI(dependencies=[Depends(get_query_token)]) |
|
||||
|
|
||||
|
|
||||
app.include_router(users.router) |
|
||||
app.include_router(items.router) |
|
||||
app.include_router( |
|
||||
admin.router, |
|
||||
prefix="/admin", |
|
||||
tags=["admin"], |
|
||||
dependencies=[Depends(get_token_header)], |
|
||||
responses={418: {"description": "I'm a teapot"}}, |
|
||||
) |
|
||||
|
|
||||
|
|
||||
@app.get("/") |
|
||||
async def root(): |
|
||||
return {"message": "Hello Bigger Applications!"} |
|
||||
@ -1,38 +0,0 @@ |
|||||
from fastapi import APIRouter, Depends, HTTPException |
|
||||
|
|
||||
from ..dependencies import get_token_header |
|
||||
|
|
||||
router = APIRouter( |
|
||||
prefix="/items", |
|
||||
tags=["items"], |
|
||||
dependencies=[Depends(get_token_header)], |
|
||||
responses={404: {"description": "Not found"}}, |
|
||||
) |
|
||||
|
|
||||
|
|
||||
fake_items_db = {"plumbus": {"name": "Plumbus"}, "gun": {"name": "Portal Gun"}} |
|
||||
|
|
||||
|
|
||||
@router.get("/") |
|
||||
async def read_items(): |
|
||||
return fake_items_db |
|
||||
|
|
||||
|
|
||||
@router.get("/{item_id}") |
|
||||
async def read_item(item_id: str): |
|
||||
if item_id not in fake_items_db: |
|
||||
raise HTTPException(status_code=404, detail="Item not found") |
|
||||
return {"name": fake_items_db[item_id]["name"], "item_id": item_id} |
|
||||
|
|
||||
|
|
||||
@router.put( |
|
||||
"/{item_id}", |
|
||||
tags=["custom"], |
|
||||
responses={403: {"description": "Operation forbidden"}}, |
|
||||
) |
|
||||
async def update_item(item_id: str): |
|
||||
if item_id != "plumbus": |
|
||||
raise HTTPException( |
|
||||
status_code=403, detail="You can only update the item: plumbus" |
|
||||
) |
|
||||
return {"item_id": item_id, "name": "The great Plumbus"} |
|
||||
@ -1,18 +0,0 @@ |
|||||
from fastapi import APIRouter |
|
||||
|
|
||||
router = APIRouter() |
|
||||
|
|
||||
|
|
||||
@router.get("/users/", tags=["users"]) |
|
||||
async def read_users(): |
|
||||
return [{"username": "Rick"}, {"username": "Morty"}] |
|
||||
|
|
||||
|
|
||||
@router.get("/users/me", tags=["users"]) |
|
||||
async def read_user_me(): |
|
||||
return {"username": "fakecurrentuser"} |
|
||||
|
|
||||
|
|
||||
@router.get("/users/{username}", tags=["users"]) |
|
||||
async def read_user(username: str): |
|
||||
return {"username": username} |
|
||||
Loading…
Reference in new issue