Beispiel #1
0
        public static void GenerateHandlerEvent(string hostName, Guid userId, MessageItem messageItem, ExmEvents exmEvent, DateTime dateTime, string userAgent = null, WhoIsInformation geoData = null, string link = null)
        {
            string eventHandler;

            switch (exmEvent)
            {
            case ExmEvents.Open:
                eventHandler = "RegisterEmailOpened.ashx";
                break;

            case ExmEvents.Unsubscribe:
                eventHandler = "RedirectUrlPage.aspx";
                link         = "/sitecore/Unsubscribe.aspx";
                break;

            case ExmEvents.UnsubscribeFromAll:
                eventHandler = "RedirectUrlPage.aspx";
                link         = "/sitecore/UnsubscribeFromAll.aspx";
                break;

            case ExmEvents.Click:
                eventHandler = "RedirectUrlPage.aspx";
                break;

            default:
                throw new InvalidEnumArgumentException("No such event in ExmEvents");
            }

            var queryStrings         = GetQueryParameters(userId, messageItem, link);
            var encryptedQueryString = QueryStringEncryption.GetDefaultInstance().Encrypt(queryStrings);

            var parameters = encryptedQueryString.ToQueryString(true);

            var url      = $"{hostName}/sitecore/{eventHandler}{parameters}";
            var fakeData = new ExmFakeData
            {
                UserAgent   = userAgent,
                RequestTime = dateTime,
                GeoData     = geoData
            };

            RequestUrl(url, fakeData);
        }
Beispiel #2
0
        public static void RequestUrl(string url, ExmFakeData fakeData = null)
        {
            Pool.Wait();

            try
            {
                // Don't use IDisposable HttpClient, seems to cause problems with threads
                var client = new HttpClient();

                if (fakeData != null)
                {
                    if (fakeData.UserAgent != null)
                    {
                        client.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", fakeData.UserAgent);
                    }

                    var json = JsonConvert.SerializeObject(fakeData);
                    client.DefaultRequestHeaders.TryAddWithoutValidation("X-Exm-FakeData", json);
                }

                client.Timeout = TimeSpan.FromSeconds(120);

                var res = client.PostAsync(url, new StringContent(string.Empty)).Result;
                if (!res.IsSuccessStatusCode)
                {
                    Errors++;
                }
            }
            catch (TaskCanceledException)
            {
                Timeouts++;
            }
            catch (Exception ex)
            {
                Logger.Instance.LogError("ExmEventsGenerator error", ex);
                Errors++;
            }
            finally
            {
                Pool.Release();
            }
        }