private static StreamDescription GetStreamDescription(ResponseMessageStream stream) { var description = new StreamDescription() { Id = stream.Id.ToString("D"), }; if (stream.Content.Headers.TryGetValues(HeaderNames.ContentType, out IEnumerable <string> contentType)) { description.ContentType = contentType?.FirstOrDefault(); } if (stream.Content.Headers.TryGetValues(HeaderNames.ContentLength, out IEnumerable <string> contentLength)) { var value = contentLength?.FirstOrDefault(); if (value != null && int.TryParse(value, out int length)) { description.Length = length; } } else { description.Length = (int?)stream.Content.Headers.ContentLength; } return(description); }
public async Task HttpContentStreamDisassembler_ObjectContent_SendsAsFixedLength() { var sender = new PayloadSender(); var transport = new MockTransportSender(); sender.Connect(transport); var content = new ResponseMessageStream(Guid.NewGuid()) { Content = new StringContent("{'a': 55}", Encoding.UTF8, "application/json"), }; var disassembler = new ResponseMessageStreamDisassembler(sender, content); await disassembler.DisassembleAsync(); Assert.AreEqual(2, transport.Buffers.Count); }
public async Task HttpContentStreamDisassembler_StringContent_SendsAsFixedLength() { var sender = new PayloadSender(); var transport = new MockTransportSender(); sender.Connect(transport); var content = new ResponseMessageStream(Guid.NewGuid()) { Content = new StringContent("blah blah blah", Encoding.ASCII), }; var disassembler = new ResponseMessageStreamDisassembler(sender, content); await disassembler.DisassembleAsync(); Assert.Equal(2, transport.Buffers.Count); }
public async Task HttpContentStreamDisassembler_ObjectContent_SendsAsFixedLength() { var sender = new PayloadSender(); var transport = new MockTransportSender(); sender.Connect(transport); var content = new ResponseMessageStream(Guid.NewGuid()) { Content = new ObjectContent(typeof(string), "{'a': 55}", new JsonMediaTypeFormatter()), }; var disassembler = new ResponseMessageStreamDisassembler(sender, content); await disassembler.DisassembleAsync(); Assert.AreEqual(2, transport.Buffers.Count); }
public async Task HttpContentStreamDisassembler_StreamContent_SendsAsVariableLength() { var sender = new PayloadSender(); var transport = new MockTransportSender(); sender.Connect(transport); var stream = new PayloadStream(new PayloadStreamAssembler(null, Guid.NewGuid(), "blah", 100)); var content = new ResponseMessageStream(Guid.NewGuid()) { Content = new StreamContent(stream), }; stream.Write(new byte[100], 0, 100); var disassembler = new ResponseMessageStreamDisassembler(sender, content); await disassembler.DisassembleAsync(); Assert.AreEqual(3, transport.Buffers.Count); }