Beispiel #1
0
        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);
        }
Beispiel #2
0
        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));
        }