From 9bf43f27eb246734345d25d869fd1830b19bfd2c Mon Sep 17 00:00:00 2001 From: Rainy21 Date: Mon, 9 Mar 2026 20:24:07 -0400 Subject: [PATCH] basic_linkshortener --- README.md | 1 + __pycache__/main.cpython-313.pyc | Bin 0 -> 2072 bytes main.py | 33 +++++++++++++++++++++++++++++++ requirements.txt | 2 ++ 4 files changed, 36 insertions(+) create mode 100644 README.md create mode 100644 __pycache__/main.cpython-313.pyc create mode 100644 main.py create mode 100644 requirements.txt 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 0000000000000000000000000000000000000000..88829af7b3917dcc2ae027c8c8eac5feaa616e9d GIT binary patch literal 2072 zcmZuyTW=dh6h5&2b|d z4FQh7&;M*4mjV71oA&Uxhz3Vu4K&cmA}kO}79=Xg#a>#J7kt#`(ek2yL7|FA`xXN< zfO6krkOnj45S(gVMZ1zfLql)~H2(-_N=7+_R>h!Uty>F>z;!|+nXc6SCbx6ef~QDx zuXSa@CnYU}+PuA2dgV14b)AV_RySOiTGuMB ziEJ81s}1~spG~BhNm+tfCC6SZn07vK-pN)fSL zQNB%sc;1^t3@m`tm$2C#`{FX~YfG}N`r#fx!B3>B@ik5#ku_MxwK-B!o7!DFq`qBl zn>vm}iD)Dx?EY`0$w{I~SoPp?S6h^ZHY)mdu-WDu0aae&u*X?p@&ta3D>%)N!w|>H zrlAimAy947;oNInKLl5$_T@KW%^!!$qX1#NBM+1E3Q@@tf={7_opVZD$rc_-D$Yv&X^h6OD znuS+eP=#9W?32;Q^Y>4GKmFbG!~SP|$7+4Yo{av>M4)#Mj}gSBf)KLoJdYYIYgu~H zbX|l7S8`U~avAqscPyLx(d)b^+%Frns3$v)M_x%!XOXO z=Ihy0F_A70UJFPdxOSk|ZWuO6!)t*iQs9j=@!lzdCr!HHgp?#rXmm9bjSqBnpy0aY zsYJp{cfn!q)R|;5nNVdfLMnPIS5Q&UT~j4GCbps7GBxuQZ{{i73P(JA`W9*q;Ku~8 ztMFIs$VP0ey0AGMe>SYvhtI2AjGC<%-9Q(+!R5lNnz zfHD*HslxAp*!>ST0{fr$9DH=~@l^fD>3Yv(Ejal+H2Cnn^`3fYuI8KbK%6_lFX_ zYgOfK1wxUk@=_tB_uJu@fXmCEMCQnL2qgcPLwAPmjc<_tZAnJngOLV^wIPEv&}3~# egxcVp!FvZc$gtqelLwkmoA=a4{_$9zkN*K-V8i_Y literal 0 HcmV?d00001 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