diff --git a/src/StorageLeaf.py b/src/StorageLeaf.py deleted file mode 100644 index d0b97642f8180607445eee88c080503ef58e12a7..0000000000000000000000000000000000000000 --- a/src/StorageLeaf.py +++ /dev/null @@ -1,33 +0,0 @@ -import os - -from TheCodeLabs_BaseUtils.DefaultLogger import DefaultLogger -from TheCodeLabs_FlaskUtils.FlaskBaseApp import FlaskBaseApp - -from blueprints import Sensors, Measurements -from logic import Constants -from logic.BackupService import BackupService -from logic.DiscoveryService import DiscoveryService - -LOGGER = DefaultLogger().create_logger_if_not_exists(Constants.APP_NAME) - - -class StorageLeaf(FlaskBaseApp): - def __init__(self, appName: str): - super().__init__(appName, os.path.dirname(__file__), LOGGER, serveRobotsTxt=False) - databaseSettings = self._settings['database'] - self._backupService = BackupService(databaseSettings['databasePath'], **databaseSettings['backup']) - - discoverySettings = self._settings['discovery'] - discoverySettings['apiPort'] = self._settings['server']['port'] - self._discoveryService = DiscoveryService(**discoverySettings) - self._discoveryService.start() - - def _register_blueprints(self, app): - app.register_blueprint(Sensors.construct_blueprint(self._settings, self._backupService)) - app.register_blueprint(Measurements.construct_blueprint(self._settings, self._backupService)) - return app - - -if __name__ == '__main__': - website = StorageLeaf(Constants.APP_NAME) - website.start_server() diff --git a/src/blueprints/Measurements.py b/src/blueprints/Measurements.py deleted file mode 100644 index 5102926f2a41f31b0f4ae6c087d118e03fcd69d8..0000000000000000000000000000000000000000 --- a/src/blueprints/Measurements.py +++ /dev/null @@ -1,89 +0,0 @@ -from typing import Dict - -from flask import Blueprint, jsonify, request - -from logic.AuthenticationWrapper import require_api_key -from logic.BackupService import BackupService -from logic.Parameters import DeviceParameters, SensorParameters, MeasurementParameters -from logic.RequestValidator import RequestValidator, ValidationError -from logic.database.Database import Database - - -def construct_blueprint(settings: Dict, backupService: BackupService): - measurements = Blueprint('measurements', __name__) - - @measurements.route('/measurements/minMax', methods=['GET']) - def get_min_and_max_for_sensor_ids(): - if 'sensorIds' not in request.args: - return jsonify({'message': 'Parameter "sensorIds" missing'}), 400 - - if 'startDateTime' not in request.args: - return jsonify({'message': 'Parameter "startDateTime" missing'}), 400 - - if 'endDateTime' not in request.args: - return jsonify({'message': 'Parameter "endDateTime" missing'}), 400 - - sensorIds = request.args.get('sensorIds').split(',') - startDateTime = request.args.get('startDateTime') - endDateTime = request.args.get('endDateTime') - - database = Database(settings['database']['databasePath'], backupService) - - values = [] - for sensorId in sensorIds: - sensorId = int(sensorId) - measurementsForSensor = database.measurementAccess.get_all_measurements_for_sensor(sensorId, - startDateTime, - endDateTime) - for measurement in measurementsForSensor: - values.append(float(measurement['value'])) - - if values: - return jsonify({ - 'min': min(values), - 'max': max(values) - }) - - return jsonify({ - 'min': None, - 'max': None - }) - - @measurements.route('/measurements', methods=['POST']) - @require_api_key(password=settings['api']['key']) - def add_multiple_measurements(): - try: - parameters = RequestValidator.validate(request, DeviceParameters.get_values()) - database = Database(settings['database']['databasePath'], backupService) - - deviceName = parameters[DeviceParameters.DEVICE.value] - if not database.deviceAccess.get_device_by_name(deviceName): - database.deviceAccess.add_device(deviceName) - device = database.deviceAccess.get_device_by_name(deviceName) - - sensors = parameters[DeviceParameters.SENSORS.value] - for sensor in sensors: - sensorParams = RequestValidator.validate_parameters(sensor, - [SensorParameters.NAME.value, - SensorParameters.TYPE.value, - SensorParameters.VALUE.value], - f'sensor "{sensor}"') - sensor = __add_sensor_if_not_exists(database, int(device['id']), sensorParams) - database.measurementAccess.add_measurement(int(sensor['id']), - sensorParams[SensorParameters.VALUE.value]) - except ValidationError as e: - return e.response, 400 - - return jsonify({'success': True}) - - def __add_sensor_if_not_exists(database: Database, deviceID: int, sensorParams: Dict) -> Dict[str, str]: - sensorName = sensorParams[SensorParameters.NAME.value] - sensorType = sensorParams[SensorParameters.TYPE.value] - sensor = database.sensorAccess.get_sensor_by_name_and_device_id(deviceID, sensorName) - if sensor: - return sensor - - database.sensorAccess.add_sensor(deviceID, sensorName, sensorType) - return database.sensorAccess.get_sensor_by_name_and_device_id(deviceID, sensorName) - - return measurements diff --git a/src/blueprints/__init__.py b/src/blueprints/__init__.py deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000