aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJP Appel <jeanpierre.appel01@gmail.com>2023-10-25 15:36:18 -0400
committerJP Appel <jeanpierre.appel01@gmail.com>2023-10-25 15:36:18 -0400
commitdcb5bacebf5eb516fd012aca7c85708b9dab0073 (patch)
tree93f5bc5b85be2fc463272b231d1d97078d94eceb
parentea95e4099c76efe97f5d3159c659b968488ec762 (diff)
better error serverside error handling
-rw-r--r--server/server.py21
1 files changed, 17 insertions, 4 deletions
diff --git a/server/server.py b/server/server.py
index 71b6f0f..c227434 100644
--- a/server/server.py
+++ b/server/server.py
@@ -73,8 +73,21 @@ def application(env, start_response):
match env['REQUEST_METHOD'], env['PATH_INFO']:
case ('GET', '/toggle/game/new'):
queries = parse_query_params(env['QUERY_STRING'])
- game = create_game(queries['size'])
- response.append(send_game(game))
+
+ try:
+ size = int(queries['size'])
+ game = create_game(size)
+ response.append(send_game(game))
+
+ except KeyError:
+ status = '500 Internal Server Error'
+ error = {'Error': 'missing size parameter'}
+ response.append(json.dumps(error)).encode('utf-8')
+
+ except ValueError:
+ status = '500 Internal Server Error'
+ error = {'Error': 'invalid game size'}
+ response.append(json.dumps(error)).encode('utf-8')
case ('POST', '/toggle/game/play'):
try:
@@ -82,10 +95,10 @@ def application(env, start_response):
except json.JSONDecodeError:
status = '500 Internal Server Error'
- decode_error = {
+ error = {
'Error': 'json parsing error, is your request formatter correctly'
}
- response.append(json.dumps(decode_error).encode('utf-8'))
+ response.append(json.dumps(error).encode('utf-8'))
play_game(game)
response.append(send_game(game))