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);
            }
        }
コード例 #2
0
        /// <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;
            }
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
        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);
        }