Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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)))));
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 6
0
 public void WhenICallReconcile()
 {
     _reconcileEngine  = new RuleSetEvaluator(_ruleSet);
     _reconciledResult = _reconcileEngine.Evaluate(trans1, trans2);
 }