UNPKG

botframework-streaming

Version:

Streaming library for the Microsoft Bot Framework

78 lines (68 loc) 3.35 kB
/** * @module botframework-streaming */ /** * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. */ import { PayloadSender } from '../payloadTransport/payloadSender'; import { StreamingRequest } from '../streamingRequest'; import { StreamingResponse } from '../streamingResponse'; import { CancelDisassembler } from '../disassemblers/cancelDisassembler'; import { HttpContentStreamDisassembler } from '../disassemblers/httpContentStreamDisassembler'; import { RequestDisassembler } from '../disassemblers/requestDisassembler'; import { ResponseDisassembler } from '../disassemblers/responseDisassembler'; import { PayloadTypes } from './payloadTypes'; /** * Send operations for streaming payloads. */ export class SendOperations { private readonly payloadSender: PayloadSender; /** * Initializes a new instance of the [SendOperations](xref:botframework-streaming.SendOperations) class. * * @param payloadSender The [PayloadSender](xref:botframework-streaming.PayloadSender) that will send the disassembled data from all of this instance's send operations. */ constructor(payloadSender: PayloadSender) { this.payloadSender = payloadSender; } /** * The send operation used to send a [StreamingRequest](xref:botframework-streaming.StreamingRequest). * * @param id The ID to assign to the [RequestDisassembler](xref:botframework-streaming.RequestDisassembler) used by this operation. * @param request The request to send. */ async sendRequest(id: string, request: StreamingRequest): Promise<void> { const disassembler = new RequestDisassembler(this.payloadSender, id, request); await disassembler.disassemble(); if (request.streams) { request.streams.forEach(async (contentStream): Promise<void> => { await new HttpContentStreamDisassembler(this.payloadSender, contentStream).disassemble(); }); } } /** * The send operation used to send a [PayloadTypes.response](xref:botframework-streaming.PayloadTypes.response). * * @param id The ID to assign to the [ResponseDisassembler](xref:botframework-streaming.ResponseDisassembler) used by this operation. * @param response The response to send. */ async sendResponse(id: string, response: StreamingResponse): Promise<void> { const disassembler = new ResponseDisassembler(this.payloadSender, id, response); await disassembler.disassemble(); if (response.streams) { response.streams.forEach(async (contentStream): Promise<void> => { await new HttpContentStreamDisassembler(this.payloadSender, contentStream).disassemble(); }); } } /** * The send operation used to send a [PayloadTypes.cancelStream](xref:botframework-streaming.PayloadTypes.cancelStream). * * @param id The ID to assign to the [CancelDisassembler](xref:botframework-streaming.CancelDisassembler) used by this operation. */ async sendCancelStream(id: string): Promise<void> { const disassembler = new CancelDisassembler(this.payloadSender, id, PayloadTypes.cancelStream); disassembler.disassemble(); } }