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
No known key found for this signature in database
GPG Key ID: 88D4EF22F6C14CA7

View File

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