aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/server
diff options
context:
space:
mode:
authorJP Appel <jeanpierre.appel01@gmail.com>2023-10-25 14:14:11 -0400
committerJP Appel <jeanpierre.appel01@gmail.com>2023-10-25 14:14:11 -0400
commitf6550e60d256c7c19c8c430ed7294e4d8ea1d4d1 (patch)
tree338438a8ccc8f70b44131d5b39e03d20cb249378 /server
parentdbc6d1b1c8714d86a3bf08ad75d24a37fa7ae11b (diff)
changed endpoint, parser for query params
Diffstat (limited to 'server')
-rw-r--r--server/server.py50
1 files changed, 35 insertions, 15 deletions
diff --git a/server/server.py b/server/server.py
index 05630bb..71b6f0f 100644
--- a/server/server.py
+++ b/server/server.py
@@ -28,7 +28,7 @@ def create_game(length: int) -> None:
'board': [True] * length,
'turn': 0,
'version': '0.0.0',
- 'human_turn': ,
+ 'human_turn': False,
'winner': ''
}
@@ -54,32 +54,52 @@ def play_game(game: dict) -> None:
game['winner'] = 'Computer'
+def parse_query_params(query_string) -> dict:
+ queries = {}
+ for entry in query_string.split('&'):
+ key, val = entry.split('=', 2)
+ queries[key] = val
+
+ return queries
+
+
def application(env, start_response):
headers = [('Content-Type', 'application/json')]
- start_response('200 OK', headers)
- query = env['QUERY_STRING']
path_info = env['PATH_INFO']
+ status = '200 OK'
+ response = []
+
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
+ case ('GET', '/toggle/game/new'):
+ queries = parse_query_params(env['QUERY_STRING'])
+ game = create_game(queries['size'])
+ response.append(send_game(game))
+
+ case ('POST', '/toggle/game/play'):
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')]
+ status = '500 Internal Server Error'
+ decode_error = {
+ 'Error': 'json parsing error, is your request formatter correctly'
+ }
+ response.append(json.dumps(decode_error).encode('utf-8'))
+
play_game(game)
- return [send_game(game)]
+ response.append(send_game(game))
+
case ('DELETE', _):
- start_response('405 Method Not Allowed', headers)
- case _:
- start_response('404 Not Found', headers)
+ status = '405 Method Not Allowed'
+ headers.remove(('Content-Type', 'application/json'))
+ case _:
+ status = '404 Not Found'
+ headers.remove(('Content-Type', 'application/json'))
- return [json.dumps({'not_post': True}).encode('utf-8')]
+ start_response(status, headers)
+ return response
def main():