public static WhoisEnhancedRecord ProcessFilters(this WhoisEnhancedRecord whoisEnhancedRecord, string filters, string referrer)
 {
     referrer = referrer == null ? null : referrer.ToLower();
     if (filters != null)
     {
         var splitFilters = filters.ToLower().Split(',');
         foreach (var filter in splitFilters)
         {
             if (!string.IsNullOrEmpty(IsFilterMatchInWhoisInfo(filter, whoisEnhancedRecord)))
             {
                 if (whoisEnhancedRecord.FilterMatches == null)
                 {
                     whoisEnhancedRecord.FilterMatches = new List <string>();
                 }
                 whoisEnhancedRecord.FilterMatches.Add(IsFilterMatchInWhoisInfo(filter, whoisEnhancedRecord));
                 whoisEnhancedRecord.IsFilterMatch = true;
             }
             if (!string.IsNullOrEmpty(IsFilterMatchInReferrer(filter, referrer)))
             {
                 if (whoisEnhancedRecord.FilterMatches == null)
                 {
                     whoisEnhancedRecord.FilterMatches = new List <string>();
                 }
                 whoisEnhancedRecord.FilterMatches.Add(IsFilterMatchInReferrer(filter, referrer));
                 whoisEnhancedRecord.IsFilterMatch = true;
             }
         }
     }
     return(whoisEnhancedRecord);
 }
        public static WhoisEnhancedRecord SetCountryName(this WhoisEnhancedRecord whoisEnhancedRecord)
        {
            var countryTranslator = new CountryNameLookup.CountryNameLookup();

            whoisEnhancedRecord.Country = countryTranslator.GetCountryName(whoisEnhancedRecord.CountryCode2);
            return(whoisEnhancedRecord);
        }
 private static WhoisEnhancedRecord IsFriendlyMatchInOrganization(WhoisEnhancedRecord whoisEnhancedRecord)
 {
     if (!string.IsNullOrEmpty(whoisEnhancedRecord.Organization))
     {
         string[] friendlyOrganizationFilters =
         {
             "google",       "yahoo",         "amazon", "microsoft", "corbis",    "q9",
             "agilent",      "critical mass", "cactus", "accenture", "momentous",
             "componet art", "ibm",           "intel",  "telerik",   "ebay"
         };
         foreach (var organizationName in friendlyOrganizationFilters)
         {
             if (whoisEnhancedRecord.Organization.ToLower().Contains(organizationName))
             {
                 if (whoisEnhancedRecord.FriendlyMatches == null)
                 {
                     whoisEnhancedRecord.FriendlyMatches = new List <string>();
                 }
                 whoisEnhancedRecord.FriendlyMatches.Add(organizationName);
                 whoisEnhancedRecord.IsFriendly = true;
             }
         }
     }
     return(whoisEnhancedRecord);
 }
 private static WhoisEnhancedRecord IsReferrerMatchInReferrer(WhoisEnhancedRecord whoisEnhancedRecord, string referrer)
 {
     if (!string.IsNullOrEmpty(referrer))
     {
         string[] referrerFilters =
         {
             "twitter",       "github",      "friendfeed", "asp.net",   "facebook",
             "linkedin",      "code.google", "flickr",     "delicious",
             "stackoverflow", "mail.google", "odetocode"
         };
         foreach (var referrerName in referrerFilters)
         {
             if (referrer.ToLower().Contains(referrerName))
             {
                 if (whoisEnhancedRecord.ReferrerMatches == null)
                 {
                     whoisEnhancedRecord.ReferrerMatches = new List <string>();
                 }
                 whoisEnhancedRecord.ReferrerMatches.Add(referrerName);
                 whoisEnhancedRecord.IsReferrerMatch = true;
             }
         }
     }
     return(whoisEnhancedRecord);
 }
        public void ShouldVerifyReferrerByReferrer()
        {
            var response = new WhoisEnhancedRecord();

            response.ProcessReferrer("Twitter");

            Assert.IsTrue(response.IsReferrerMatch);
            Assert.Contains("twitter", response.ReferrerMatches);
        }
 public static WhoisEnhancedRecord SetOrganizationFromSecondarySource(this WhoisEnhancedRecord whoisEnhancedRecord, string remoteAddress)
 {
     if (string.IsNullOrEmpty(whoisEnhancedRecord.Organization))
     {
         IPHostEntry hostInfo = Dns.GetHostEntry(remoteAddress);
         whoisEnhancedRecord.Organization = hostInfo.HostName;
     }
     return(whoisEnhancedRecord);
 }
        public void ShouldVerifyFriendlyByOrganization()
        {
            var response = new WhoisEnhancedRecord {
                Organization = "Google Inc."
            };

            response.ProcessFriendly();

            Assert.IsTrue(response.IsFriendly);
            Assert.Contains("google", response.FriendlyMatches);
        }
        public void ShouldVerifyFiltersByCountryAndReferrer()
        {
            var response = new WhoisEnhancedRecord {
                Country = "CANADA"
            };

            response.ProcessFilters("Canada,github", "github");

            Assert.IsTrue(response.IsFilterMatch);
            Assert.Contains("Country", response.FilterMatches);
            Assert.Contains("Referrer", response.FilterMatches);
        }
 private static string IsFilterMatchInWhoisInfo(string filter, WhoisEnhancedRecord whoisEnhancedRecord)
 {
     if ((!string.IsNullOrEmpty(whoisEnhancedRecord.Country) && whoisEnhancedRecord.Country.ToLower().Contains(filter)) ||
         (!string.IsNullOrEmpty(whoisEnhancedRecord.CountryCode2) && whoisEnhancedRecord.CountryCode2.ToLower().Contains(filter)))
     {
         return("Country");
     }
     if (!string.IsNullOrEmpty(whoisEnhancedRecord.StateProvince) && whoisEnhancedRecord.StateProvince.ToLower().Contains(filter))
     {
         return("StateProvince");
     }
     if (!string.IsNullOrEmpty(whoisEnhancedRecord.City) && whoisEnhancedRecord.City.ToLower().Contains(filter))
     {
         return("City");
     }
     if (!string.IsNullOrEmpty(whoisEnhancedRecord.Organization) && whoisEnhancedRecord.Organization.ToLower().Contains(filter))
     {
         return("Organization");
     }
     return(null);
 }
 private static WhoisEnhancedRecord IsFriendlyMatchInOrganization(WhoisEnhancedRecord whoisEnhancedRecord)
 {
     if (!string.IsNullOrEmpty(whoisEnhancedRecord.Organization))
     {
         string[] friendlyOrganizationFilters = {
                                                    "google", "yahoo", "amazon", "microsoft", "corbis", "q9",
                                                    "agilent", "critical mass", "cactus", "accenture", "momentous",
                                                    "componet art", "ibm", "intel", "telerik", "ebay"
                                                };
         foreach (var organizationName in friendlyOrganizationFilters)
         {
             if (whoisEnhancedRecord.Organization.ToLower().Contains(organizationName))
             {
                 if (whoisEnhancedRecord.FriendlyMatches == null)
                 {
                     whoisEnhancedRecord.FriendlyMatches = new List<string>();
                 }
                 whoisEnhancedRecord.FriendlyMatches.Add(organizationName);
                 whoisEnhancedRecord.IsFriendly = true;
             }
         }
     }
     return whoisEnhancedRecord;
 }
 private static string IsFilterMatchInWhoisInfo(string filter, WhoisEnhancedRecord whoisEnhancedRecord)
 {
     if ((!string.IsNullOrEmpty(whoisEnhancedRecord.Country) && whoisEnhancedRecord.Country.ToLower().Contains(filter)) ||
         (!string.IsNullOrEmpty(whoisEnhancedRecord.CountryCode2) && whoisEnhancedRecord.CountryCode2.ToLower().Contains(filter)))
     {
         return "Country";
     }
     if (!string.IsNullOrEmpty(whoisEnhancedRecord.StateProvince) && whoisEnhancedRecord.StateProvince.ToLower().Contains(filter))
     {
         return "StateProvince";
     }
     if (!string.IsNullOrEmpty(whoisEnhancedRecord.City) && whoisEnhancedRecord.City.ToLower().Contains(filter))
     {
         return "City";
     }
     if (!string.IsNullOrEmpty(whoisEnhancedRecord.Organization) && whoisEnhancedRecord.Organization.ToLower().Contains(filter))
     {
         return "Organization";
     }
     return null;
 }
 private static WhoisEnhancedRecord IsReferrerMatchInReferrer(WhoisEnhancedRecord whoisEnhancedRecord, string referrer)
 {
     if (!string.IsNullOrEmpty(referrer))
     {
         string[] referrerFilters = {
                                        "twitter", "github", "friendfeed", "asp.net", "facebook",
                                        "linkedin", "code.google", "flickr", "delicious",
                                        "stackoverflow", "mail.google", "odetocode"
                                    };
         foreach (var referrerName in referrerFilters)
         {
             if (referrer.ToLower().Contains(referrerName))
             {
                 if (whoisEnhancedRecord.ReferrerMatches == null)
                 {
                     whoisEnhancedRecord.ReferrerMatches = new List<string>();
                 }
                 whoisEnhancedRecord.ReferrerMatches.Add(referrerName);
                 whoisEnhancedRecord.IsReferrerMatch = true;
             }
         }
     }
     return whoisEnhancedRecord;
 }
        public static WhoisEnhancedRecord ProcessFriendly(this WhoisEnhancedRecord whoisEnhancedRecord)
        {
            whoisEnhancedRecord = IsFriendlyMatchInOrganization(whoisEnhancedRecord);

            return(whoisEnhancedRecord);
        }
        public static WhoisEnhancedRecord ProcessReferrer(this WhoisEnhancedRecord whoisEnhancedRecord, string referrer)
        {
            whoisEnhancedRecord = IsReferrerMatchInReferrer(whoisEnhancedRecord, referrer);

            return(whoisEnhancedRecord);
        }