diff --git a/server/requirements.txt b/server/requirements.txt
index 8e0578a..4bf6b8c 100644
--- a/server/requirements.txt
+++ b/server/requirements.txt
@@ -1,2 +1,3 @@
fastapi
-uvicorn[standard]
\ No newline at end of file
+uvicorn[standard]
+requests
\ No newline at end of file
diff --git a/server/src/main.py b/server/src/main.py
index 62a3674..91792ba 100644
--- a/server/src/main.py
+++ b/server/src/main.py
@@ -1,3 +1,5 @@
+import re
+import requests
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from typing import Optional
@@ -18,6 +20,21 @@ app.add_middleware(
)
+def unshorten_url(url: str):
+ pattern = re.compile(r"
(.*?)<\/title>")
+
+ response = requests.get(
+ url=url,
+ headers={"User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:124.0) Gecko/20100101 Firefox/124.0"}
+ )
+
+ match = pattern.search(response.text)
+ if match:
+ return match.group(1)
+ else:
+ return None
+
+
@app.get('/')
async def receive_url(url: Optional[str] = None):
if url is None:
@@ -25,7 +42,9 @@ async def receive_url(url: Optional[str] = None):
domain = urlparse(url).netloc
- if domain in SHORTEN_DOMAINS:
- return {"result": "shortened url"}
- else:
+ if domain not in SHORTEN_DOMAINS:
return {"error": f"cannot shorten {url}"}
+
+ unshortened = unshorten_url(url)
+
+ return {"result": unshortened}