2022-06-13 18:51:22 -04:00

47 lines
1.4 KiB
Python

from fastapi import FastAPI, File, UploadFile, Form, Request
from fastapi.staticfiles import StaticFiles
from starlette.templating import Jinja2Templates
import shutil
import models
description = """
Oki.cx is a API for uploading file to a Server to be shared via HTTP.
## Response Types
- HTML Response
- JSON Response
"""
app = FastAPI(
title="Oki.cx - Fileshare",
description=description,
version="0.1",
terms_of_service="http://oki.cx/fileshare/tos",
contact={
"name": "oki.cx",
"email": "cody@oki.cx",
},
license_info={
"name": "MIT License",
"url": "https://gitlab.oki.cx/mrpvtdagger/oki.cx-fileshare/-/raw/main/LICENSE",
},
)
templates = Jinja2Templates(directory="templates")
app.mount("/static", StaticFiles(directory="static"), name="static")
@app.get("/", include_in_schema=False)
def home(request: Request):
return templates.TemplateResponse("base.html",{"request": request, "is_hidden": "is-hidden"})
@app.post("/upload/{response_type}")
def file(request: Request, response_type: str, file: UploadFile = File(...)):
uploaded_file = models.UploadFile(file, file.filename, file.content_type)
if response_type.lower() == "json":
return uploaded_file
else:
return templates.TemplateResponse("html_response.html",{"request": request, "uploaded_file": uploaded_file, "filename": file.filename})