Эх сурвалжийг харах

Implementing new score check API

Kirk Trombley 5 жил өмнө
parent
commit
d637a855fe
3 өөрчлөгдсөн 31 нэмэгдсэн , 1 устгасан
  1. 1 1
      README.md
  2. 2 0
      server/app.py
  3. 28 0
      server/extra_api.py

+ 1 - 1
README.md

@@ -26,7 +26,7 @@ POST /score
             "lng": number
         }
     }
-    Returns 200 and {
+    Returns 400 or 200 and {
         "score": number,
         "distance": number
     }

+ 2 - 0
server/app.py

@@ -12,6 +12,7 @@ from flask_cors import CORS
 
 from db import db
 from game_api import game
+from extra_api import extra
 
 app = Flask(__name__)
 CORS(app)
@@ -20,6 +21,7 @@ app.config["SQLALCHEMY_DATABASE_URI"] = os.environ.get("DATABASE_URI", "sqlite:/
 app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
 
 app.register_blueprint(game, url_prefix="/game")
+app.register_blueprint(extra, url_prefix="/")
 
 db.init_app(app)
 db.create_all(app=app)

+ 28 - 0
server/extra_api.py

@@ -0,0 +1,28 @@
+from flask import Blueprint, abort, request, jsonify
+
+import lib
+
+extra = Blueprint("extra", __name__)
+
+
+@extra.route("score", methods=["POST"])
+def check_score():
+    js = request.get_json()
+    p1 = js.get("point1", None)
+    p2 = js.get("point2", None)
+    if p1 is None or p2 is None:
+        abort(400)
+
+    try:
+        lat1 = float(p1.get("lat", None))
+        lng1 = float(p1.get("lng", None))
+        lat2 = float(p2.get("lat", None))
+        lng2 = float(p2.get("lng", None))
+    except ValueError:
+        abort(400)
+
+    score, distance = lib.score((lat1, lng1), (lat2, lng2))
+    return jsonify({
+        "score": score,
+        "distance": distance,
+    })