コード例 #1
0
        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);
        }
コード例 #2
0
 public MessagesLink Update(string bucketKey, RunscopeMessage runscopeMessage) 
 {
     var newlink = CloneLink();
     newlink.BucketKey = bucketKey;
     newlink.RunscopeMessage = runscopeMessage;
     return newlink;
 }
コード例 #3
0
        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;
        }
コード例 #4
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);
        }
コード例 #5
0
        public MessagesLink Update(string bucketKey, RunscopeMessage runscopeMessage)
        {
            var newlink = CloneLink();

            newlink.BucketKey       = bucketKey;
            newlink.RunscopeMessage = runscopeMessage;
            return(newlink);
        }
コード例 #6
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));
        }
コード例 #7
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);
        }
コード例 #8
0
        public HttpRequestMessage BuildPOSTRequest(string bucketKey, RunscopeMessage runscopeMessage)
        {
            var requestMessage = new HttpRequestMessage
            {
                Method     = HttpMethod.Post,
                RequestUri = new Uri(Target.OriginalString.Replace("{bucketkey}", bucketKey), UriKind.Relative),
                Content    = runscopeMessage.ToHttpContent()
            };

            requestMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
            return(requestMessage);
        }
コード例 #9
0
        public HttpRequestMessage BuildPOSTRequest(string bucketKey, RunscopeMessage runscopeMessage)
        {
            var requestMessage = new HttpRequestMessage
            {
                Method = HttpMethod.Post,
                RequestUri = new Uri(Target.OriginalString.Replace("{bucketkey}", bucketKey), UriKind.Relative),
                Content = runscopeMessage.ToHttpContent()
            };

            requestMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
            return requestMessage;
        }
コード例 #10
0
        public RunscopeResponse(HttpResponseMessage httpResponse)
        {
            _jResponse["status"] = (int)httpResponse.StatusCode;

            var jheaders = new JObject();

            RunscopeMessage.AddHeaders(httpResponse.Headers, jheaders);

            if (httpResponse.Content != null)
            {
                RunscopeMessage.AddHeaders(httpResponse.Content.Headers, jheaders);
                _jResponse["body"] = httpResponse.Content.ReadAsStringAsync().Result;
            }
            if (jheaders.Properties().Any())
            {
                _jResponse["headers"] = jheaders;
            }
        }
コード例 #11
0
        public RunscopeRequest(HttpRequestMessage httpRequest)
        {
            if (httpRequest.RequestUri == null)
            {
                throw new ArgumentException("Request Uri is required for a Runscope Request");
            }
            _jRequest["method"] = httpRequest.Method.ToString();
            _jRequest["url"]    = httpRequest.RequestUri.OriginalString;

            var jheaders = new JObject();

            RunscopeMessage.AddHeaders(httpRequest.Headers, jheaders);
            if (httpRequest.Content != null)
            {
                RunscopeMessage.AddHeaders(httpRequest.Content.Headers, jheaders);
                _jRequest["body"] = httpRequest.Content.ReadAsStringAsync().Result;
            }

            if (jheaders.Properties().Any())
            {
                _jRequest["headers"] = jheaders;
            }
        }
コード例 #12
0
        public void CreateEmptyRunscopeMessage()
        {
            var message = new RunscopeMessage();

            Assert.NotNull(message);
        }