correctly return HTTP 201
All checks were successful
Build and Publish / build_and_publish (push) Successful in 30s
All checks were successful
Build and Publish / build_and_publish (push) Successful in 30s
This commit is contained in:
parent
24206d1e2f
commit
295a805959
1 changed files with 4 additions and 1 deletions
|
@ -8,7 +8,7 @@ import db
|
||||||
import requests
|
import requests
|
||||||
from fastapi import FastAPI, Request, HTTPException, status, Form
|
from fastapi import FastAPI, Request, HTTPException, status, Form
|
||||||
from fastapi.staticfiles import StaticFiles
|
from fastapi.staticfiles import StaticFiles
|
||||||
from fastapi.responses import RedirectResponse
|
from fastapi.responses import RedirectResponse, JSONResponse
|
||||||
from fastapi.templating import Jinja2Templates
|
from fastapi.templating import Jinja2Templates
|
||||||
from contextlib import asynccontextmanager
|
from contextlib import asynccontextmanager
|
||||||
from tortoise.contrib.fastapi import RegisterTortoise
|
from tortoise.contrib.fastapi import RegisterTortoise
|
||||||
|
@ -94,6 +94,7 @@ async def list_redirects():
|
||||||
|
|
||||||
@app.post("/api/create", response_model=db.RedirectPydantic)
|
@app.post("/api/create", response_model=db.RedirectPydantic)
|
||||||
async def create_redirect(
|
async def create_redirect(
|
||||||
|
response: JSONResponse,
|
||||||
destination: str = Form(...),
|
destination: str = Form(...),
|
||||||
expires: typing.Optional[datetime.datetime] = Form(None),
|
expires: typing.Optional[datetime.datetime] = Form(None),
|
||||||
max_visits: typing.Optional[int] = 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)
|
existing = await db.Redirect.get_or_none(destination=destination)
|
||||||
if existing is not None:
|
if existing is not None:
|
||||||
|
response.status_code = 200
|
||||||
return await db.RedirectPydantic.from_tortoise_orm(existing)
|
return await db.RedirectPydantic.from_tortoise_orm(existing)
|
||||||
|
|
||||||
match slug_type:
|
match slug_type:
|
||||||
|
@ -135,6 +137,7 @@ async def create_redirect(
|
||||||
while await db.Redirect.get_or_none(slug=slug) is not None:
|
while await db.Redirect.get_or_none(slug=slug) is not None:
|
||||||
slug = secrets.token_urlsafe(slug_length // 2)
|
slug = secrets.token_urlsafe(slug_length // 2)
|
||||||
redirect = await db.Redirect.create(destination=destination, expires=expires, max_visits=max_visits, slug=slug)
|
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)
|
return await db.RedirectPydantic.from_tortoise_orm(redirect)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue