commit 9bf43f27eb246734345d25d869fd1830b19bfd2c Author: Rainy21 Date: Mon Mar 9 20:24:07 2026 -0400 basic_linkshortener diff --git a/README.md b/README.md new file mode 100644 index 0000000..8a454f4 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# URL_shortener diff --git a/__pycache__/main.cpython-313.pyc b/__pycache__/main.cpython-313.pyc new file mode 100644 index 0000000..88829af Binary files /dev/null and b/__pycache__/main.cpython-313.pyc differ diff --git a/main.py b/main.py new file mode 100644 index 0000000..004e1c7 --- /dev/null +++ b/main.py @@ -0,0 +1,33 @@ +from fastapi import FastAPI, HTTPException +from fastapi.responses import RedirectResponse +from pydantic import BaseModel +import string +import random + +app = FastAPI() + +# temp storage +url_db = {} + + +class URLRequest(BaseModel): + long_url: str + + +def generate_short_code(length=6): + chars = string.ascii_letters + string.digits + return "".join(random.choice(chars) for _ in range(length)) + + +@app.post("/shorten") +def shorten_url(request: URLRequest): + short_code = generate_short_code() + url_db[short_code] = request.long_url + return {"short_url": f"http://localhost:8000/{short_code}"} + + +@app.get("/{short_code}") +def redirect_url(short_code: str): + if short_code in url_db: + return RedirectResponse(url=url_db[short_code]) + raise HTTPException(status_code=404, detail="URL not found") diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..97dc7cd --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +fastapi +uvicorn