jobs/eam-integrations/scripts/api/util/classes/mozgeo.py (30 lines of code) (raw):
import ssl
import logging
import geopy.geocoders
from geopy.geocoders import GoogleV3
class MozGeo(object):
def __init__(self, config):
self.config = config.MozGeo
geopy.geocoders.options.default_proxies = config.proxies
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
geopy.geocoders.options.default_ssl_context = ctx
self.geolocator = GoogleV3(api_key=self.config["google_api_key"])
def postal_to_coords(self, location):
logging.debug("postal_to_coords called with %s" % location)
res = self.geolocator.geocode(components=location)
if res is None:
logging.error("No geolocation found for location %s" % location)
return (None, None)
else:
logging.debug(res.raw)
return (
res.raw["geometry"]["location"]["lat"],
res.raw["geometry"]["location"]["lng"],
)
def coords_to_timezone(self, coords):
logging.debug("coords_to_timezone called with %s" % str(coords))
res = self.geolocator.reverse_timezone(coords)
logging.debug(res)
# print(res)
return res