Remove cache operation from ip2location; shortcut where possible

This comes with something of a refactor.

- IP2LOCATION_KEY is now checked with `if not` to reduce indention
- ConnectionError is increased to RequestException to catch all requests
  errors
  - On that note, now raising for status too
This commit is contained in:
Gregory Danielson
2020-11-01 16:35:17 -06:00
parent 628a860d6d
commit c7d3b32d53

View File

@ -116,30 +116,23 @@ def ipcache(ip_addr):
return None, None return None, None
def ip2location(ip_addr): def ip2location(ip_addr):
"Convert IP address `ip_addr` to a location name" """Convert IP address `ip_addr` to a location name"""
# if IP2LOCATION_KEY is not set, do not query,
location = ipcache(ip_addr)
if location:
return location
# if IP2LOCATION_KEY is not set, do not the query,
# because the query wont be processed anyway # because the query wont be processed anyway
if IP2LOCATION_KEY: if not IP2LOCATION_KEY:
return None, None, None
try: try:
location = requests\ r = requests.get(
.get('http://api.ip2location.com/?ip=%s&key=%s&package=WS3' \ 'http://api.ip2location.com/?ip=%s&key=%s&package=WS3'
% (ip_addr, IP2LOCATION_KEY)).text % (ip_addr, IP2LOCATION_KEY))
except requests.exceptions.ConnectionError: r.raise_for_status()
pass location = r.text
if location and ';' in location: if location and ';' in location:
ipcachewrite(ip_addr, location)
_, country, region, city = location.split(';') _, country, region, city = location.split(';')
location = city, region, country location = city, region, country
else: except requests.exceptions.RequestException:
location = location, None, None return None, None, None
return city, region, country
return location
def ipinfo(ip_addr): def ipinfo(ip_addr):