in src/directLineStreaming.ts [50:84]
async processRequest(request: BFSE.IReceiveRequest, logger?: any): Promise<BFSE.StreamingResponse> {
const streams = [...request.streams];
const stream0 = streams.shift();
const activitySetJson = await stream0.readAsString();
const activitySet = JSON.parse(activitySetJson);
if (activitySet.activities.length !== 1) {
// Only one activity is expected in a set in streaming
this.subscriber.error(new Error('there should be exactly one activity'));
return BFSE.StreamingResponse.create(500);
}
const activity = activitySet.activities[0];
if (streams.length > 0) {
const attachments = [...activity.attachments];
let stream: BFSE.ContentStream;
while (stream = streams.shift()) {
const attachment = await stream.readAsString();
const dataUri = "data:text/plain;base64," + attachment;
attachments.push({ contentType: stream.contentType, contentUrl: dataUri });
}
activity.attachments = attachments;
}
if (this.shouldQueue()) {
this.activityQueue.push(activity);
} else {
this.subscriber.next(activity);
}
return BFSE.StreamingResponse.create(200);
}