2020-08-05 19:09:38 +00:00
|
|
|
from flask import Flask
|
|
|
|
|
from flask import request, jsonify
|
|
|
|
|
from flask_mongoengine import MongoEngine
|
|
|
|
|
from model import Bike
|
|
|
|
|
|
|
|
|
|
app = Flask(__name__)
|
|
|
|
|
|
|
|
|
|
db = MongoEngine(app)
|
|
|
|
|
|
|
|
|
|
|
2020-08-18 22:33:12 +00:00
|
|
|
# TODO: at registration give current location
|
2020-08-05 19:09:38 +00:00
|
|
|
@app.route("/register/")
|
|
|
|
|
def register():
|
|
|
|
|
dest_lon = request.args.get('dest_lon', None)
|
2022-07-05 18:49:08 +00:00
|
|
|
dest_lat = request.args.get('dest_lat', None)
|
|
|
|
|
client_id = request.args.get('client_id', None)
|
2020-08-05 19:09:38 +00:00
|
|
|
|
2022-07-05 18:49:08 +00:00
|
|
|
assert dest_lat is not None and dest_lon is not None and client_id is not None
|
2020-08-05 19:09:38 +00:00
|
|
|
|
|
|
|
|
dest = (float(dest_lon), float(dest_lat))
|
|
|
|
|
|
|
|
|
|
bike = Bike(point=(0, 0),
|
2022-07-05 18:49:08 +00:00
|
|
|
destination=dest,
|
|
|
|
|
client_id=client_id)
|
2020-08-05 19:09:38 +00:00
|
|
|
|
|
|
|
|
bike.save()
|
|
|
|
|
|
|
|
|
|
return jsonify(bike_id=str(bike.id))
|
|
|
|
|
|
|
|
|
|
|
2020-08-18 22:33:12 +00:00
|
|
|
# TODO: recieve gps bearing and speed
|
2020-08-05 19:09:38 +00:00
|
|
|
@app.route("/update/<bike_id>/")
|
|
|
|
|
def update(bike_id):
|
|
|
|
|
|
|
|
|
|
bike = Bike.objects.get(id=bike_id)
|
|
|
|
|
|
|
|
|
|
lat = float(request.args.get('lat', None))
|
|
|
|
|
lon = float(request.args.get('lon', None))
|
2020-08-18 22:33:12 +00:00
|
|
|
speed = float(request.args.get('speed', None))
|
|
|
|
|
bearing = float(request.args.get('bearing', None))
|
2022-07-05 18:49:08 +00:00
|
|
|
client_id = request.args.get('client_id', None)
|
2020-08-05 19:09:38 +00:00
|
|
|
|
2022-07-05 18:49:08 +00:00
|
|
|
# TODO: maybe client tunes these?
|
|
|
|
|
# local_altruism = float(request.args.get('local_altruism', 0.1))
|
|
|
|
|
# dest_altruism = float(request.args.get('dest_altruism', 0.2))
|
2021-11-01 20:34:50 +00:00
|
|
|
|
2022-07-05 18:49:08 +00:00
|
|
|
bike.update(lat, lon, speed, bearing, client_id)
|
2020-08-20 00:20:12 +00:00
|
|
|
|
2021-11-01 23:29:14 +00:00
|
|
|
return jsonify(last_update=bike.last_update.isoformat(),
|
2021-11-01 23:25:44 +00:00
|
|
|
**bike.flock_data())
|