Fehlermeldung behandeln
Oftmals passiert es, das trotz erfolgreicher Authentifizierung mit RWTH SSO die Kurse des Nutzers nicht abgerufen werden können. Zum einen dieser allgemeine Fehler (abgefangen in l2pauth.py:84):
finish_oauth failed while getting moodle courses, data={'IsError': True, 'StatusCode': 1, 'StatusInfo': 'Ungültige Anmeldedaten. Versuchen Sie es noch einmal!', 'Data': None}
Aber auch wenn man garkeine Kurse hat (abgefangen in l2pauth.py:84):
finish_oauth failed while getting moodle courses, data={'StatusCode': 0, 'StatusInfo': 'ok', 'IsError': False, 'Data': []}
Und jetzt neu auch wenn Moodle gewartet wird (abgefangen in l2pauth.py:84):
finish_oauth failed while getting moodle courses, data={'StatusCode': 4503, 'IsError': True, 'StatusInfo': 'Moodle ist in Wartung', 'Data': None}
Aber auch unbestimmtere Fehlermeldungen die nicht abgefangen werden und 500 Fehler werfen:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/flask/app.py", line 1610, in full_dispatch_request
rv = self.preprocess_request()
File "/usr/lib/python3/dist-packages/flask/app.py", line 1831, in preprocess_request
rv = func()
File "./l2pauth.py", line 78, in finish_oauth
data = moodleget('getmyenrolledcourses', token['access_token'])
File "./l2pauth.py", line 17, in moodleget
return r.json()
File "/usr/lib/python3/dist-packages/requests/models.py", line 850, in json
return complexjson.loads(self.text, **kwargs)
File "/usr/lib/python3/dist-packages/simplejson/__init__.py", line 516, in loads
return _default_decoder.decode(s)
File "/usr/lib/python3/dist-packages/simplejson/decoder.py", line 374, in decode
obj, end = self.raw_decode(s)
File "/usr/lib/python3/dist-packages/simplejson/decoder.py", line 404, in raw_decode
return self.scan_once(s, idx=_w(s, idx).end())
simplejson.scanner.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/flask/app.py", line 1612, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/lib/python3/dist-packages/flask/app.py", line 1598, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "./l2pauth.py", line 46, in start_rwthauth
code = oauthget('code', scope='userinfo.rwth')
File "./l2pauth.py", line 21, in oauthget
r = requests.request('POST', OAUTH_BASE+endpoint, data=args)
File "/usr/lib/python3/dist-packages/requests/api.py", line 56, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 488, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 609, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 473, in send
raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', OSError("(104, 'ECONNRESET')",))
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/flask/app.py", line 1612, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/lib/python3/dist-packages/flask/app.py", line 1598, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "./l2pauth.py", line 46, in start_rwthauth
code = oauthget('code', scope='userinfo.rwth')
File "./l2pauth.py", line 21, in oauthget
r = requests.request('POST', OAUTH_BASE+endpoint, data=args)
File "/usr/lib/python3/dist-packages/requests/api.py", line 56, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 488, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 609, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 487, in send
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='oauth.campus.rwth-aachen.de', port=443): Max retries exceeded with url: /oauth2waitress/oauth2.svc/code (Caused by NewConnectionError('<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x7f6a045374e0>: Failed to establish a new connection: [Errno 113] Keine Route zum Zielrechner',))
Es sollte also idealerweise alle Fehler abgefangen werden und der Nutzer darüber informiert werden, dass etwas schief gelaufen ist, und idealerweise bei Verbindungs- oder Wartungsproblemen darüber informiert werden und auf die RWTH Störungswebsite verlinkt werden.