unshorten/server/src/main.py

32 lines
731 B
Python
Raw Normal View History

2024-04-13 22:41:22 +00:00
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from typing import Optional
from urllib.parse import urlparse
2024-04-14 00:15:11 +00:00
from unshorten import unshorten_twitter
2024-04-13 22:41:22 +00:00
2024-04-14 00:15:11 +00:00
UNSHORTENERS = {
't.co': unshorten_twitter
}
2024-04-13 22:41:22 +00:00
app = FastAPI(docs_url=None, redoc_url=None)
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
2024-04-13 23:40:20 +00:00
allow_credentials=False,
allow_methods=["GET"],
allow_headers=["*"]
2024-04-13 22:41:22 +00:00
)
@app.get('/')
2024-04-13 23:41:10 +00:00
async def receive_url(url: Optional[str] = None):
2024-04-13 22:41:22 +00:00
if url is None:
return {"error": "no url provided"}
domain = urlparse(url).netloc
2024-04-14 00:15:11 +00:00
if domain not in UNSHORTENERS:
return {"error": f"cannot unshorten {domain}"}
else:
return UNSHORTENERS[domain](url)