public async Task <SpfRecord> Parse(string domain, List <string> spfRecordParts) { string record = string.Join(string.Empty, spfRecordParts); if (string.IsNullOrEmpty(record)) { return(null); } string[] stringTokens = record.Split(Separator, StringSplitOptions.RemoveEmptyEntries); string versionToken = stringTokens.ElementAtOrDefault(0); Domain.Version version = _versionParser.Parse(versionToken); List <Term> terms = stringTokens.Skip(1).Select(_termParser.Parse).ToList(); terms = terms.Concat(_implicitTermProvider.GetImplicitValues(terms)).ToList(); SpfRecord spfRecord = new SpfRecord(spfRecordParts, version, terms); EvaluationResult <DomainSpfRecord> result = await _spfRecordRulesEvaluator.Evaluate(new DomainSpfRecord(domain, spfRecord)); spfRecord.AddErrors(result.Errors); return(spfRecord); }
private void UpdateValuesInLanguageVersion(ItemFile itemFile, Item item) { foreach (Field field in item.Fields) { if (field.Shared) { SortedSet <FieldValue> fields = itemFile.SharedFieldValues; UpdateField(item, fields, field); } else { Domain.Language language = itemFile.Languages.FirstOrDefault(l => l.LanguageName == field.Language.Name); if (language == null) { language = new Domain.Language() { LanguageName = field.Language.Name }; itemFile.Languages.Add(language); } Domain.Version version = language.Versions.FirstOrDefault(v => v.VersionNumber == item.Version.Number); if (version == null) { version = new Domain.Version() { VersionNumber = item.Version.Number }; language.Versions.Add(version); } UpdateField(item, version.FieldValues, field); } } }
public Domain.Version Parse(string versionString) { Domain.Version version = new Domain.Version(versionString); if (versionString == null || !_regex.IsMatch(versionString)) { string errorMessage = string.Format(SpfParserResource.InvalidValueErrorMessage, "SPF version", version); string markdown = string.Format(SpfParserMarkdownResource.InvalidValueErrorMessage, "SPF version", version); version.AddError(new Error(Id, ErrorType.Error, errorMessage, markdown)); } return(version); }
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 AuthConfiguration() { ApplicationName = Assembly.GetExecutingAssembly().GetApplicationName(); Version = Domain.Version.For(Assembly.GetExecutingAssembly().GetVersion()); }