コード例 #1
0
        //public HttpResponseMessage Get()
        //{
        //    string nullSuggestFilename = @"samplejson.txt";

        //    var filepath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, nullSuggestFilename);
        //    //return new JsonResult { Data = File.ReadAllText(filepath), ContentType = "application/json" };
        //    return new HttpResponseMessage
        //    {
        //        Content = new StringContent(File.ReadAllText(filepath), Encoding.UTF8, "application/json")
        //    };
        //}

        public string Get()
        {
            var context        = new HttpContextWrapper(HttpContext.Current);
            var site           = context.Request["site"] as string ?? "unknown";
            var requestMessage = RaygunRequestMessageBuilder.Build(System.Web.HttpContext.Current.Request, null);

            new RaygunWebApiClient().SendInBackground(new RaygunMessage
            {
                OccurredOn = DateTime.UtcNow,
                Details    = new RaygunMessageDetails
                {
                    UserCustomData = new List <string> {
                        site
                    }.ToDictionary(x => x),
                    Request     = requestMessage,
                    GroupingKey = site,
                    Tags        = new List <string> {
                        "GSA"
                    },
                    Error = new RaygunErrorMessage {
                        Message = site
                    }
                }
            });

            var result = new List <Result>(0);
            var model  = new RootObject
            {
                Query   = string.Empty,
                Results = result
            };

            return(JsonConvert.SerializeObject(model));
        }
コード例 #2
0
ファイル: RaygunClient.cs プロジェクト: rise-x/raygun4net
        private RaygunRequestMessage BuildRequestMessage()
        {
            RaygunRequestMessage requestMessage = null;
            HttpContext          context        = HttpContext.Current;

            if (context != null)
            {
                HttpRequest request = null;
                try
                {
                    request = context.Request;
                }
                catch (HttpException ex)
                {
                    RaygunLogger.Instance.Error($"Failed to retrieve the HttpRequest due to: {ex.Message}");
                }

                if (request != null)
                {
                    requestMessage = RaygunRequestMessageBuilder.Build(request, _requestMessageOptions);
                }
            }

            return(requestMessage);
        }
コード例 #3
0
        public HttpResponseMessage Get()
        {
            string nullSearchFileName = @"emptygsaxml.xml";
            var    filepath           = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, nullSearchFileName);
            var    doc = XDocument.Load(filepath);

            var context        = new HttpContextWrapper(HttpContext.Current);
            var site           = context.Request["site"] as string ?? "unknown";
            var requestMessage = RaygunRequestMessageBuilder.Build(System.Web.HttpContext.Current.Request, null);

            new RaygunWebApiClient().SendInBackground(new RaygunMessage
            {
                OccurredOn = DateTime.UtcNow,
                Details    = new RaygunMessageDetails
                {
                    UserCustomData = new List <string> {
                        site
                    }.ToDictionary(x => x),
                    Request     = requestMessage,
                    GroupingKey = site,
                    Tags        = new List <string> {
                        "GSA"
                    },
                    Error = new RaygunErrorMessage {
                        Message = site
                    }
                }
            });

            return(new HttpResponseMessage
            {
                Content = new StringContent(doc.ToString(), Encoding.UTF8, "application/xml")
            });
        }
コード例 #4
0
        private RaygunRequestMessage BuildRequestMessage()
        {
            RaygunRequestMessage requestMessage = null;
            HttpContext          context        = HttpContext.Current;

            if (context != null)
            {
                HttpRequest request = null;
                try
                {
                    request = context.Request;
                }
                catch (HttpException ex)
                {
                    System.Diagnostics.Trace.WriteLine("Error retrieving HttpRequest {0}", ex.Message);
                }

                if (request != null)
                {
                    requestMessage = RaygunRequestMessageBuilder.Build(request, _requestMessageOptions);
                }
            }

            return(requestMessage);
        }
コード例 #5
0
        public void QueryStringTest()
        {
            var request = new HttpRequest("test", "http://google.com", "test=test");

            var message = RaygunRequestMessageBuilder.Build(request, null);

            Assert.That(message.QueryString, Contains.Item(new KeyValuePair <string, string>("test", "test")));
        }
