|
from fastapi import FastAPI, File, UploadFile, HTTPException |
|
from firebase_admin import credentials, storage |
|
import firebase_admin |
|
from uuid import uuid4 |
|
from fastapi import APIRouter |
|
from config.firebase_cfg import init_firebase |
|
|
|
init_firebase() |
|
|
|
upload_router = APIRouter() |
|
|
|
@upload_router.post("/upload_pdf") |
|
async def upload_pdf(file: UploadFile = File(...)): |
|
if file.content_type != "application/pdf": |
|
raise HTTPException(status_code=400, detail="must be PDF file") |
|
|
|
file_name = f"{uuid4()}.pdf" |
|
|
|
bucket = storage.bucket() |
|
blob = bucket.blob(file_name) |
|
|
|
blob.upload_from_file(file.file, content_type="application/pdf") |
|
blob.make_public() |
|
|
|
file_url = blob.public_url |
|
return {"file_url": file_url} |
|
|
|
@upload_router.post("/upload_docs") |
|
async def upload_docs(file: UploadFile = File(...)): |
|
if file.content_type != "application/docs": |
|
raise HTTPException(status_code=400, detail="must be DOCS file") |
|
|
|
file_name = f"{uuid4()}.docs" |
|
|
|
bucket = storage.bucket() |
|
blob = bucket.blob(file_name) |
|
|
|
blob.upload_from_file(file.file, content_type="application/docs") |
|
blob.make_public() |
|
|
|
file_url = blob.public_url |
|
return {"file_url": file_url} |
|
|
|
@upload_router.post("/delete_file") |
|
async def delete_file(file_name: str): |
|
try: |
|
bucket = storage.bucket() |
|
blob = bucket.blob(file_name) |
|
|
|
if not blob.exists(): |
|
raise HTTPException(status_code=404, detail="File not found") |
|
|
|
blob.delete() |
|
|
|
return {"message": f"File {file_name} deleted successfully"} |
|
except Exception as e: |
|
raise HTTPException(status_code=500, detail=f"An error occurred: {str(e)}") |
|
|
|
|
|
|
|
|
|
|