aboutsummaryrefslogtreecommitdiff
path: root/app/util/log.py
diff options
context:
space:
mode:
Diffstat (limited to 'app/util/log.py')
-rw-r--r--app/util/log.py84
1 files changed, 0 insertions, 84 deletions
diff --git a/app/util/log.py b/app/util/log.py
deleted file mode 100644
index 58a56f9..0000000
--- a/app/util/log.py
+++ /dev/null
@@ -1,84 +0,0 @@
-import requests
-import datetime
-from ua_parser import user_agent_parser
-
-from database import SessionLocal
-import config
-from models import Link, Log
-
-"""
-Create a new log whenever a link is visited
-"""
-
-
-def ip_to_location(ip):
- if not config.IP_TO_LOCATION:
- return "-, -", "-"
-
- url = f"https://api.ip2location.io/?key={config.API_KEY}&ip={ip}"
- response = requests.get(url)
- data = response.json()
-
- if response.status_code != 200:
- config.LOG.error(
- "Error with IP2Location API. Perhaps the API is down."
- )
- return "-, -", "-"
-
- if "error" in data:
- config.LOG.error(
- "Error with IP2Location API. Likely wrong API key or insufficient"
- " funds."
- )
- return "-, -", "-"
-
- location = ""
- # Sometimes a certain name may not be present, so always check
- if "city_name" in data:
- location += data["city_name"]
-
- if "region_name" in data:
- location += f', {data["region_name"]}'
-
- if "country_name" in data:
- location += f', {data["country_name"]}'
-
- isp = data["as"]
- return location, isp
-
-
-def log(link, ip, user_agent):
- db = SessionLocal()
-
- # Get the redirect link and owner of the link
- redirect_link, owner = (
- db.query(Link.redirect_link, Link.owner)
- .filter(Link.link == link)
- .first()
- )
-
- # Get the location and ISP of the user
- location, isp = ip_to_location(ip)
-
- ua_string = user_agent_parser.Parse(user_agent)
- browser = ua_string["user_agent"]["family"]
- os = f'{ua_string["os"]["family"]} {ua_string["os"]["major"]}'
-
- # Create the log and commit it to the database
- new_log = Log(
- owner=owner,
- link=link,
- timestamp=datetime.datetime.utcnow(),
- ip=ip,
- location=location,
- browser=browser,
- os=os,
- user_agent=user_agent,
- isp=isp,
- )
- db.add(new_log)
- db.commit()
- db.close()
-
- # Return the redirect link in order to properly redirect the user
- return redirect_link