generated from mwc/lab_weather
66 lines
2.2 KiB
Python
66 lines
2.2 KiB
Python
#!/usr/bin/python
|
|
# coding: utf8
|
|
import os
|
|
import re
|
|
import requests
|
|
|
|
|
|
bing_key = os.environ.get('BING_API_KEY')
|
|
tomtom_key = os.environ.get('TOMTOM_API_KEY')
|
|
here_app_id = os.environ.get('HERE_APP_ID')
|
|
here_app_code = os.environ.get('HERE_APP_CODE')
|
|
geonames_username = os.environ.get('GEONAMES_USERNAME')
|
|
opencage_key = os.environ.get('OPENCAGE_API_KEY')
|
|
mapquest_key = os.environ.get('MAPQUEST_API_KEY')
|
|
baidu_key = os.environ.get('BAIDU_API_KEY')
|
|
baidu_security_key = os.environ.get('BAIDU_SECURITY_KEY')
|
|
gaode_key = os.environ.get('GAODE_API_KEY')
|
|
w3w_key = os.environ.get('W3W_API_KEY')
|
|
mapbox_access_token = os.environ.get('MAPBOX_ACCESS_TOKEN')
|
|
google_key = os.environ.get('GOOGLE_API_KEY')
|
|
google_client = os.environ.get('GOOGLE_CLIENT')
|
|
google_client_secret = os.environ.get('GOOGLE_CLIENT_SECRET')
|
|
mapzen_key = os.environ.get('MAPZEN_API_KEY')
|
|
tamu_key = os.environ.get('TAMU_API_KEY')
|
|
geocodefarm_key = os.environ.get('GEOCODEFARM_API_KEY')
|
|
tgos_key = os.environ.get('TGOS_API_KEY')
|
|
locationiq_key = os.environ.get('LOCATIONIQ_API_KEY')
|
|
|
|
|
|
class CanadapostKeyLazySingleton(object):
|
|
|
|
CANADAPOST_KEY_REGEX = re.compile(r"'(....-....-....-....)';")
|
|
|
|
def __init__(self):
|
|
self._key = None
|
|
|
|
def __call__(self, **kwargs):
|
|
if self._key is None:
|
|
self._key = self.retrieve_key(**kwargs)
|
|
return self._key
|
|
|
|
@classmethod
|
|
def retrieve_key(cls, **kwargs):
|
|
# get key with traditionnal mechanism
|
|
key = kwargs.get('key')
|
|
canadapost_key = os.environ.get('CANADAPOST_API_KEY')
|
|
if key or canadapost_key:
|
|
return key if key else canadapost_key
|
|
|
|
# fallback
|
|
try:
|
|
url = 'http://www.canadapost.ca/cpo/mc/personal/postalcode/fpc.jsf'
|
|
timeout = kwargs.get('timeout', 5.0)
|
|
proxies = kwargs.get('proxies', '')
|
|
r = requests.get(url, timeout=timeout, proxies=proxies)
|
|
match = cls.CANADAPOST_KEY_REGEX.search(r.text)
|
|
if match:
|
|
return match.group(1)
|
|
else:
|
|
raise ValueError('No API Key found')
|
|
except Exception as err:
|
|
raise ValueError('Could not retrieve API Key: %s' % err)
|
|
|
|
|
|
canadapost_key_getter = CanadapostKeyLazySingleton()
|