public void ReceiveExtensions_ReadBodyAsJson_Streams_Zero() { var request = new ReceiveRequest(); var result = request.ReadBodyAsJson <dynamic>(); Assert.Null(result); }
public void ReceiveExtensions_ReadBodyAsJson_Streams() { var activity = new Activity { Type = ActivityTypes.Message }; var stringInput = JsonConvert.SerializeObject(activity); var stream = new MemoryStream(Encoding.UTF8.GetBytes(stringInput)); var mockContentStream = new Mock <IContentStream>(); mockContentStream.Setup(e => e.Stream).Returns(stream); var request = new ReceiveRequest { Streams = new List <IContentStream> { mockContentStream.Object } }; var result = request.ReadBodyAsJson <Activity>(); Assert.NotNull(result); Assert.Equal(activity.Type, result.Type); }
public override async Task <StreamingResponse> ProcessRequestAsync(ReceiveRequest request, ILogger <RequestHandler> logger = null, object context = null, CancellationToken cancellationToken = default(CancellationToken)) { if (request.Verb == "POST") { var firstActivity = request.ReadBodyAsJson <Activity>(); if (request.Streams.Count > 1) { if (firstActivity == null) { throw new InvalidOperationException("Attachment streams received with activity set, but no activities present in activity set."); } var streamAttachments = new List <Attachment>(); for (int i = 1; i < request.Streams.Count; i++) { var stream = request.Streams[i].Stream; streamAttachments.Add(new Attachment() { ContentType = request.Streams[i].ContentType, Content = request.Streams[i].Stream }); } if (firstActivity.Attachments != null) { firstActivity.Attachments = firstActivity.Attachments.Concat(streamAttachments).ToArray(); } else { firstActivity.Attachments = streamAttachments.ToArray(); } } _receiveActivities(firstActivity); return(StreamingResponse.OK()); } return(StreamingResponse.NotFound()); }