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);
        }
Exemple #2
0
        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);
        }