コード例 #6
0
        /// <summary>
        /// Emit the provided log event to the sink.
        /// </summary>
        /// <param name="logEvent">The log event to write.</param>
        public void Emit(LogEvent logEvent)
        {
            //Include the log level as a tag.
            var tags = _tags.Concat(new [] { logEvent.Level.ToString() }).ToList();

            var properties = logEvent.Properties
                             .Select(pv => new { Name = pv.Key, Value = RaygunPropertyFormatter.Simplify(pv.Value) })
                             .ToDictionary(a => a.Name, b => b.Value);

            // Add the message
            properties.Add("RenderedLogMessage", logEvent.RenderMessage(_formatProvider));
            properties.Add("LogMessageTemplate", logEvent.MessageTemplate.Text);

            // Create new message
            var raygunMessage = new RaygunMessage
            {
                OccurredOn = logEvent.Timestamp.UtcDateTime
            };

            // Add exception when available
            if (logEvent.Exception != null)
            {
                raygunMessage.Details.Error = RaygunErrorMessageBuilder.Build(logEvent.Exception);
            }

            // Add user when requested
            if (!String.IsNullOrWhiteSpace(_userNameProperty) &&
                logEvent.Properties.ContainsKey(_userNameProperty) &&
                logEvent.Properties[_userNameProperty] != null)
            {
                raygunMessage.Details.User = new RaygunIdentifierMessage(logEvent.Properties[_userNameProperty].ToString());
            }

            // Add version when requested
            if (!String.IsNullOrWhiteSpace(_applicationVersionProperty) &&
                logEvent.Properties.ContainsKey(_applicationVersionProperty) &&
                logEvent.Properties[_applicationVersionProperty] != null)
            {
                raygunMessage.Details.Version = logEvent.Properties[_applicationVersionProperty].ToString();
            }

            // Build up the rest of the message
            raygunMessage.Details.Environment    = new RaygunEnvironmentMessage();
            raygunMessage.Details.Tags           = tags;
            raygunMessage.Details.UserCustomData = properties;
            raygunMessage.Details.MachineName    = Environment.MachineName;

            if (HttpContext.Current != null)
            {
                // Request message is built here instead of raygunClient.Send so RequestMessageOptions have to be constructed here
                var requestMessageOptions = new RaygunRequestMessageOptions(_ignoredFormFieldNames, Enumerable.Empty <string>(), Enumerable.Empty <string>(), Enumerable.Empty <string>());
                raygunMessage.Details.Request = RaygunRequestMessageBuilder.Build(HttpContext.Current.Request, requestMessageOptions);
            }

            // Submit
            //_client.SendInBackground(raygunMessage);
            _client.Send(raygunMessage);
        }
コード例 #7
0
        public void DataContainsReturnsFalseWhenCaseDoesNotMatch()
        {
            var rawData = "{\"UserName\":\"Raygun\",\"Password\":\"123456\"}";

            var containsSensitiveData = RaygunRequestMessageBuilder.DataContains(rawData, new List <string>()
            {
                "password"
            });

            Assert.AreEqual(containsSensitiveData, false);
        }
コード例 #8
0
        public void DataContainsReturnsTrueWhenMatchingOnExactCase()
        {
            var rawData = "{\"UserName\":\"Raygun\",\"Password\":\"123456\"}";

            var containsSensitiveData = RaygunRequestMessageBuilder.DataContains(rawData, new List <string>()
            {
                "Password"
            });

            Assert.AreEqual(containsSensitiveData, true);
        }
コード例 #9
0
        public void IgnoreFormField_CaseInsensitive()
        {
            var request = CreateWritableRequest();

            request.Form.Add("TESTFORMFIELD", "FormFieldValue");
            Assert.AreEqual(1, request.Form.Count);

            var options = new RaygunRequestMessageOptions(new string[] { "testformfield" }, Enumerable.Empty <string>(), Enumerable.Empty <string>(), Enumerable.Empty <string>());
            var message = RaygunRequestMessageBuilder.Build(request, options);

            Assert.AreEqual(0, message.Form.Count);
        }
コード例 #10
0
        public void DuplicateCookies()
        {
            var request = new HttpRequest("test", "http://google.com", "test=test");

            request.Cookies.Add(new HttpCookie("TestCookie", "CookieValue"));
            request.Cookies.Add(new HttpCookie("TestCookie", "CookieValue"));
            Assert.AreEqual(2, request.Cookies.Count);

            var message = RaygunRequestMessageBuilder.Build(request, new RaygunRequestMessageOptions());

            Assert.AreEqual(2, message.Cookies.Count);
            Assert.AreEqual(2, CookieCount(message, "TestCookie"));
        }
コード例 #11
0
        public void IgnoreCookie_Contains()
        {
            var request = new HttpRequest("test", "http://google.com", "test=test");

            request.Cookies.Add(new HttpCookie("TestCookieTest", "CookieValue"));
            request.Cookies.Add(new HttpCookie("TestCookie", "CookieValue"));
            request.Cookies.Add(new HttpCookie("CookieTest", "CookieValue"));
            Assert.AreEqual(3, request.Cookies.Count);

            var options = new RaygunRequestMessageOptions(_empty, _empty, new string[] { "*cookie*" }, _empty);
            var message = RaygunRequestMessageBuilder.Build(request, options);

            Assert.AreEqual(0, message.Cookies.Count);
        }
コード例 #12
0
        public void IgnoreFormField_Contains()
        {
            var request = CreateWritableRequest();

            request.Form.Add("TestFormFieldTest", "FormFieldValue");
            request.Form.Add("TestFormField", "FormFieldValue");
            request.Form.Add("FormFieldTest", "FormFieldValue");
            Assert.AreEqual(3, request.Form.Count);

            var options = new RaygunRequestMessageOptions(new string[] { "*formfield*" }, Enumerable.Empty <string>(), Enumerable.Empty <string>(), Enumerable.Empty <string>());
            var message = RaygunRequestMessageBuilder.Build(request, options);

            Assert.AreEqual(0, message.Form.Count);
        }
コード例 #13
0
        public void IgnoreAllFormFields()
        {
            var request = CreateWritableRequest();

            request.Form.Add("TestFormField1", "FormFieldValue");
            request.Form.Add("TestFormField2", "FormFieldValue");
            request.Form.Add("TestFormField3", "FormFieldValue");
            Assert.AreEqual(3, request.Form.Count);

            var options = new RaygunRequestMessageOptions(new string[] { "*" }, _empty, _empty, _empty);
            var message = RaygunRequestMessageBuilder.Build(request, options);

            Assert.AreEqual(0, message.Form.Count);
        }
コード例 #14
0
        public void IgnoreCookie_CaseInsensitive()
        {
            var request = new HttpRequest("test", "http://google.com", "test=test");

            request.Cookies.Add(new HttpCookie("TESTCOOKIE", "CookieValue"));
            request.Cookies.Add(new HttpCookie("TestCookie", "CookieValue"));
            request.Cookies.Add(new HttpCookie("testcookie", "CookieValue"));
            Assert.AreEqual(3, request.Cookies.Count);

            var options = new RaygunRequestMessageOptions(Enumerable.Empty <string>(), Enumerable.Empty <string>(), new string[] { "TeStCoOkIe" }, Enumerable.Empty <string>());
            var message = RaygunRequestMessageBuilder.Build(request, options);

            Assert.AreEqual(0, message.Cookies.Count);
        }
コード例 #15
0
        public void IgnoreAllCookies()
        {
            var request = new HttpRequest("test", "http://google.com", "test=test");

            request.Cookies.Add(new HttpCookie("TestCookie1", "CookieValue"));
            request.Cookies.Add(new HttpCookie("TestCookie2", "CookieValue"));
            request.Cookies.Add(new HttpCookie("TestCookie3", "CookieValue"));
            Assert.AreEqual(3, request.Cookies.Count);

            var options = new RaygunRequestMessageOptions(Enumerable.Empty <string>(), Enumerable.Empty <string>(), new string[] { "*" }, Enumerable.Empty <string>());
            var message = RaygunRequestMessageBuilder.Build(request, options);

            Assert.AreEqual(0, message.Cookies.Count);
        }
コード例 #16
0
        public void IgnoreMultipleCookies()
        {
            var request = new HttpRequest("test", "http://google.com", "test=test");

            request.Cookies.Add(new HttpCookie("TestCookie1", "CookieValue"));
            request.Cookies.Add(new HttpCookie("TestCookie2", "CookieValue"));
            request.Cookies.Add(new HttpCookie("TestCookie3", "CookieValue"));
            Assert.AreEqual(3, request.Cookies.Count);

            var options = new RaygunRequestMessageOptions(_empty, _empty, new string[] { "TestCookie1", "TestCookie3" }, _empty);
            var message = RaygunRequestMessageBuilder.Build(request, options);

            Assert.AreEqual(1, message.Cookies.Count);
            Assert.AreEqual(1, CookieCount(message, "TestCookie2"));
        }
コード例 #17
0
        public void IgnoreMultipleFormFields()
        {
            var request = CreateWritableRequest();

            request.Form.Add("TestFormField1", "FormFieldValue");
            request.Form.Add("TestFormField2", "FormFieldValue");
            request.Form.Add("TestFormField3", "FormFieldValue");
            Assert.AreEqual(3, request.Form.Count);

            var options = new RaygunRequestMessageOptions(new string[] { "TestFormField1", "TestFormField3" }, Enumerable.Empty <string>(), Enumerable.Empty <string>(), Enumerable.Empty <string>());
            var message = RaygunRequestMessageBuilder.Build(request, options);

            Assert.AreEqual(1, message.Form.Count);
            Assert.IsTrue(message.Form.Contains("TestFormField2"));
        }
コード例 #18
0
        public void RawDataRemainsUnchangedWhenParsingFails()
        {
            var rawData = "I am unchanged!";

            var options = new RaygunRequestMessageOptions();

            options.AddSensitiveFieldNames("password");

            Assert.AreEqual(rawData.Length, 15);

            var filteredData = RaygunRequestMessageBuilder.StripSensitiveValues(rawData, options);

            Assert.NotNull(filteredData);
            Assert.AreEqual(filteredData.Length, 15);
            Assert.AreEqual(filteredData, "I am unchanged!");
        }
