public override async Task WriteResponseBodyAsync(OutputFormatterWriteContext context) { var response = context.HttpContext.Response; //var selectedEncoding = context.ContentType.Encoding == null ? Encoding.UTF8 : context.ContentType.Encoding; var selectedEncoding = Encoding.UTF8; var value = context.Object; if (value is IEdmModel || context.HttpContext.ODataProperties().Model == null) { using (var delegatingStream = new NonDisposableStream(response.Body)) using (var writer = new StreamWriter(delegatingStream, selectedEncoding, 1024, leaveOpen: true)) { if (value is IEdmModel) { WriteMetadata(writer, (IEdmModel)value); } using (var jsonWriter = CreateJsonWriter(writer)) { var jsonSerializer = CreateJsonSerializer(); jsonSerializer.Serialize(jsonWriter, value); } } } else { using (var delegatingStream = new NonDisposableStream(response.Body)) { await WriteObjectAsync(delegatingStream, context); } } }
public void InnerStreamIsNotFlushedOnDispose() { var stream = FlushReportingStream.GetThrowingStream(); var nonDisposableStream = new NonDisposableStream(stream); // Act & Assert nonDisposableStream.Dispose(); }
public async Task InnerStreamIsNotFlushedOnFlushAsync() { // Arrange var stream = FlushReportingStream.GetThrowingStream(); var nonDisposableStream = new NonDisposableStream(stream); // Act & Assert await nonDisposableStream.FlushAsync(); }
public void InnerStreamIsOpenOnDispose() { // Arrange var innerStream = new MemoryStream(); var nonDisposableStream = new NonDisposableStream(innerStream); // Act nonDisposableStream.Dispose(); // Assert Assert.True(innerStream.CanRead); }