63 lines
1.7 KiB
Python
63 lines
1.7 KiB
Python
from bson import json_util
|
|
from flask import Flask, request
|
|
from flask_pymongo import PyMongo
|
|
|
|
app = Flask(__name__)
|
|
app.config["MONGO_URI"] = "mongodb://mongo:27017/entities"
|
|
mongo = PyMongo(app)
|
|
|
|
|
|
@app.route('/api/v1/resources/cars', methods=['GET'])
|
|
def get_cars():
|
|
query_parameters = request.args
|
|
vin = query_parameters.get('vin')
|
|
|
|
if vin is not None:
|
|
cars = [car for car in mongo.db.cars.find({'vin': vin})]
|
|
else:
|
|
cars = [car for car in mongo.db.cars.find({})]
|
|
|
|
return json_util.dumps({'cursor': cars})
|
|
|
|
|
|
@app.route('/api/v1/resources/traffic_lights', methods=['GET'])
|
|
def get_traffic_lights():
|
|
query_parameters = request.args
|
|
tl_id = query_parameters.get('id')
|
|
|
|
if tl_id is not None:
|
|
traffic_lights = [traffic_light for traffic_light in
|
|
mongo.db.trafficLights.find({'id': tl_id})]
|
|
else:
|
|
traffic_lights = [traffic_light for traffic_light in mongo.db.trafficLights.find({})]
|
|
|
|
return json_util.dumps({'cursor': traffic_lights})
|
|
|
|
|
|
@app.route('/api/v1/resources/traffic_lights_geo', methods=['GET'])
|
|
def get_traffic_lights_geo():
|
|
query_parameters = request.args
|
|
|
|
lat = float(query_parameters.get('lat'))
|
|
lon = float(query_parameters.get('lon'))
|
|
distance = float(query_parameters.get('distance'))
|
|
|
|
traffic_lights = [
|
|
traffic_light for traffic_light in
|
|
mongo.db.trafficLights.find({'location': {
|
|
'$near': {
|
|
'$geometry': {
|
|
'type': "Point",
|
|
'coordinates': [lon, lat]
|
|
},
|
|
'$maxDistance': distance
|
|
}
|
|
}})
|
|
]
|
|
|
|
return json_util.dumps({'cursor': traffic_lights})
|
|
|
|
|
|
if __name__ == '__main__':
|
|
app.run(host='0.0.0.0')
|