public void SetUp() { _kernel = new StandardKernel(new RepositoryModule()); _controller = _kernel.Get <TelemetryController>(); MapperConfig.RegisterMapping(); _dto = new TelemetryDto() { Car = new CarDto() { Chassis = "CH1", TyreTemp = 89.22, TyreDeg = 0.084334, Fuel = 98.59, Weight = 842.59 }, Lap = new LapDto() { Number = 100, Timespan = new TimeSpan(0, 1, 45, 9) }, TimeStamp = DateTime.Parse("2016-09-17T13:02:55.696Z") }; _dto2 = new TelemetryDto() { Car = new CarDto() { Chassis = "CH2", TyreTemp = 89.22, TyreDeg = 0.084334, Fuel = 98.59, Weight = 842.59 }, Lap = new LapDto() { Number = 100, Timespan = new TimeSpan(0, 1, 45, 9) }, TimeStamp = DateTime.Parse("2016-09-17T13:02:55.696Z") }; }
public async Task <bool> SendTelemetryDataAsync(TelemetryDto telemetry) { Message telemetryMessage = new Message(Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(telemetry))); telemetryMessage.Properties.Add("temperatureAlert", (telemetry.Temperature > 30) ? "true" : "false"); try { await _deviceClient.SendEventAsync(telemetryMessage); } catch (Exception ex) { return(false); } return(true); }
private async void _sendTelemetryTimer_Tick(object sender, object e) { TelemetryDto telemetry = _bl.GetTelemetryData(); TelemetryStatus = ($"Trying to send: {JsonConvert.SerializeObject(telemetry)}"); _telemetryList.Add(JsonConvert.SerializeObject(telemetry)); if (IsHttpIngest) { await _blHttp.SendTelemetryDataAsync(telemetry); } else { await _bl.SendTelemetryDataAsync(telemetry); } TelemetryStatus = $"Sent: {JsonConvert.SerializeObject(telemetry)}"; }
public async Task <bool> SendTelemetryDataAsync(TelemetryDto telemetry) { string sASToken = CreateServiceBusSASToken(Configuration.DeviceId, Configuration.DeviceSummetricKey, Configuration.IoTHubFullName); using (HttpClient httpClient = new HttpClient()) { httpClient.DefaultRequestHeaders.Add("Accept", "application/json"); httpClient.DefaultRequestHeaders.Add("Authorization", sASToken); HttpContent httpContent = new StringContent(JsonConvert.SerializeObject(telemetry)); HttpResponseMessage httpResponseMessage = await httpClient.PostAsync(Configuration.DeviceIoTHubTargetUrl, httpContent); if (httpResponseMessage.IsSuccessStatusCode) { return(true); } else { return(false); } } }
public async Task <IHttpActionResult> Post([FromBody] TelemetryDto telemetry) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } //check the message Queue for messages await CheckQueueForTelemetries(); if (CheckTelemetryRules(telemetry, "CH1")) { return(await Task.FromResult(HttpActionResult(telemetry))); } if (CheckTelemetryRules(telemetry, "CH2")) { return(await Task.FromResult(HttpActionResult(telemetry))); } return(new BadRequestErrorMessageResult("Duplicate not allowed. A lap can track a car at most once", this)); }
private IHttpActionResult HttpActionResult(TelemetryDto telemetry) { var newTelemetryData = Mapper.Map <Telemetry>(telemetry); try { //throw new ServerException("Repository is down!"); NewLyAddedtelemetries.Add(newTelemetryData); } catch (Exception ex) { _unitOfWork.Messenger.SendMessage(telemetry); return(Ok(new { Information = "Repository currently offline. Your data is in a queue and will be stored in the Repo as soon as it's back online" })); } return(CreatedAtRoute("CreateLap", new { Id = Mapper.Map <Telemetry>(telemetry).Id }, Mapper.Map <Telemetry>(telemetry))); }