public void Response_NotFound_Success() { var r = StreamingResponse.NotFound(); Assert.Equal((int)HttpStatusCode.NotFound, r.StatusCode); Assert.Null(r.Streams); }
public override async Task <StreamingResponse> ProcessRequestAsync(ReceiveRequest request, ILogger <RequestHandler> logger, object context = null, CancellationToken cancellationToken = default(CancellationToken)) { if (request.Verb == "POST" && request.Path == _postActivitiesPath) { var activitySet = await ReadOptionalBodyAsJson <ActivitySet>(request).ConfigureAwait(false); if (request.Streams.Count > 1) { var attachmentDictionary = request.Streams.Skip(1).ToDictionary(a => a.Id); int streamsMappedtoActivitiesCount = 0; foreach (var activity in activitySet.Activities) { if (activity.Attachments == null || activity.Attachments.Count == 0) { continue; } for (int i = 0; i < activity.Attachments.Count(); i++) { if (string.Equals(activity.Attachments[i].ContentType, "bf-stream", StringComparison.InvariantCultureIgnoreCase)) { var id = Guid.Parse(activity.Attachments[i].Content.ToString()); var stream = attachmentDictionary[id]; activity.Attachments[i] = new Attachment() { ContentType = stream.ContentType, Content = stream.Stream }; streamsMappedtoActivitiesCount++; } } if (streamsMappedtoActivitiesCount == request.Streams.Count - 1) { break; } } } _receiveActivities(activitySet); return(StreamingResponse.OK()); } return(StreamingResponse.NotFound()); }
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()); }
public override async Task <StreamingResponse> ProcessRequestAsync(ReceiveRequest request, ILogger <RequestHandler> logger, object context = null, CancellationToken cancellationToken = default) { var routeContext = _router.Route(request); if (routeContext != null) { try { var responseBody = await routeContext.Action.Action(request, routeContext.RouteData).ConfigureAwait(false); return(StreamingResponse.OK(new StringContent(JsonConvert.SerializeObject(responseBody, SerializationSettings.DefaultSerializationSettings), Encoding.UTF8, SerializationSettings.ApplicationJson))); } catch (Exception ex) { _botTelemetryClient.TrackException(ex); return(StreamingResponse.InternalServerError()); } } else { return(StreamingResponse.NotFound()); } }