示例#1
0
        public void Response_NotFound_Success()
        {
            var r = StreamingResponse.NotFound();

            Assert.Equal((int)HttpStatusCode.NotFound, r.StatusCode);
            Assert.Null(r.Streams);
        }
示例#2
0
        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());
        }
示例#4
0
        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());
            }
        }