public override bool Perform(SensorDto dto, string jsonMessage) { var email = JsonConvert.DeserializeObject <Email>(jsonMessage); if (email == null) { return(false); } MailMessage mailMessage = new MailMessage(); mailMessage.From = new MailAddress(settings.From); mailMessage.To.Add(email.To); mailMessage.IsBodyHtml = true; mailMessage.Body = GetBodyString(email.Body, dto); mailMessage.Subject = email.Subject ?? "Sensor value changed!"; lock (_lock) { try { _client.Send(mailMessage); } catch (Exception ex) { manager.Log("logs", "exception", ex); } } return(true); }
public override bool Perform(SensorDto dto, string jsonMessage) { var webrequest = JsonConvert.DeserializeObject <WebRequest>(jsonMessage); if (webrequest == null || string.IsNullOrEmpty(webrequest.Url)) { return(false); } lock (_lock){ if (webrequest.Security != null && webrequest.Security.Type.ToLower() == "basic") { _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("basic", Convert.ToBase64String(Encoding.UTF8.GetBytes(webrequest.Security.Username + ":" + webrequest.Security.Password))); } if (webrequest.Headers != null && webrequest.Headers.Any()) { foreach (var header in webrequest.Headers) { _client.DefaultRequestHeaders.Add(header.Key, header.Value); } } try { var tokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(10)); if (webrequest.Method.ToLower() == "get") { _client.GetAsync(webrequest.Url, tokenSource.Token).Wait(); } else { if (webrequest.Body != null) { _client.PostAsync(webrequest.Url, new StringContent(JsonConvert.SerializeObject(webrequest.Body), Encoding.UTF8, "application/json"), tokenSource.Token).Wait(); } else { _client.PostAsync(webrequest.Url, null, tokenSource.Token).Wait(); } } } catch (Exception ex) { manager.Log("logs", "exception", ex); } _client.DefaultRequestHeaders.Clear(); } return(true); }
public async Task <bool> Execute(SensorDto dto) { var entity = await _manager.GetAsync <Sensor>("sensor", "data", Guid.Parse(dto.SensorId)); if (entity == null) { return(false); } dto.Name = entity.Name; if (entity.Rules != null && entity.Rules.Any()) { foreach (var rule in entity.Rules) { ExecuteRule(entity.Datatype, dto, rule); } } await Task.Factory.StartNew(() => _manager.Log("sensor", "history", dto)); return(true); }