Example #1
0
        public static KissLog.Http.HttpRequest Create(Microsoft.AspNetCore.Http.HttpRequest httpRequest)
        {
            if (httpRequest == null)
            {
                throw new ArgumentNullException(nameof(httpRequest));
            }

            Session session = KissLog.InternalHelpers.WrapInTryCatch(() => GetSession(httpRequest));

            session = session ?? new Session();

            bool isAuthenticated = httpRequest.HttpContext?.User?.Identity?.IsAuthenticated ?? false;

            KissLog.Http.HttpRequest result = new KissLog.Http.HttpRequest(new KissLog.Http.HttpRequest.CreateOptions
            {
                Url             = new Uri(httpRequest.GetDisplayUrl()),
                HttpMethod      = httpRequest.Method,
                UserAgent       = GetUserAgent(httpRequest.Headers),
                HttpReferer     = GetHttpReferrer(httpRequest.Headers),
                RemoteAddress   = httpRequest.HttpContext?.Connection?.RemoteIpAddress?.ToString(),
                MachineName     = InternalHelpers.GetMachineName(),
                IsNewSession    = session.IsNewSession,
                SessionId       = session.SessionId,
                IsAuthenticated = isAuthenticated
            });

            RequestProperties.CreateOptions propertiesOptions = new RequestProperties.CreateOptions();
            propertiesOptions.Cookies     = InternalHelpers.ToKeyValuePair(httpRequest.Cookies);
            propertiesOptions.Headers     = InternalHelpers.ToKeyValuePair(httpRequest.Headers);
            propertiesOptions.QueryString = InternalHelpers.ToKeyValuePair(httpRequest.Query);
            propertiesOptions.Claims      = GetClaims(httpRequest);

            if (httpRequest.HasFormContentType)
            {
                if (KissLogConfiguration.Options.Handlers.ShouldLogFormData.Invoke(result) == true)
                {
                    propertiesOptions.FormData = InternalHelpers.ToKeyValuePair(httpRequest.Form);
                }
            }

            if (KissLog.InternalHelpers.CanReadRequestInputStream(propertiesOptions.Headers))
            {
                if (KissLogConfiguration.Options.Handlers.ShouldLogInputStream.Invoke(result) == true)
                {
                    propertiesOptions.InputStream = KissLog.InternalHelpers.WrapInTryCatch(() =>
                    {
                        return(ModuleInitializer.ReadInputStreamProvider.ReadInputStream(httpRequest));
                    });
                }
            }

            result.SetProperties(new RequestProperties(propertiesOptions));

            return(result);
        }
        public static HttpRequest Create(System.Web.HttpRequestBase httpRequest)
        {
            if (httpRequest == null)
            {
                throw new ArgumentNullException(nameof(httpRequest));
            }

            HttpRequest result = new HttpRequest(new HttpRequest.CreateOptions
            {
                Url           = httpRequest.Url,
                HttpMethod    = httpRequest.HttpMethod,
                UserAgent     = httpRequest.UserAgent,
                HttpReferer   = httpRequest.UrlReferrer?.ToString(),
                RemoteAddress = httpRequest.UserHostAddress,
                MachineName   = InternalHelpers.GetMachineName(httpRequest)
            });

            RequestProperties.CreateOptions propertiesOptions = new RequestProperties.CreateOptions();

            propertiesOptions.ServerVariables = InternalHelpers.ToKeyValuePair(httpRequest.ServerVariables);

            if (httpRequest.Unvalidated != null)
            {
                propertiesOptions.Headers     = InternalHelpers.ToKeyValuePair(httpRequest.Unvalidated.Headers);
                propertiesOptions.Cookies     = InternalHelpers.ToKeyValuePair(httpRequest.Unvalidated.Cookies);
                propertiesOptions.QueryString = InternalHelpers.ToKeyValuePair(httpRequest.Unvalidated.QueryString);

                if (KissLogConfiguration.Options.Handlers.ShouldLogFormData.Invoke(result) == true)
                {
                    propertiesOptions.FormData = InternalHelpers.ToKeyValuePair(httpRequest.Unvalidated.Form);
                }
            }

            if (KissLog.InternalHelpers.CanReadRequestInputStream(propertiesOptions.Headers))
            {
                if (KissLogConfiguration.Options.Handlers.ShouldLogInputStream.Invoke(result) == true)
                {
                    propertiesOptions.InputStream = KissLog.InternalHelpers.WrapInTryCatch(() =>
                    {
                        return(InternalHelpers.ReadInputStream(httpRequest));
                    });
                }
            }

            result.SetProperties(new RequestProperties(propertiesOptions));

            return(result);
        }
Example #3
0
        public void NullKeyValuesAreNotCopied(string keyName)
        {
            var options = new RequestProperties.CreateOptions
            {
                Headers         = CommonTestHelpers.GenerateList(keyName, 2),
                Cookies         = CommonTestHelpers.GenerateList(keyName, 2),
                QueryString     = CommonTestHelpers.GenerateList(keyName, 2),
                FormData        = CommonTestHelpers.GenerateList(keyName, 2),
                ServerVariables = CommonTestHelpers.GenerateList(keyName, 2),
                Claims          = CommonTestHelpers.GenerateList(keyName, 2)
            };

            RequestProperties item = new RequestProperties(options);

            Assert.AreEqual(0, item.Headers.Count());
            Assert.AreEqual(0, item.Cookies.Count());
            Assert.AreEqual(0, item.QueryString.Count());
            Assert.AreEqual(0, item.FormData.Count());
            Assert.AreEqual(0, item.ServerVariables.Count());
            Assert.AreEqual(0, item.Claims.Count());
        }
Example #4
0
        public void CreateOptionsConstructorUpdatesProperties()
        {
            var options = new RequestProperties.CreateOptions
            {
                Headers         = CommonTestHelpers.GenerateList(2),
                Cookies         = CommonTestHelpers.GenerateList(2),
                QueryString     = CommonTestHelpers.GenerateList(2),
                FormData        = CommonTestHelpers.GenerateList(2),
                ServerVariables = CommonTestHelpers.GenerateList(2),
                Claims          = CommonTestHelpers.GenerateList(2),
                InputStream     = $"Input stream {Guid.NewGuid()}"
            };

            RequestProperties item = new RequestProperties(options);

            Assert.AreEqual(JsonSerializer.Serialize(options.Headers), JsonSerializer.Serialize(item.Headers));
            Assert.AreEqual(JsonSerializer.Serialize(options.Cookies), JsonSerializer.Serialize(item.Cookies));
            Assert.AreEqual(JsonSerializer.Serialize(options.QueryString), JsonSerializer.Serialize(item.QueryString));
            Assert.AreEqual(JsonSerializer.Serialize(options.FormData), JsonSerializer.Serialize(item.FormData));
            Assert.AreEqual(JsonSerializer.Serialize(options.ServerVariables), JsonSerializer.Serialize(item.ServerVariables));
            Assert.AreEqual(JsonSerializer.Serialize(options.Claims), JsonSerializer.Serialize(item.Claims));
            Assert.AreEqual(options.InputStream, item.InputStream);
        }