public bool IsMatch(string settings, IPersonalizationTestContext testContext) { var decCookie = HttpContext.Current.Request.Cookies["sf-data-intell-subject"]; if (decCookie != null) { //Retrieve the tracking cookie ID from the request var dataIntelligenceSubject = HttpContext.Current.Request.Cookies["sf-data-intell-subject"].Value; var address = "https://api.dec.sitefinity.com/analytics/v1/scorings/leads/in"; using (WebClient client = new WebClient()) { var currentSite = new Telerik.Sitefinity.Multisite.MultisiteContext().CurrentSite; client.Headers.Add("x-dataintelligence-datacenterkey: " + Config.Get <DigitalExperienceCloudConnectorConfig>().SiteToApiKeyMappings[currentSite.Name].DataCenterApiKey); client.Headers.Add("x-dataintelligence-datasource: " + Config.Get <DigitalExperienceCloudConnectorConfig>().ApplicationName); client.Headers.Add("x-dataintelligence-ids: " + settings.Split(new string[] { "--" }, StringSplitOptions.None)[0]); client.Headers.Add("x-dataintelligence-subject: " + dataIntelligenceSubject); client.Headers.Add("Authorization: appauth 04C79B5D-3146-7AD2-3FCA-C6966A00C2A2"); client.Headers.Add("x-dataintelligence-contacts:{\"" + Config.Get <DigitalExperienceCloudConnectorConfig>().ApplicationName + "\":[\"" + dataIntelligenceSubject + "\"]}"); try { var leads = client.DownloadString(address); return(leads.Contains("\"LevelId\":" + settings.Split(new string[] { "--" }, StringSplitOptions.None)[1] + ",\"PassedOn") ? true : false); } catch (Exception e) { return(false); } } } else { return(false); } }
/// <summary> /// Determines if the current user is a match for the given criterion. /// </summary> /// <param name="settings">The serialized integer value that represents the <see cref="DayOfWeek"/> used as a criterion.</param> /// <param name="testContext">Personalization test context populated by the personalization test console.</param> /// <returns> /// True if the criterion is matched; otherwise false. /// </returns> public bool IsMatch(string settings, IPersonalizationTestContext testContext) { if (string.IsNullOrEmpty(settings)) { return false; } if (settings == this.CurrentDayOfWeek.ToString()) { return true; } else { return false; } }
/// <summary> /// Determines if the current user is a match for the given criterion. /// </summary> /// <param name="settings">The serialized settings with which the criterion has been configured.</param> /// <param name="testContext">Personalization test context populated by the personalization test console.</param> /// <returns> /// True if the criterion is matched; otherwise false. /// </returns> public bool IsMatch(string settings, IPersonalizationTestContext testContext) { var isMobile = false; var isMobileSetting = false; if (bool.TryParse(settings, out isMobileSetting)) { if (testContext.IsInTestMode) { if (bool.TryParse(testContext["isMobileDevice"], out isMobile)) { isMobile = isMobileSetting == isMobile; } } else { var userAgent = SystemManager.CurrentHttpContext.Request.ServerVariables["HTTP_USER_AGENT"]; isMobile = isMobileSetting == (isMobileRegex1.IsMatch(userAgent) || isMobileRegex2.IsMatch(userAgent.Substring(0, 4))); } } return(isMobile); }
public bool IsMatch(string settings, IPersonalizationTestContext testContext) { if (string.IsNullOrEmpty(settings)) { return(false); } var serializer = new JavaScriptSerializer(); var fieldSettings = serializer.Deserialize <FieldSettings>(settings); var fieldValue = string.Empty; if (testContext.IsInTestMode) { if (fieldSettings.FieldName.Equals(testContext["demandbaseAttributeName"], StringComparison.OrdinalIgnoreCase)) { fieldValue = testContext["demandbaseAttributeValue"]; } else { return(false); } } else { var demandbaseJObject = SystemManager.CurrentHttpContext.Items["demandbaseJObject"] as JObject; if (demandbaseJObject == null) { var client = new HttpClient(); var url = string.Concat(Config.Get <DemandbasePersonalizationConfig>().DemandbaseAPIUrl, "?key=", Config.Get <DemandbasePersonalizationConfig>().DemandbaseAPIKey, "&query=", this.VisitorIP.ToString()); var response = client.GetAsync(url).Result; if (response.IsSuccessStatusCode) { var responseString = response.Content.ReadAsStringAsync().Result; demandbaseJObject = JObject.Parse(responseString); SystemManager.CurrentHttpContext.Items["demandbaseJObject"] = demandbaseJObject; } } if (demandbaseJObject != null) { var fieldAttribute = demandbaseJObject.Properties().FirstOrDefault(p => p.Name.Equals(fieldSettings.FieldName, StringComparison.OrdinalIgnoreCase)); if (fieldAttribute != null) { fieldValue = fieldAttribute.Value.ToString(); } } } switch (fieldSettings.ComparisonRule) { case "equals": return(fieldValue.Equals(fieldSettings.FieldValue, StringComparison.OrdinalIgnoreCase)); case "contains": return(fieldValue.IndexOf(fieldSettings.FieldValue, StringComparison.OrdinalIgnoreCase) >= 0); case "startswith": return(fieldValue.StartsWith(fieldSettings.FieldValue, StringComparison.OrdinalIgnoreCase)); case "endswith": return(fieldValue.StartsWith(fieldSettings.FieldValue, StringComparison.OrdinalIgnoreCase)); default: break; } return(false); }