public void Response(HttpPipelineResponse response) { if (IsEnabled(EventLevel.Informational, EventKeywords.None)) { Response(response.RequestId, response.Status, FormatHeaders(response.Headers)); } }
public async Task NonSeekableResponsesErrorsAreLoggedInTextBlocks() { HttpPipelineResponse response = await SendRequest( isSeekable : false, mockResponse => mockResponse.AddHeader(new HttpHeader("Content-Type", "text/xml")) ); EventWrittenEventArgs[] errorContentEvents = _listener.EventsById(ErrorResponseContentTextBlockEvent).ToArray(); Assert.AreEqual(2, errorContentEvents.Length); Assert.AreEqual(EventLevel.Informational, errorContentEvents[0].Level); Assert.AreEqual("ErrorResponseContentTextBlock", errorContentEvents[0].EventName); Assert.AreEqual(response.RequestId, errorContentEvents[0].GetProperty <string>("requestId")); Assert.AreEqual(0, errorContentEvents[0].GetProperty <int>("blockNumber")); Assert.AreEqual("Hello ", errorContentEvents[0].GetProperty <string>("content")); Assert.AreEqual(EventLevel.Informational, errorContentEvents[1].Level); Assert.AreEqual("ErrorResponseContentTextBlock", errorContentEvents[1].EventName); Assert.AreEqual(response.RequestId, errorContentEvents[1].GetProperty <string>("requestId")); Assert.AreEqual(1, errorContentEvents[1].GetProperty <int>("blockNumber")); Assert.AreEqual("world", errorContentEvents[1].GetProperty <string>("content")); CollectionAssert.IsEmpty(_listener.EventsById(ErrorResponseContentEvent)); }
public async Task ResponseContentAsync(HttpPipelineResponse response, CancellationToken cancellationToken) { if (IsEnabled(EventLevel.Verbose, EventKeywords.None)) { ResponseContent(response.RequestId, await FormatContentAsync(response.ResponseContentStream)); } }
public async Task ErrorResponseContentTextAsync(HttpPipelineResponse response, Encoding encoding, CancellationToken cancellationToken) { if (IsEnabled(EventLevel.Informational, EventKeywords.None)) { ErrorResponseContentText(response.RequestId, await FormatContentStringAsync(response.ResponseContentStream, encoding).ConfigureAwait(false)); } }
public async Task OriginalContentStreamIsReturnedIfNotAsync() { var content = new AsyncContent() { MemoryStream = new MemoryStream(new byte[] { 1, 2, 3, 4, 5 }) }; var httpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK) { Content = content }; var mockHandler = new MockHttpClientHandler(httpRequestMessage => Task.FromResult(httpResponseMessage)); var transport = new HttpClientTransport(new HttpClient(mockHandler)); HttpPipelineRequest request = transport.CreateRequest(null); request.SetRequestLine(HttpPipelineMethod.Get, new Uri("http://example.com:340")); HttpPipelineResponse response = await ExecuteRequest(request, transport); byte[] data = new byte[5]; content.CreateContentReadStreamAsyncCompletionSource.SetResult(null); Stream stream = response.ResponseContentStream; Assert.AreSame(content.MemoryStream, stream); }
public Response(HttpPipelineResponse httpResponse) { if (httpResponse == null) { throw new ArgumentNullException(nameof(httpResponse)); } _httpResponse = httpResponse; }
public async Task SeekableTextResponsesErrorsAreLoggedInText() { HttpPipelineResponse response = await SendRequest( isSeekable : true, mockResponse => mockResponse.AddHeader(new HttpHeader("Content-Type", "text/xml")) ); EventWrittenEventArgs errorContentEvent = _listener.SingleEventById(ErrorResponseContentTextEvent); Assert.AreEqual(EventLevel.Informational, errorContentEvent.Level); Assert.AreEqual("ErrorResponseContentText", errorContentEvent.EventName); Assert.AreEqual(response.RequestId, errorContentEvent.GetProperty <string>("requestId")); Assert.AreEqual("Hello world", errorContentEvent.GetProperty <string>("content")); }
public async Task ContentStreamIsReturnedSynchronously() { var content = new AsyncContent() { MemoryStream = new MemoryStream(new byte[] { 1, 2, 3, 4, 5 }) }; var httpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK) { Content = content }; var mockHandler = new MockHttpClientHandler(httpRequestMessage => Task.FromResult(httpResponseMessage)); var transport = new HttpClientTransport(new HttpClient(mockHandler)); HttpPipelineRequest request = transport.CreateRequest(null); request.SetRequestLine(HttpPipelineMethod.Get, new Uri("http://example.com:340")); HttpPipelineResponse response = await ExecuteRequest(request, transport); byte[] data = new byte[5]; Stream stream = response.ResponseContentStream; Task <int> firstRead = stream.ReadAsync(data, 0, 5); Assert.False(firstRead.IsCompleted); content.CreateContentReadStreamAsyncCompletionSource.SetResult(null); Assert.AreEqual(5, await firstRead); // Exercise stream features stream.Position = 3; stream.Seek(-1, SeekOrigin.Current); var secondReadLength = await stream.ReadAsync(data, 0, 5); Assert.AreEqual(3, secondReadLength); Assert.False(stream.CanWrite); Assert.True(stream.CanSeek); Assert.True(stream.CanRead); Assert.Throws <NotSupportedException>(() => stream.Write(null, 0, 0)); Assert.Throws <NotSupportedException>(() => stream.SetLength(5)); }
public async Task NonSeekableResponsesErrorsAreLoggedInBlocks() { HttpPipelineResponse response = await SendRequest(isSeekable : false); EventWrittenEventArgs[] errorContentEvents = _listener.EventsById(ErrorResponseContentBlockEvent).ToArray(); Assert.AreEqual(2, errorContentEvents.Length); Assert.AreEqual(EventLevel.Informational, errorContentEvents[0].Level); Assert.AreEqual("ErrorResponseContentBlock", errorContentEvents[0].EventName); Assert.AreEqual(response.RequestId, errorContentEvents[0].GetProperty <string>("requestId")); Assert.AreEqual(0, errorContentEvents[0].GetProperty <int>("blockNumber")); CollectionAssert.AreEqual(new byte[] { 72, 101, 108, 108, 111, 32 }, errorContentEvents[0].GetProperty <byte[]>("content")); Assert.AreEqual(EventLevel.Informational, errorContentEvents[1].Level); Assert.AreEqual("ErrorResponseContentBlock", errorContentEvents[1].EventName); Assert.AreEqual(response.RequestId, errorContentEvents[1].GetProperty <string>("requestId")); Assert.AreEqual(1, errorContentEvents[1].GetProperty <int>("blockNumber")); CollectionAssert.AreEqual(new byte[] { 119, 111, 114, 108, 100 }, errorContentEvents[1].GetProperty <byte[]>("content")); CollectionAssert.IsEmpty(_listener.EventsById(ErrorResponseContentEvent)); }
public void ResponseDelay(HttpPipelineResponse response, long delayMilliseconds) { ResponseDelayCore(delayMilliseconds); }
public void ErrorResponse(HttpPipelineResponse response) => ErrorResponse(response.Status);
public void ProcessingResponse(HttpPipelineResponse response) => ProcessingResponse(response.ToString());