Skip to content

Commit 58d885b

Browse files
committed
Fixed some minor issues around logging
1 parent cf217a6 commit 58d885b

File tree

2 files changed

+32
-25
lines changed

2 files changed

+32
-25
lines changed

main.py

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import hashlib
66
import json
77
import logging
8+
import google.cloud.logging
89
import random
910
import requests
1011
import urllib.parse
@@ -21,12 +22,14 @@
2122
app = Flask(__name__)
2223
app.wsgi_app = wrap_wsgi_app(app.wsgi_app)
2324
dbclient = ndb.Client()
24-
25+
logging.basicConfig(level=logging.INFO)
26+
client = google.cloud.logging.Client()
27+
client.setup_logging()
2528

2629
def find_provider_and_service(id):
2730
providers = [n for n in settings.SERVICES if n['id'] == id]
2831
if len(providers) != 1:
29-
raise Exception('No such provider: ' + id)
32+
raise Exception(f'No such provider: {id}')
3033

3134
provider = providers[0]
3235
return provider, settings.LOOKUP[provider['type']]
@@ -249,7 +252,7 @@ def login():
249252
data = urllib.parse.urlencode(request_params)
250253

251254
if settings.TESTING:
252-
logging.info('REQ RAW:' + data)
255+
logging.info(f'REQ RAW: {data}')
253256

254257
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
255258

@@ -263,8 +266,9 @@ def login():
263266
response.raise_for_status()
264267
content = response.content
265268
except requests.HTTPError as err:
266-
logging.info('ERR-CODE: ' + str(err.response.status_code))
267-
logging.info('ERR-BODY: ' + err.response.text)
269+
logging.error(f'PROVIDER: {service['id']}, {url}')
270+
logging.error(f'ERR-CODE: {err.response.status_code}')
271+
logging.error(f'ERR-BODY: {err.response.text}')
268272
raise err
269273

270274
if settings.TESTING:
@@ -300,7 +304,7 @@ def login():
300304
if 'deauthlink' in provider:
301305
template_values = {
302306
'service': display,
303-
'authid': 'Server error, you must de-authorize ' + settings.APP_NAME,
307+
'authid': f'Server error, you must de-authorize {settings.APP_NAME}',
304308
'showdeauthlink': 'true',
305309
'deauthlink': provider['deauthlink'],
306310
'fetchtoken': ''
@@ -362,7 +366,7 @@ def login():
362366
return render_template('logged-in.html', **template_values)
363367

364368
except:
365-
logging.exception('handler error for ' + display)
369+
logging.exception(f'handler error for {display}')
366370
error_code = request.args.get('error', None)
367371
error_desc = request.args.get('error_description', None)
368372
if error_code is not None:
@@ -463,7 +467,7 @@ def cli_token_login():
463467
return render_template('logged-in.html', **template_values)
464468

465469
except:
466-
logging.exception('handler error for ' + display)
470+
logging.exception(f'handler error for {display}')
467471

468472
template_values = {
469473
'service': display,
@@ -490,17 +494,17 @@ def fetch():
490494

491495
with dbclient.context():
492496
entry = ndb.Key(dbmodel.FetchToken, fetchtoken).get()
493-
if entry is None:
494-
return jsonify({'error': 'No such entry'})
497+
if entry is None:
498+
return jsonify({'error': 'No such entry'})
495499

496-
if entry.expires < datetime.datetime.now(datetime.timezone.utc):
497-
return jsonify({'error': 'No such entry'})
500+
if entry.expires < datetime.datetime.now(datetime.timezone.utc):
501+
return jsonify({'error': 'No such entry'})
498502

499-
if entry.authid is None or entry.authid == '':
500-
return jsonify({'wait': 'Not ready'})
503+
if entry.authid is None or entry.authid == '':
504+
return jsonify({'wait': 'Not ready'})
501505

502-
entry.fetched = True
503-
entry.put()
506+
entry.fetched = True
507+
entry.put()
504508

505509
return jsonify({'authid': entry.authid})
506510
except:
@@ -672,8 +676,9 @@ def refresh_handler():
672676
req.raise_for_status()
673677
content = req.content
674678
except requests.HTTPError as err:
675-
logging.info('ERR-CODE: ' + str(err.response.status_code))
676-
logging.info('ERR-BODY: ' + err.response.text)
679+
logging.error(f'PROVIDER: {service['id']}, {url}')
680+
logging.error(f'ERR-CODE: {err.response.status_code}')
681+
logging.error(f'ERR-BODY: {err.response.text}')
677682
raise err
678683

679684
# Store the old refresh_token as some servers do not send it again
@@ -706,7 +711,7 @@ def refresh_handler():
706711
'v2_authid': 'v2:' + entry.service + ':' + rt
707712
})
708713
except:
709-
logging.exception('handler error for ' + servicetype)
714+
logging.exception(f'handler error for {servicetype}')
710715
response = jsonify({'error': 'Server error'})
711716
response.headers['X-Reason'] = 'Server error'
712717
response.status_code = 500
@@ -735,7 +740,7 @@ def refresh_handle_v2(inputfragment):
735740
if refresh_token is None or len(refresh_token.strip()) == 0:
736741
raise Exception('No token provided')
737742

738-
tokenhash = hashlib.md5(refresh_token).hexdigest()
743+
tokenhash = hashlib.sha256(refresh_token.encode('utf-8')).hexdigest()
739744

740745
if settings.RATE_LIMIT > 0:
741746

@@ -786,9 +791,10 @@ def refresh_handle_v2(inputfragment):
786791
req = requests.post(url, data=data, timeout=20)
787792
req.raise_for_status()
788793
content = req.content
789-
except requests.HTTPError as err:
790-
logging.info('ERR-CODE: ' + str(err.response.status_code))
791-
logging.info('ERR-BODY: ' + err.response.text)
794+
except requests.HTTPError as err:
795+
logging.error(f'PROVIDER: {service['id']}, {url}')
796+
logging.error(f'ERR-CODE: {err.response.status_code}')
797+
logging.error(f'ERR-BODY: {err.response.text}')
792798
raise err
793799

794800
resp = json.loads(content)
@@ -812,7 +818,7 @@ def refresh_handle_v2(inputfragment):
812818
})
813819

814820
except:
815-
logging.exception('handler error for ' + servicetype)
821+
logging.exception(f'handler error for {servicetype}')
816822
response = jsonify({'error': 'Server error'})
817823
response.headers['X-Reason'] = 'Server error'
818824
response.status_code = 500

requirements.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@ appengine-python-standard==1.1.9
33
pycryptodome==3.21.0
44
Jinja2==3.1.5
55
Flask==3.1.0
6-
google-cloud-ndb==2.3.2
6+
google-cloud-ndb==2.3.2
7+
google-cloud-logging==3.11.3

0 commit comments

Comments
 (0)