public bool TryParse(string record, string domain, out DmarcRecord dmarcRecord) { if (string.IsNullOrEmpty(record)) { dmarcRecord = null; return(false); } string[] stringTags = record.Split(new[] { Separator }, StringSplitOptions.RemoveEmptyEntries).Select(_ => _.Trim()).ToArray(); List <Tag> tags = _tagParser.Parse(stringTags.ToList()); tags = tags.Concat(_implicitProvider.GetImplicitValues(tags)).ToList(); foreach (Tag tag in tags) { string explanation; if (_explainer.TryExplain(tag, out explanation)) { tag.Explanation = explanation; } } dmarcRecord = new DmarcRecord(record, tags, domain); dmarcRecord.AddErrors(_ruleEvaluator.Evaluate(dmarcRecord)); return(true); }
public SpfConfig Parse(Contract.Domain.SpfConfig spfDomainConfig) { List <SpfRecord> records = spfDomainConfig.Records .Select(_ => _spfRecordParser.Parse(_, spfDomainConfig.Domain.Name)) .Where(_ => _ != null).ToList(); SpfConfig spfConfig = new SpfConfig(records, spfDomainConfig.LastChecked); List <Error> errors = _spfConfigRulesEvaluator.Evaluate(spfConfig); spfConfig.AddErrors(errors); return(spfConfig); }
public void RuleEvaluatorChecksForApplicableRulesForEachProduct() { var products = Enumerable.Range(0, 20).Select(i => new Product()).ToList(); _evaluator.Evaluate(new Payment { Products = products }); _rules.ForEach(_ => _.Verify(m => m.CanApply(It.Is <Product>(p => products.Contains(p))))); }
public DmarcConfig Parse(Contract.Domain.DmarcConfig dmarcDomainConfig) { List <DmarcRecord> records = new List <DmarcRecord>(); foreach (string dmarcRecord in dmarcDomainConfig.Records) { DmarcRecord record; if (_recordParser.TryParse(dmarcRecord, dmarcDomainConfig.Domain.Name, out record)) { records.Add(record); } } DmarcConfig dmarcConfig = new DmarcConfig(records, dmarcDomainConfig.Domain.Name, dmarcDomainConfig.LastChecked); dmarcConfig.AddErrors(_configRuleEvaluator.Evaluate(dmarcConfig)); return(dmarcConfig); }
public SpfRecord Parse(string record, string domain) { if (string.IsNullOrEmpty(record)) { return(null); } string[] stringTokens = record.Split(new[] { Separator }, StringSplitOptions.RemoveEmptyEntries); string versionToken = stringTokens.ElementAtOrDefault(0); Domain.Version version = _versionParser.Parse(versionToken); string explanation; if (_versionExplainer.TryExplain(version, out explanation)) { version.Explanation = explanation; } List <Term> terms = stringTokens.Skip(1).Select(_termParser.Parse).ToList(); terms = terms.Concat(_implicitTermProvider.GetImplicitValues(terms)).ToList(); foreach (Term term in terms) { if (_termExplainer.TryExplain(term, out explanation)) { term.Explanation = explanation; } } SpfRecord spfRecord = new SpfRecord(record, version, terms, domain); spfRecord.AddErrors(_spfRecordRulesEvaluator.Evaluate(spfRecord)); return(spfRecord); }
public void WhenICallReconcile() { _reconcileEngine = new RuleSetEvaluator(_ruleSet); _reconciledResult = _reconcileEngine.Evaluate(trans1, trans2); }