Skip to content

Instantly share code, notes, and snippets.

@kikyous
Created October 29, 2019 07:52
Show Gist options
  • Save kikyous/e3a0540651c84c54d59976fbb014ffad to your computer and use it in GitHub Desktop.
Save kikyous/e3a0540651c84c54d59976fbb014ffad to your computer and use it in GitHub Desktop.
@cache.memoize(3600)
def _auth_access_token(org_code=None):
api_key = current_app.config['DASHBOARD_TC_API_KEY']
res = post_dashboard(
url='/v1/auth/access_token',
params={"orgCode": org_code, "appKey": api_key},
need_token=False
)
return res.json()
def _get_access_token(org_code=None, re_auth=False):
if not org_code:
org_code = current_user_detail.org.code
if re_auth:
cache.delete_memoized(_auth_access_token, org_code)
return _auth_access_token(org_code=org_code)['access_token']
def post_dashboard(url='/v1/analytics/ranking', params=None, headers=None, org_code=None, need_token=True):
dashboard_api_host = current_app.config['DASHBOARD_API_HOST']
_headers = {'Content-Type': 'application/json', 'Accept': 'application/json'}
if need_token:
token = _get_access_token(org_code)
_headers.update({'X-Authorization': "Bearer " + token})
if headers:
_headers.update(headers)
url = "{}/api{}".format(dashboard_api_host, url)
res = requests.post(url, json=params, headers=_headers)
if res.status_code == 401:
error_type = res.json()['Error']['type']
if error_type in ['ExpiredSignatureError', 'NoAuthorizationError']:
_get_access_token(org_code, re_auth=True)
return post_dashboard(url, params, headers, need_token)
return res
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment