/// <summary> /// Gets a list of domain names based on tld:s available for sale. /// </summary> private IEnumerable <string> GetDomainNames(ICollection <string> searchTerms) { var domainsArray = String.Join(" ", searchTerms); var domainsForCheck = DomainSearchHelper.GetDomainsForCheck( domainsArray, this.resellerId, Guid.Empty, this.shopNameProvider.GetShopName(), this.countryCode); return(domainsForCheck); }
/// <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); }
/// <summary> /// Start search for domain names in Atomia DomainRegistration /// </summary> private IEnumerable <DomainDataFromXml> StartSearch(IEnumerable <string> domainNamesToCheck) { if (domainNamesToCheck == null || domainNamesToCheck.Count() <= 0) { return(new List <DomainDataFromXml>()); } var result = DomainSearchHelper.StartSearch( domainNamesToCheck.ToArray(), BillingApi.Service, Guid.Empty, this.resellerId, this.shopNameProvider.GetShopName(), this.currencyCode, this.countryCode); return(result); }
private List <string> GetTldsForSearchedDomains(ICollection <string> searchTerms) { var tlds = new List <string>(); var domainNames = DomainSearchHelper.StripProtocolFromDomainNames(searchTerms.ToArray()) .Select(s => s + ".").ToList(); foreach (var term in searchTerms) { if (term.Contains(".")) { if (domainNames.Any(d => term.Contains(d))) { var domainName = domainNames.Where(d => term.Contains(d)).FirstOrDefault(); var startIndex = term.IndexOf(domainName) + domainName.Length; var tld = term.Substring(startIndex, term.Length - startIndex); tlds.Add(tld); } } } return(tlds); }
/// <summary> /// Check status of results from search with specified id /// </summary> public DomainSearchData CheckStatus(int domainSearchId) { var results = new List <DomainResult>(); var statusData = DomainSearchHelper.GetAvailabilityStatus( domainSearchId.ToString(), BillingApi.Service, Guid.Empty, resellerId, this.shopNameProvider.GetShopName(), currencyCode, countryCode); int transactionId; if (!Int32.TryParse(statusData.TransactionId, out transactionId)) { transactionId = -1; } ; foreach (var domain in statusData.DomainStatuses) { var domainResult = CreateDomainResult(domain.ProductId, domain.Status, domain.DomainName, transactionId); results.Add(domainResult); } var data = new DomainSearchData { DomainSearchId = transactionId, FinishSearch = statusData.FinishSearch, Results = results }; return(data); }