public async Task PushStreamContent_can_be_used_asynchronously() { const string text = "will wait for 2 seconds without blocking"; var content = new PushStreamContent(async(stream, cont, ctx) => { await Task.Delay(2000); var bytes = Encoding.UTF8.GetBytes(text); stream.Write(bytes, 0, bytes.Length); stream.Close(); }); content.Headers.ContentType = new MediaTypeWithQualityHeaderValue("text/plain"); // Assert var sw = new Stopwatch(); sw.Start(); var receivedText = await content.ReadAsStringAsync(); sw.Stop(); Assert.Equal(text, receivedText); Assert.True(sw.ElapsedMilliseconds > 1500); }
PushStreamContent_can_be_used_when_content_is_provided_by_a_stream_writer() { var xml = new XElement("root", new XElement("child1", "text"), new XElement("child2", "text") ); var content = new PushStreamContent((stream, cont, ctx) => { using (var writer = XmlWriter.Create(stream, new XmlWriterSettings { CloseOutput = true })) { xml.WriteTo(writer); } }); content.Headers.ContentType = new MediaTypeWithQualityHeaderValue("application/xml"); // Assert var text = await content.ReadAsStringAsync(); Assert.True(text.Contains("<child1")); }
public async Task <IHttpActionResult> PushStream() { string content = await _pushStreamContent.ReadAsStringAsync(); return(Json(content)); }