mirror of
https://github.com/flibusta-apps/telegram_files_server.git
synced 2025-12-06 12:35:39 +01:00
Add api key checking
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -6,5 +6,6 @@ __pycache__
|
|||||||
|
|
||||||
.env
|
.env
|
||||||
*.session
|
*.session
|
||||||
|
*.session-journal
|
||||||
|
|
||||||
venv
|
venv
|
||||||
|
|||||||
9
fastapi_file_server/app/depends.py
Normal file
9
fastapi_file_server/app/depends.py
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
from fastapi import Security, HTTPException, status
|
||||||
|
|
||||||
|
from core.auth import default_security
|
||||||
|
from core.config import env_config
|
||||||
|
|
||||||
|
|
||||||
|
async def check_token(api_key: str = Security(default_security)):
|
||||||
|
if api_key != env_config.API_KEY:
|
||||||
|
raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail="Wrong api key!")
|
||||||
@@ -1,27 +1,30 @@
|
|||||||
from fastapi import File, UploadFile
|
from fastapi import File, UploadFile, Depends
|
||||||
from starlette import status
|
from starlette import status
|
||||||
from fastapi import APIRouter, HTTPException
|
from fastapi import APIRouter, HTTPException
|
||||||
|
|
||||||
|
from app.models import UploadedFile as UploadedFileDB
|
||||||
from app.serializers import UploadedFile
|
from app.serializers import UploadedFile
|
||||||
from app import models
|
|
||||||
from app.services.file_uploader import FileUploader
|
from app.services.file_uploader import FileUploader
|
||||||
|
from app.depends import check_token
|
||||||
|
|
||||||
|
|
||||||
router = APIRouter(
|
router = APIRouter(
|
||||||
prefix="/api/v1",
|
prefix="/api/v1",
|
||||||
|
dependencies=[Depends(check_token)],
|
||||||
|
tags=["files"]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@router.get("/files", response_model=list[UploadedFile])
|
@router.get("/files", response_model=list[UploadedFile])
|
||||||
async def get_files():
|
async def get_files():
|
||||||
return await models.UploadedFile.objects.all()
|
return await UploadedFileDB.objects.all()
|
||||||
|
|
||||||
|
|
||||||
@router.get("/files/{file_id}", response_model=UploadedFile, responses={
|
@router.get("/files/{file_id}", response_model=UploadedFile, responses={
|
||||||
404: {},
|
404: {},
|
||||||
})
|
})
|
||||||
async def get_file(file_id: int):
|
async def get_file(file_id: int):
|
||||||
uploaded_file = await models.UploadedFile.objects.get_or_none(id=file_id)
|
uploaded_file = await UploadedFileDB.objects.get_or_none(id=file_id)
|
||||||
|
|
||||||
if not uploaded_file:
|
if not uploaded_file:
|
||||||
raise HTTPException(status.HTTP_404_NOT_FOUND)
|
raise HTTPException(status.HTTP_404_NOT_FOUND)
|
||||||
@@ -38,7 +41,7 @@ async def upload_file(file: UploadFile = File({})):
|
|||||||
400: {}
|
400: {}
|
||||||
})
|
})
|
||||||
async def delete_file(file_id: int):
|
async def delete_file(file_id: int):
|
||||||
uploaded_file = await models.UploadedFile.objects.get_or_none(id=file_id)
|
uploaded_file = await UploadedFileDB.objects.get_or_none(id=file_id)
|
||||||
|
|
||||||
if not uploaded_file:
|
if not uploaded_file:
|
||||||
raise HTTPException(status.HTTP_400_BAD_REQUEST)
|
raise HTTPException(status.HTTP_400_BAD_REQUEST)
|
||||||
|
|||||||
5
fastapi_file_server/core/auth.py
Normal file
5
fastapi_file_server/core/auth.py
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
from fastapi.security import APIKeyHeader
|
||||||
|
from fastapi.security.utils import get_authorization_scheme_param
|
||||||
|
|
||||||
|
|
||||||
|
default_security = APIKeyHeader(name="Authorization")
|
||||||
Reference in New Issue
Block a user