/// <summary> /// Gets a list of domains that are either taken locally or failing to match tld requirements. /// </summary> private IEnumerable <DomainDataFromXml> CheckLocalStatus(IEnumerable <string> domains) { var results = new List <DomainDataFromXml>(); var localStatusString = String.Empty; var domainCheckAttributes = BillingApi.CheckDomains(domains); var tldBasedRegexStrings = DomainSearchHelper.GetTLDBasedRegexes( this.resellerId, this.shopNameProvider.GetShopName(), this.countryCode); IEnumerable <Regex> tldBasedRegexes = null; if (tldBasedRegexStrings.Count > 0) { tldBasedRegexes = tldBasedRegexStrings.Select(r => new Regex(r)); } foreach (var attr in domainCheckAttributes) { if (attr.Value.ToLower() == "taken") { localStatusString += attr.Name + "|TAKEN "; } else if (tldBasedRegexes != null) { var decodedDomainName = IDNLib.Decode(attr.Name.Trim()); if (!tldBasedRegexes.Any(regex => regex.IsMatch(decodedDomainName))) { localStatusString += attr.Name + "|SPECIAL "; } } } if (localStatusString != String.Empty) { results = DomainSearchHelper.MarkDomainsAsUnavailable( localStatusString.TrimEnd(' '), BillingApi.Service, Guid.Empty, this.resellerId, this.shopNameProvider.GetShopName(), this.currencyCode, this.countryCode).ToList(); foreach (var domainData in results) { domainData.ProductName = IDNLib.Encode(domainData.ProductName); } } return(results); }