aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/server/server.py
diff options
context:
space:
mode:
authorJean-Pierre Appel <jeanpierre.appel01@gmail.com>2023-10-25 02:25:38 -0400
committerJean-Pierre Appel <jeanpierre.appel01@gmail.com>2023-10-25 02:25:38 -0400
commitdbc6d1b1c8714d86a3bf08ad75d24a37fa7ae11b (patch)
tree9041cf13ddda2acaf912ca97f7e2a0c5568c4001 /server/server.py
parentd2390a95f6039c2b2a1de557316e13072481ce24 (diff)
started pattern match to handle different requestsendpoint_change
Diffstat (limited to 'server/server.py')
-rw-r--r--server/server.py38
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')]