Exemple #1
0
        /// <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);
        }