Example #1
0
        public async void ThreadProc()
        {
            AzureSQLHelper.EventRuleCatalogModel eventRuleModel = new AzureSQLHelper.EventRuleCatalogModel();
            List <Application> appList = eventRuleModel.GetActionApplicationById(_MessageCatalogId);

            try
            {
                foreach (var app in appList)
                {
                    string applicationTargetType = app.TargetType.ToLower();
                    try
                    {
                        WebHelper webHelper      = new WebHelper();
                        JObject   outputTemplate = new JObject();
                        switch (applicationTargetType)
                        {
                        case "webapi":
                            outputTemplate = ParsingOutputTemplate(app.MessageTemplate);
                            switch (app.Method.ToLower())
                            {
                            case "post-x-www":
                                string postData = ConvertJObjectToQueryString(outputTemplate);
                                switch (app.AuthType.ToLower())
                                {
                                case "none":

                                    webHelper.PostContent(app.ServiceURL, postData);
                                    break;

                                case "basic auth":
                                    webHelper.PostContent(app.ServiceURL, postData, app.AuthID, app.AuthPW);
                                    break;
                                }
                                break;

                            case "post-multi":
                                NameValueCollection formData = new NameValueCollection();
                                foreach (var elem in outputTemplate)
                                {
                                    formData.Add(elem.Key, outputTemplate[elem.Key].ToString());
                                }
                                switch (app.AuthType.ToLower())
                                {
                                case "none":
                                    webHelper.PostMultipartContent(app.ServiceURL, formData);
                                    break;

                                case "basic auth":
                                    break;
                                }
                                break;

                            case "post-json":
                                switch (app.AuthType.ToLower())
                                {
                                case "none":
                                    webHelper.PostJsonContent(app.ServiceURL, JsonConvert.SerializeObject(outputTemplate));
                                    break;

                                case "basic auth":
                                    webHelper.PostJsonContent(app.ServiceURL, JsonConvert.SerializeObject(outputTemplate), app.AuthID, app.AuthPW);
                                    break;
                                }
                                break;
                            }
                            break;

                        case "dashboard":
                            try
                            {
                                webHelper.PostContent(EventActionApp._rtEventFeedInURL, JsonConvert.SerializeObject(_FullAlarmMessage));
                            }
                            catch (Exception ex)
                            {
                                EventActionApp._appLogger.Error("RTEventFeedInURL Exception: " + ex.Message);
                            }
                            break;

                        case "iot device":
                            int deviceId = int.Parse(app.ServiceURL);
                            AzureSQLHelper.IoTDeviceModel iotDeviceModel = new AzureSQLHelper.IoTDeviceModel();
                            IoTDevice iotDevice = iotDeviceModel.GetById(deviceId);
                            try
                            {
                                IoTHubHelper iotHubHelper = new IoTHubHelper(iotDevice.IoTHub.IoTHubConnectionString);
                                outputTemplate = ParsingOutputTemplate(app.MessageTemplate);
                                iotHubHelper.SendC2DMessage(iotDevice.IoTHubDeviceID, outputTemplate);
                            }
                            catch (Exception ex)
                            {
                                EventActionApp._appLogger.Error("C2D Message Error, DeviceID:" + iotDevice.Id + "; Exception:" + ex.Message);
                            }
                            break;

                        case "email":
                            break;

                        case "sms":
                            break;
                        }
                    }
                    catch (Exception ex)
                    {
                        EventActionApp._appLogger.Error("EventAction Exception: " + ex.Message + ";" + app.Name + "; (id:" + app.Id + ") failed: ");
                        continue;
                    }
                }
            }
            catch (Exception ex)
            {
                StringBuilder logMessage = new StringBuilder();
                logMessage.AppendLine("EventAction Task Exception: " + ex.Message);
                logMessage.AppendLine("EventAction Task Message: " + Convert.ToString(_FullAlarmMessage));
                EventActionApp._appLogger.Error(logMessage);
            }
        }