Browse Source

Adding a timeout option to the make guess endpoint

Kirk Trombley 5 years ago
parent
commit
7d3b15e282
3 changed files with 14 additions and 1 deletions
  1. 2 0
      README.md
  2. 3 0
      server/db.py
  3. 9 1
      server/game_api.py

+ 2 - 0
README.md

@@ -65,6 +65,8 @@ POST /game/{ID}/guesses/{round}
     Accepts {
         "lat": number,
         "lng": number
+    } OR {
+        "timeout": boolean
     }
     Returns 400 vs 201 and {
         "score": number,

+ 3 - 0
server/db.py

@@ -102,6 +102,9 @@ class GuessSet(db.Model):
             (self.score_4 or 0) + 
             (self.score_5 or 0))
 
+    def set_timed_out(self, round_num):
+        self.set_guess(round_num, -200, -200, 0)
+
     def set_guess(self, round_num, lat, lng, score):
         self.coord_set.set_coord(round_num, lat, lng)
         # TODO this logic is a little gross

+ 9 - 1
server/game_api.py

@@ -129,12 +129,20 @@ def make_guess(game_id, round_num):
     if round_num != gs.get_current_round():
         abort(409)
 
+    timed_out = request.json.get("timeout", False)
+    if timed_out:
+        gs.set_timed_out(round_num)
+        db.session.commit()
+        return jsonify({
+            "score": 0,
+            "totalScore": gs.get_total_score(),
+        }), 201
+
     lat = request.json.get("lat", None)
     lng = request.json.get("lng", None)
     if not isinstance(lat, float) or not isinstance(lng, float):
         abort(400)
     
-    
     target = require_game(game_id).coord_set.get_coord(round_num)
     guess_score = score(target, (lat, lng))
     gs.set_guess(round_num, lat, lng, guess_score)