Skip to content
Snippets Groups Projects
Commit 2c747d76 authored by Robert Goldmann's avatar Robert Goldmann
Browse files

document post measurement route

parent 5451c581
No related branches found
No related tags found
No related merge requests found
......@@ -136,6 +136,29 @@ paths:
type: array
items:
$ref: '#/components/schemas/Measurement'
post:
summary: Adds a new measurement
operationId: addMeasurement
requestBody:
description: Measurement to add
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/NewDeviceMeasurement'
responses:
'200':
description: success response
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
default:
description: error response
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/measurement/{measurementID}:
get:
summary: Gets a specific measurement
......@@ -231,6 +254,39 @@ components:
format: date-time
example: "2020-09-23 20:58:00"
NewDeviceMeasurement:
type: object
required:
- device
- sensors
properties:
device:
type: string
example: "myDevice"
sensors:
type: array
items:
allOf:
- $ref: '#/components/schemas/NewMeasurement'
- type: object
NewMeasurement:
type: object
required:
- name
- type
- value
properties:
name:
type: string
example: "mySensor"
type:
type: string
example: "temperature"
value:
type: string
example: "20.15"
SuccessResponse:
required:
- success
......
......@@ -12,6 +12,7 @@ from logic.RequestValidator import ValidationError, RequestValidator
class DeviceParameters(Enum):
DEVICE = 'device'
SENSORS = 'sensors'
@staticmethod
......@@ -75,12 +76,32 @@ def construct_blueprint(settings, version):
return jsonify(database.get_all_sensors_for_device(deviceID))
@routes.route('/device/<deviceName>', methods=['POST'])
def postSensorData(deviceName):
@routes.route('/measurements', methods=['GET'])
def get_all_measurements():
database = Database(settings['database']['databasePath'])
return jsonify(database.get_all_measurements())
@routes.route('/measurement/<int:measurementID>', methods=['GET'])
def get_measurement(measurementID):
database = Database(settings['database']['databasePath'])
return jsonify(database.get_measurement(measurementID))
@routes.route('/sensor/<sensorID>/measurements', methods=['GET'])
def get_all_measurements_for_sensor(sensorID):
database = Database(settings['database']['databasePath'])
sensor = database.get_sensor(sensorID)
if not sensor:
return jsonify({'success': False, 'msg': f'No sensor with id "{sensorID}" existing'})
return jsonify(database.get_all_measurements_for_sensor(sensorID))
@routes.route('/measurements', methods=['POST'])
def addMeasurement():
try:
parameters = RequestValidator.validate(request, DeviceParameters.get_values())
database = Database(settings['database']['databasePath'])
deviceName = parameters[DeviceParameters.DEVICE.value]
if not database.get_device_by_name(deviceName):
database.add_device(deviceName)
device = database.get_device_by_name(deviceName)
......@@ -95,7 +116,7 @@ def construct_blueprint(settings, version):
except ValidationError as e:
return e.response, 400
return ""
return jsonify({'success': True})
def __add_sensor_if_not_exists(database: Database, deviceID: int, sensorParams: Dict) -> Dict[str, str]:
sensorName = sensorParams[SensorParameters.NAME.value]
......@@ -107,23 +128,4 @@ def construct_blueprint(settings, version):
database.add_sensor(deviceID, sensorName, sensorType)
return database.get_sensor_by_name_and_device_id(deviceID, sensorName)
@routes.route('/measurements', methods=['GET'])
def get_all_measurements():
database = Database(settings['database']['databasePath'])
return jsonify(database.get_all_measurements())
@routes.route('/measurement/<int:measurementID>', methods=['GET'])
def get_measurement(measurementID):
database = Database(settings['database']['databasePath'])
return jsonify(database.get_measurement(measurementID))
@routes.route('/sensor/<sensorID>/measurements', methods=['GET'])
def get_all_measurements_for_sensor(sensorID):
database = Database(settings['database']['databasePath'])
sensor = database.get_sensor(sensorID)
if not sensor:
return jsonify({'success': False, 'msg': f'No sensor with id "{sensorID}" existing'})
return jsonify(database.get_all_measurements_for_sensor(sensorID))
return routes
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment