protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request,
            CancellationToken cancellationToken)
        {
            
//            var messageId = Guid.NewGuid();
            var runscopeRequest = new RunscopeRequest(request);  // Preread to ensure non-rewindable stream is not consumed by app

            //var runscopeMessage = new RunscopeMessage()
            //{
            //    UniqueIdentifier = messageId,
            //    Request = runscopeRequest
            //};

//            HandleFailedMessageLog(_RunscopeClient.SendAsync(messagesLink.Update(_bucketKey, runscopeMessage).CreateRequest()));

            var response = await base.SendAsync(request, cancellationToken);

            if (_filter == null || _filter(request, response))
            {
                
                var runscopeMessage2 = new RunscopeMessage()
                {
//                UniqueIdentifier = messageId,
                    Request = runscopeRequest,
                    Response = new RunscopeResponse(response)
                };

                var messagesLink = new MessagesLink();
                HandleFailedMessageLog(
                    _RunscopeClient.SendAsync(messagesLink.Update(_bucketKey, runscopeMessage2).CreateRequest()));
            }
            return response;
        }
        protected override async Task <HttpResponseMessage> SendAsync(HttpRequestMessage request,
                                                                      CancellationToken cancellationToken)
        {
//            var messageId = Guid.NewGuid();
            var runscopeRequest = new RunscopeRequest(request);  // Preread to ensure non-rewindable stream is not consumed by app

            //var runscopeMessage = new RunscopeMessage()
            //{
            //    UniqueIdentifier = messageId,
            //    Request = runscopeRequest
            //};

//            HandleFailedMessageLog(_RunscopeClient.SendAsync(messagesLink.Update(_bucketKey, runscopeMessage).CreateRequest()));

            var response = await base.SendAsync(request, cancellationToken);

            if (_filter == null || _filter(request, response))
            {
                var runscopeMessage2 = new RunscopeMessage()
                {
//                UniqueIdentifier = messageId,
                    Request  = runscopeRequest,
                    Response = new RunscopeResponse(response)
                };

                var messagesLink = new MessagesLink();
                HandleFailedMessageLog(
                    _RunscopeClient.SendAsync(messagesLink.Update(_bucketKey, runscopeMessage2).CreateRequest()));
            }
            return(response);
        }
Exemple #3
0
        protected override async Task <HttpResponseMessage> SendAsync(HttpRequestMessage request,
                                                                      CancellationToken cancellationToken)
        {
            var runscopeRequest = new RunscopeRequest(request);  // Preread to ensure non-rewindable stream is not consumed by app

            var response = await base.SendAsync(request, cancellationToken);

            string bucket = _bucketKey;

            if (_bucketFilter != null)
            {
                bucket = _bucketFilter(request, response);
            }

            if (string.IsNullOrWhiteSpace(bucket))
            {
                return(response);
            }

            if (_filter == null || _filter(request, response))
            {
                var runscopeMessage = new RunscopeMessage()
                {
                    Request  = runscopeRequest,
                    Response = new RunscopeResponse(response)
                };

                var messagesLink = new MessagesLink();
                HandleFailedMessageLog(
                    _RunscopeClient.SendAsync(messagesLink.Update(bucket, runscopeMessage).CreateRequest()));
            }
            return(response);
        }
Exemple #4
0
        public HttpRequestMessage BuildPOSTRequest(string bucketKey, HttpRequestMessage request, HttpResponseMessage response)
        {
            var runscopeRequest  = new RunscopeRequest(request);
            var runscopeResponse = new RunscopeResponse(response);
            var runscopeMessage  = new RunscopeMessage
            {
                Request = runscopeRequest, Response = runscopeResponse
            };

            return(BuildPOSTRequest(bucketKey, runscopeMessage));
        }
        public HttpRequestMessage BuildPOSTRequest(string bucketKey, HttpRequestMessage request, HttpResponseMessage response)
        {
            var runscopeRequest = new RunscopeRequest(request);
            var runscopeResponse = new RunscopeResponse(response);
            var runscopeMessage = new RunscopeMessage
            {
                Request = runscopeRequest, Response = runscopeResponse
            };

            return BuildPOSTRequest(bucketKey, runscopeMessage);
        }
        public void CreateMinimumRunscopeRequest()
        {
            var httpRequestMessage = new HttpRequestMessage() { RequestUri = new Uri("http://example.org")};
            var message = new RunscopeRequest(httpRequestMessage);
            var jrequest = message.ToJObject();
            var expected = 
                new JObject(new[]
                {
                    new JProperty("method", "GET"),
                    new JProperty("url", "http://example.org"),
                });

            Assert.Equal(expected,jrequest);
        }
        public void CreateRunscopeRequestWithMultiValueHeaders()
        {
            var httpRequestMessage = new HttpRequestMessage() { RequestUri = new Uri("http://example.org") };
            httpRequestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml"));
            httpRequestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
 
            var message = new RunscopeRequest(httpRequestMessage);
            var jrequest = message.ToJObject();
            var expected =
                new JObject(new[]
                {
                    new JProperty("method", "GET"),
                    new JProperty("url", "http://example.org"),
                    new JProperty("headers", new JObject(new []
                    {
                        new JProperty("Accept","application/xml, application/json"),
                      } )),
                });

            Assert.Equal(expected, jrequest);
        }
        public void CreateRunscopeRequestWithSingleValueHeaders()
        {
            var httpRequestMessage = new HttpRequestMessage() { RequestUri = new Uri("http://example.org") };
            httpRequestMessage.Headers.Authorization = new AuthenticationHeaderValue("basic","foo");
            httpRequestMessage.Headers.CacheControl= new CacheControlHeaderValue() {MaxAge = new TimeSpan(0,0,0,30)};
            var message = new RunscopeRequest(httpRequestMessage);
            var jrequest = message.ToJObject();
            var expected =
                new JObject(new[]
                {
                    new JProperty("method", "GET"),
                    new JProperty("url", "http://example.org"),
                    new JProperty("headers", new JObject(new []
                    {
                        new JProperty("Authorization","basic foo"),
                        new JProperty("Cache-Control","max-age=30")
                    
                    } )),
                });

            Assert.Equal(expected, jrequest);
        }
        public void CreateRunscopeRequestWithBody()
        {
            var httpRequestMessage = new HttpRequestMessage() { RequestUri = new Uri("http://example.org") };
            httpRequestMessage.Content = new StringContent("This is some text");
            
            var message = new RunscopeRequest(httpRequestMessage);
            var jrequest = message.ToJObject();
            var expected =
                new JObject(new[]
                {
                    new JProperty("method", "GET"),
                    new JProperty("url", "http://example.org"),
                    new JProperty("body", "This is some text"),
                    new JProperty("headers", new JObject(new []
                    {
                        new JProperty("Content-Type","text/plain; charset=utf-8"),
                      } ))

                });

            Assert.Equal(expected, jrequest);
        }