コード例 #19
0
        public void FormFields()
        {
            var request = CreateWritableRequest();

            request.Form.Add("TestFormField1", "FormFieldValue");
            request.Form.Add("TestFormField2", "FormFieldValue");
            request.Form.Add("TestFormField3", "FormFieldValue");
            Assert.AreEqual(3, request.Form.Count);

            var message = RaygunRequestMessageBuilder.Build(request, new RaygunRequestMessageOptions());

            Assert.AreEqual(3, message.Form.Count);
            Assert.IsTrue(message.Form.Contains("TestFormField1"));
            Assert.IsTrue(message.Form.Contains("TestFormField2"));
            Assert.IsTrue(message.Form.Contains("TestFormField3"));
        }
コード例 #20
0
        public void IgnoreCookie_StartsWith()
        {
            var request = new HttpRequest("test", "http://google.com", "test=test");

            request.Cookies.Add(new HttpCookie("TestCookieTest", "CookieValue"));
            request.Cookies.Add(new HttpCookie("TestCookie", "CookieValue"));
            request.Cookies.Add(new HttpCookie("CookieTest", "CookieValue"));
            Assert.AreEqual(3, request.Cookies.Count);

            var options = new RaygunRequestMessageOptions(Enumerable.Empty <string>(), Enumerable.Empty <string>(), new string[] { "cookie*" }, Enumerable.Empty <string>());
            var message = RaygunRequestMessageBuilder.Build(request, options);

            Assert.AreEqual(2, message.Cookies.Count);
            Assert.AreEqual(1, CookieCount(message, "TestCookieTest"));
            Assert.AreEqual(1, CookieCount(message, "TestCookie"));
        }
コード例 #21
0
        public void IgnoreFormField_EndsWith()
        {
            var request = CreateWritableRequest();

            request.Form.Add("TestFormFieldTest", "FormFieldValue");
            request.Form.Add("TestFormField", "FormFieldValue");
            request.Form.Add("FormFieldTest", "FormFieldValue");
            Assert.AreEqual(3, request.Form.Count);

            var options = new RaygunRequestMessageOptions(new string[] { "*formfield" }, _empty, _empty, _empty);
            var message = RaygunRequestMessageBuilder.Build(request, options);

            Assert.AreEqual(2, message.Form.Count);
            Assert.IsTrue(message.Form.Contains("TestFormFieldTest"));
            Assert.IsTrue(message.Form.Contains("FormFieldTest"));
        }
コード例 #22
0
        public IRaygunMessageBuilder SetHttpDetails(HttpContext context, RaygunRequestMessageOptions options = null)
        {
            if (context != null)
            {
                HttpRequest request;
                try
                {
                    request = context.Request;
                }
                catch (HttpException)
                {
                    return(this);
                }
                _raygunMessage.Details.Request = RaygunRequestMessageBuilder.Build(request, options);
            }

            return(this);
        }
コード例 #23
0
        public IRaygunMessageBuilder SetHttpDetails(OwinEnvironment environment)
        {
            if (environment != null)
            {
                _raygunMessage.Details.Request = RaygunRequestMessageBuilder.Build(environment);

                if (_raygunMessage.Details.Response == null)
                {
                    _raygunMessage.Details.Response = new RaygunResponseMessage
                    {
                        StatusCode        = environment.Get <int>(OwinConstants.ResponseStatusCode),
                        StatusDescription = environment.Get <string>(OwinConstants.ResponseReasonPhrase)
                    };
                }
            }

            return(this);
        }
コード例 #24
0
        private RaygunRequestMessage BuildRequestMessage()
        {
            RaygunRequestMessage requestMessage = null;
            HttpContext          context        = HttpContext.Current;

            if (context != null)
            {
                HttpRequest request = null;
                try
                {
                    request = context.Request;
                }
                catch (HttpException) { }

                if (request != null)
                {
                    requestMessage = RaygunRequestMessageBuilder.Build(request, _requestMessageOptions);
                }
            }

            return(requestMessage);
        }
コード例 #25
0
        public void HttpMethodTest()
        {
            var message = RaygunRequestMessageBuilder.Build(_defaultRequest, null);

            Assert.That(message.HttpMethod, Is.EqualTo("GET"));
        }
コード例 #26
0
        public void UrlTest()
        {
            var message = RaygunRequestMessageBuilder.Build(_defaultRequest, null);

            Assert.That(message.Url, Is.EqualTo("/"));
        }
コード例 #27
0
        public void HostNameTest()
        {
            var message = RaygunRequestMessageBuilder.Build(_defaultRequest, null);

            Assert.That(message.HostName, Is.EqualTo("google.com"));
        }