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); }
public override Task WriteResponseBodyAsync(OutputFormatterContext context) { var response = context.ActionContext.HttpContext.Response; var selectedEncoding = context.SelectedEncoding; using (var nonDisposableStream = new NonDisposableStream(response.Body)) using (var writer = new StreamWriter(nonDisposableStream, selectedEncoding, 1024, leaveOpen: true)) { WriteObject(writer, context.Object); } return Task.FromResult(true); }
public override async Task WriteResponseBodyAsync(OutputFormatterContext context) { var contact = (Contact)context.Object; var builder = new StringBuilder(); builder.AppendLine("BEGIN:VCARD"); builder.AppendFormat("FN:{0}", contact.Name); builder.AppendLine(); builder.AppendLine("END:VCARD"); var responseStream = new NonDisposableStream(context.ActionContext.HttpContext.Response.Body); using (var writer = new StreamWriter(responseStream, context.SelectedEncoding, bufferSize: 1024)) { await writer.WriteAsync(builder.ToString()); } }
/// <inheritdoc /> public override Task WriteResponseBodyAsync([NotNull] OutputFormatterContext context) { var response = context.ActionContext.HttpContext.Response; var tempWriterSettings = WriterSettings.Clone(); tempWriterSettings.Encoding = context.SelectedEncoding; var innerStream = context.ActionContext.HttpContext.Response.Body; using (var outputStream = new NonDisposableStream(innerStream)) using (var xmlWriter = CreateXmlWriter(outputStream, tempWriterSettings)) { var obj = context.Object; var runtimeType = obj?.GetType(); var resolvedType = ResolveType(context.DeclaredType, runtimeType); var wrappingType = GetSerializableType(resolvedType); // Wrap the object only if there is a wrapping type. if (wrappingType != null && wrappingType != resolvedType) { var wrapperProvider = WrapperProviderFactories.GetWrapperProvider( new WrapperProviderContext( declaredType: resolvedType, isSerialization: true)); obj = wrapperProvider.Wrap(obj); } var xmlSerializer = GetCachedSerializer(wrappingType); xmlSerializer.Serialize(xmlWriter, obj); } return Task.FromResult(true); }