in libraries/Streaming/DirectLineRequestHandler.cs [29:68]
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();
}