Skip to content
Snippets Groups Projects
Sensors.cs 4.47 KiB
Newer Older
Michal Ondrejička's avatar
Michal Ondrejička committed
using SDK.Communication;
using SDK.Contracts.Communication;
using SDK.Exceptions;
using SDK.Models;
using System;
using System.Collections.Generic;
using System.Linq;
Michal Ondrejička's avatar
Michal Ondrejička committed
using System.Net.Http;
Michal Ondrejička's avatar
Michal Ondrejička committed
using System.Text;
using System.Threading.Tasks;

namespace tDevkit
{
Michal Ondrejička's avatar
Michal Ondrejička committed
    //(7/9)
Michal Ondrejička's avatar
Michal Ondrejička committed
    public partial class DevkitConnectorV3
    {
        public async Task<SensorContract[]> GetSensors()
        {
            string subUrl = Address.Sensors;
            var response = await GetRequest<SensorContract[]>(subUrl);

            return response;
        }
Michal Ondrejička's avatar
Michal Ondrejička committed
        public async Task<SensorContract> GetSensor(int id)
        {
            string subUrl = Address.Sensors + id;
            var response = await GetRequest<SensorContract>(subUrl);

            return response;
        }
Michal Ondrejička's avatar
Michal Ondrejička committed
        public async Task<SensorContract> AddSensor(SensorContract sensorContract)
        {
            string subUrl = Address.Sensors;
            var response = await PostRequest<AddSensorResponseContract>(subUrl, sensorContract);

            if (response.ErrorMessage != null)
                throw new ServerResponseException(ServerResponseException.message + " " + response.ErrorMessage);

            return (SensorContract)response;
        }
        public async Task<PatchResponseContract> UpdateSensor(SensorContract sensorContract)
        {
            if (sensorContract.Id == 0)
            {
                throw new BadRequestException(NotFoundException.message + " Sensor object has no Id.");
            }
            string subUrl = Address.Sensors + sensorContract.Id;
            var response = await PatchRequest(subUrl, sensorContract);

            if (response.ErrorMessage != null)
                throw new ServerResponseException(ServerResponseException.message + " " + response.ErrorMessage);

            return response;
        }
Michal Ondrejička's avatar
Michal Ondrejička committed
        public async Task<HttpResponseMessage> DeleteSensor(int id)
Michal Ondrejička's avatar
Michal Ondrejička committed
        {
Michal Ondrejička's avatar
Michal Ondrejička committed
            string subUrl = Address.Sensors + id;
            var response = await DeleteRequest(subUrl);
Michal Ondrejička's avatar
Michal Ondrejička committed

            return response;
        }
        public async Task<PostResponseContract[]> AddSensorData(SensorContract[] sensors)
        {
            string subUrl = Address.SensorsAddDataBatch;
            var response = await PostRequest<AddSensorDataResponseContract[]>(subUrl, sensors);


            for (int i = 0; i < response.Length; i++)
            {
                if (response[i].SensorData != null)
Michal Ondrejička's avatar
Michal Ondrejička committed
                    for (int j = 0; j < response[i].SensorData.Length; j++)
Michal Ondrejička's avatar
Michal Ondrejička committed
                    {
                        var sensorDataResult = response[i].SensorData[j];
                        if (sensorDataResult.ErrorMessage != null)
                        {
                            throw new ServerResponseException(ServerResponseException.message +
                                " Quantity: " + sensorDataResult.Quantity + " - " + sensorDataResult.ErrorMessage);
                        }
                    }
                if (response[i].ErrorMessage != null)
                    throw new ServerResponseException(ServerResponseException.message + " " + response[i].ErrorMessage);
            }

            return response;
        }
        public async Task<PostResponseContract> AddSensorData(SensorDataContract[] sensorData)
        {
            string subUrl = Address.SensorsAddData;
Michal Ondrejička's avatar
Michal Ondrejička committed
            var response = await PostRequest<SensorDataResponseContract[]>(subUrl, sensorData); //AddSensorDataResponseContract
Michal Ondrejička's avatar
Michal Ondrejička committed
            if (response != null)
                for (int i = 0; i < response.Length; i++)
Michal Ondrejička's avatar
Michal Ondrejička committed
                {
Michal Ondrejička's avatar
Michal Ondrejička committed
                    var sensorDataResult = response[i];
Michal Ondrejička's avatar
Michal Ondrejička committed
                    if (sensorDataResult.ErrorMessage != null)
                    {
                        throw new ServerResponseException(ServerResponseException.message +
                            " Quantity: " + sensorDataResult.Quantity + " - " + sensorDataResult.ErrorMessage);
                    }
                }

Michal Ondrejička's avatar
Michal Ondrejička committed
            return new AddSensorDataResponseContract {
                SensorData = response
            };
        }
        public async Task<SensorAppInfoContract> GetSensorAppInfo()
        {
            string subUrl = Address.SensorsAppInfo;
            var response = await GetRequest<SensorAppInfoContract>(subUrl);
Michal Ondrejička's avatar
Michal Ondrejička committed

            return response;
        }
Michal Ondrejička's avatar
Michal Ondrejička committed
        public async void GetSensorAppFile()
        {
            //string subUrl = Address.SensorsAppFile;
            //var response = await GetRequest<SensorAppInfoContract>(subUrl);

            //return response;
        }