/// <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); }
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); }
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); }