correctly return HTTP 201
All checks were successful
Build and Publish / build_and_publish (push) Successful in 30s

This commit is contained in:
Nexus 2024-07-02 01:10:49 +01:00
parent 24206d1e2f
commit 295a805959
Signed by: nex
GPG key ID: 0FA334385D0B689F

View file

@ -8,7 +8,7 @@ import db
import requests
from fastapi import FastAPI, Request, HTTPException, status, Form
from fastapi.staticfiles import StaticFiles
from fastapi.responses import RedirectResponse
from fastapi.responses import RedirectResponse, JSONResponse
from fastapi.templating import Jinja2Templates
from contextlib import asynccontextmanager
from tortoise.contrib.fastapi import RegisterTortoise
@ -94,6 +94,7 @@ async def list_redirects():
@app.post("/api/create", response_model=db.RedirectPydantic)
async def create_redirect(
response: JSONResponse,
destination: str = Form(...),
expires: typing.Optional[datetime.datetime] = Form(None),
max_visits: typing.Optional[int] = Form(None),
@ -108,6 +109,7 @@ async def create_redirect(
existing = await db.Redirect.get_or_none(destination=destination)
if existing is not None:
response.status_code = 200
return await db.RedirectPydantic.from_tortoise_orm(existing)
match slug_type:
@ -135,6 +137,7 @@ async def create_redirect(
while await db.Redirect.get_or_none(slug=slug) is not None:
slug = secrets.token_urlsafe(slug_length // 2)
redirect = await db.Redirect.create(destination=destination, expires=expires, max_visits=max_visits, slug=slug)
response.status_code = 201
return await db.RedirectPydantic.from_tortoise_orm(redirect)