diff options
| author | Jean-Pierre Appel <jeanpierre.appel01@gmail.com> | 2023-10-25 02:25:38 -0400 |
|---|---|---|
| committer | Jean-Pierre Appel <jeanpierre.appel01@gmail.com> | 2023-10-25 02:25:38 -0400 |
| commit | dbc6d1b1c8714d86a3bf08ad75d24a37fa7ae11b (patch) | |
| tree | 9041cf13ddda2acaf912ca97f7e2a0c5568c4001 | |
| parent | d2390a95f6039c2b2a1de557316e13072481ce24 (diff) | |
started pattern match to handle different requestsendpoint_change
| -rw-r--r-- | server/server.py | 38 |
1 files changed, 31 insertions, 7 deletions
diff --git a/server/server.py b/server/server.py index 3af80f6..05630bb 100644 --- a/server/server.py +++ b/server/server.py @@ -21,6 +21,17 @@ def recieve_game(game_fp) -> dict: return game +def create_game(length: int) -> None: + return { + 'size': length, + 'finished': False, + 'board': [True] * length, + 'turn': 0, + 'version': '0.0.0', + 'human_turn': , + 'winner': '' + } + def send_game(game: dict) -> str: game_json = json.dumps(game) return game_json.encode('utf-8') @@ -47,13 +58,26 @@ def application(env, start_response): headers = [('Content-Type', 'application/json')] start_response('200 OK', headers) - if env['REQUEST_METHOD'] == 'POST': - try: - game = recieve_game(env['wsgi.input']) - except json.JSONDecodeError: - return [json.dumps({'failure': True}).encode('utf-8')] - play_game(game) - return [send_game(game)] + query = env['QUERY_STRING'] + path_info = env['PATH_INFO'] + match env['REQUEST_METHOD'], env['PATH_INFO']: + case ('GET', '/toggle/newgame'): + # TODO: return descriptive status code + game = create_game(query['size']) + return [send_game(game)] + case ('POST', '/toggle/play'): + # TODO: return descriptive status code + try: + game = recieve_game(env['wsgi.input']) + except json.JSONDecodeError: + return [json.dumps({'Error': 'json parsing error, is your request formatted correctly?'}).encode('utf-8')] + play_game(game) + return [send_game(game)] + case ('DELETE', _): + start_response('405 Method Not Allowed', headers) + case _: + start_response('404 Not Found', headers) + return [json.dumps({'not_post': True}).encode('utf-8')] |
