示例#1
0
        /// <summary>
        /// Method to retrieve the existing Action Rules on a device
        /// </summary>
        /// <param name="IP">The device ip address</param>
        /// <param name="User">User to authenticate the http request</param>
        /// <param name="Password">Password to use</param>
        /// <returns>GetActionRulesResponse, GetActionRulesResponse.ActionRules contains a List<ActionRule> with the stored ActionRules of the device</returns>
        public async Task <GetActionRulesResponse> GetActionRulesAsync(string IP, string User, string Password)
        {
            GetActionConfigurationsResponse configResponse = await this.GetActionConfigurationsAsync(IP, User, Password);

            GetActionRulesResponse rulesResponse = parseGetActionRulesResponse(await base.sendRequestAsync(IP, User, Password, @"<act:GetActionRules/>"));

            if (configResponse.IsSuccess && rulesResponse.IsSuccess)
            {
                foreach (ActionRule r in rulesResponse.ActionRules)
                {
                    r.Configuration = configResponse.Configurations.Where(x => x.ConfigID == r.Configuration.ConfigID).FirstOrDefault();
                }
            }
            return(rulesResponse);
        }
示例#2
0
        public async Task Get_ActionRules()
        {
            GetActionRulesResponse response = await actionService.GetActionRulesAsync(VALID_IP, VALID_USER, VALID_PASS);

            if (!response.IsSuccess)
            {
                Console.WriteLine("NOT 200 OK : " + response.Content);
            }
            else
            {
                foreach (ActionRule ar in response.ActionRules)
                {
                    Console.WriteLine("Action Rule : " + "\r\n" + "\t" + ar.ToString());
                    Console.WriteLine("\t" + "Used action Configuration : " + "\r\n" + "\t" + ar.Configuration.ToString());
                }
            }

            Assert.IsTrue(response.IsSuccess && response.HttpStatusCode == System.Net.HttpStatusCode.OK && !response.SOAPContent.IsEmpty);
        }
示例#3
0
        private GetActionRulesResponse parseGetActionRulesResponse(ServiceResponse Response)
        {
            GetActionRulesResponse response = Response.Factory <GetActionRulesResponse>();

            if (Response.IsSuccess)
            {
                try
                {
                    XElement   configResponse = Response.SOAPContent.Element(NS_SOAP_ENV + "Body").Element(NS_ACTION + "GetActionRulesResponse").Element(NS_ACTION + "ActionRules");
                    ActionRule rule;
                    foreach (XElement el in configResponse.Elements())
                    {
                        rule = new ActionRule();
                        //parse rule base info
                        rule.RuleID  = int.Parse(el.Element(NS_ACTION + "RuleID").Value);
                        rule.Name    = el.Element(NS_ACTION + "Name").Value;
                        rule.Enabled = bool.Parse(el.Element(NS_ACTION + "Enabled").Value);
                        //parse rule startevent
                        if (el.HasElement(NS_ACTION + "StartEvent"))
                        {
                            rule.Trigger = new EventTrigger(
                                el.Element(NS_ACTION + "StartEvent").Element(NS_TOPIC + "TopicExpression").Value, false,
                                el.Element(NS_ACTION + "StartEvent").GetElementValue(NS_TOPIC + "MessageContent")
                                );
                        }
                        //parse rule conditions
                        if (el.HasElement(NS_ACTION + "Conditions"))
                        {
                            foreach (XElement condition in el.Element(NS_ACTION + "Conditions").Elements())
                            {
                                rule.AddExtraCondition(
                                    new EventTrigger(
                                        condition.Element(NS_TOPIC + "TopicExpression").Value, false,
                                        condition.GetElementValue(NS_TOPIC + "MessageContent")
                                        )
                                    );
                            }
                        }
                        //parse rule actionconfiguration id
                        rule.Configuration = new ActionConfiguration()
                        {
                            ConfigID = int.Parse(el.Element(NS_ACTION + "PrimaryAction").Value)
                        };
                        //parse activation timout
                        if (el.HasElement(NS_ACTION + "ActivationTimeout"))
                        {
                            rule.SetActivationTimeout(int.Parse(Regex.Match(el.Element(NS_ACTION + "ActivationTimeout").Value, @"\d+").Value));
                        }

                        response.ActionRules.Add(rule);
                    }
                }
                catch (Exception ex)
                {
                    response.IsSuccess = false;
                    response.Content   = "[ParseActionRulesResponse] " + ex.Message;
                }
            }

            return(response);
        }