protected override void DoAfterRead(Dictionary <string, HtmlDocument> docs) { HeaderFilterRules.Clear(); var doc = docs.Single(d => d.Key == "privacy/spam").Value; int i = 0; while (doc.DocumentNode.SafeSelectNodes(String.Format("//input[@name='hdrfilter_delete_{0:D2}']", ++i)).Any()) { string index = i.ToString("D2"); this.HeaderFilterRules.Add(new HeaderFilterRule() { Regexes = doc.GetTextAreaListValue(_regexTag + index), Action = doc.GetInputEnumValue <HeaderFilterAction>(_actionTag + index).Value, }); } EquivalentDomains.Clear(); doc = docs.Single(d => d.Key == "privacy/sender").Value; var allGroups = doc.GetTextAreaStringValue(_equivalentDomainsTag); if (!String.IsNullOrWhiteSpace(allGroups)) { var groups = allGroups.Split(';'); foreach (var group in groups) { var domains = group.Split(',').Select(d => d.Trim()); EquivalentDomains.Add(domains.ToList()); } } }
protected override void DoBeforeFinishWrite(RestRequest req) { for (int i = 0; i < this.HeaderFilterRules.Count; ++i) { var filter = this.HeaderFilterRules[i]; string index = (i + 1).ToString("D2"); req.AddParameter(_regexTag + index, filter.Regexes.Cat()); req.AddParameter(_actionTag + index, (int)filter.Action); } var groups = EquivalentDomains.Select(g => String.Join(",", g)); var all = String.Join(";", groups); req.AddParameter(_equivalentDomainsTag, all); }