Merge pull request #4 from LEG-Industries/data-save-get

Endpoints for saving and getting the sensor readings
This commit is contained in:
Benjamin Ramhorst 2022-02-07 13:59:52 +00:00 committed by GitHub
commit c5007b774f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 48 additions and 0 deletions

View file

@ -0,0 +1,45 @@
import time
import json
from flask import Response, Blueprint, request
from firebase_admin import firestore
data = Blueprint('data', __name__)
@data.route('/readings/save', methods=['POST'])
def uploadReadings():
deviceId = request.headers.get('deviceid')
if deviceId is None:
return Response("{'error':'Device not specified'}", status=400, mimetype='application/json')
body = request.json
if body is None:
return Response("{'error':'Invalid request - please provide a body'}", status=400, mimetype='application/json')
body['timestamp'] = time.time()
doc = firestore.client().collection(u'readings').document(deviceId).get()
if doc.exists:
list = doc.to_dict()['data']
list.append(body)
data = list
else:
data = [body]
upload = {'data': data}
firestore.client().collection(u'readings').document(deviceId).set(upload)
return Response("{'success':'Data saved'}", status=200, mimetype='application/json')
@data.route('/readings/getall', methods=['GET'])
def getAllReadings():
deviceId = request.headers.get('deviceid')
if deviceId is None:
return Response("{'error':'Device not specified'}", status=400, mimetype='application/json')
doc = firestore.client().collection(u'readings').document(deviceId).get()
if doc.exists:
data = doc.to_dict()['data']
else:
data = []
results = {'data': data}
return Response(json.dumps(results), status=200, mimetype='application/json')

View file

@ -2,10 +2,13 @@ from config.variables import MAIL_SERVER, MAIL_PORT, MAIL_USERNAME, MAIL_PASSWOR
from flask import Flask
from firebase_admin import credentials, initialize_app
from api.authentication import authentication
from api.data import data
# Initialize Flask app and register all the endpoints
app = Flask(__name__)
app.register_blueprint(authentication)
app.register_blueprint(data)
# Initialize Mail instance
app.config['MAIL_SERVER'] = MAIL_SERVER