@voice-ping/cognitive-services-speech
Version:
VoicePing Cognitive Services Speech SDK for JavaScript forked from Microsoft
1 lines • 5.55 kB
Source Map (JSON)
{"version":3,"sources":["src/common.browser/RestMessageAdapter.ts"],"names":[],"mappings":";AAGA,OAAO,EAGH,OAAO,EACV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAK5C,oBAAY,eAAe;IACvB,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,IAAI,SAAS;CAChB;AAED,MAAM,WAAW,aAAa;IAC1B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACnB;AAGD,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,WAAW,CAA6B;gBAG5C,YAAY,EAAE,eAAe,EAC7B,YAAY,CAAC,EAAE,MAAM;IAYlB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAI,IAAI;IAI7C,OAAO,CACV,MAAM,EAAE,eAAe,EACvB,GAAG,EAAE,MAAM,EACX,WAAW,GAAE,GAAQ,EACrB,IAAI,GAAE,GAAU,EAChB,UAAU,GAAE,IAAI,GAAG,MAAa,GAC7B,OAAO,CAAC,aAAa,CAAC;IAgD7B,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,WAAW;CAKtB","file":"RestMessageAdapter.d.ts","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT license.\n\nimport {\n ArgumentNullError,\n Deferred,\n Promise,\n} from \"../common/Exports\";\nimport { IRequestOptions } from \"./Exports\";\n\n// Node.JS specific xmlhttprequest / browser support.\nimport * as XHR from \"xmlhttprequest-ts\";\n\nexport enum RestRequestType {\n Get = \"get\",\n Post = \"post\",\n Delete = \"delete\",\n File = \"file\",\n}\n\nexport interface IRestResponse {\n ok: boolean;\n status: number;\n statusText: string;\n data: string;\n json: <T>() => T;\n headers: string;\n}\n\n// accept rest operations via request method and return abstracted objects from server response\nexport class RestMessageAdapter {\n\n private privTimeout: number;\n private privIgnoreCache: boolean;\n private privHeaders: { [key: string]: string; };\n\n public constructor(\n configParams: IRequestOptions,\n connectionId?: string\n ) {\n\n if (!configParams) {\n throw new ArgumentNullError(\"configParams\");\n }\n\n this.privHeaders = configParams.headers;\n this.privTimeout = configParams.timeout;\n this.privIgnoreCache = configParams.ignoreCache;\n }\n\n public setHeaders(key: string, value: string ): void {\n this.privHeaders[key] = value;\n }\n\n public request(\n method: RestRequestType,\n uri: string,\n queryParams: any = {},\n body: any = null,\n binaryBody: Blob | Buffer = null,\n ): Promise<IRestResponse> {\n\n const responseReceivedDeferral = new Deferred<IRestResponse>();\n\n let xhr: XMLHttpRequest | XHR.XMLHttpRequest;\n if (typeof (XMLHttpRequest) === \"undefined\") {\n xhr = new XHR.XMLHttpRequest();\n } else {\n xhr = new XMLHttpRequest();\n }\n const requestCommand = method === RestRequestType.File ? \"post\" : method;\n xhr.open(requestCommand, this.withQuery(uri, queryParams), true);\n\n if (this.privHeaders) {\n Object.keys(this.privHeaders).forEach((key: any) => xhr.setRequestHeader(key, this.privHeaders[key]));\n }\n\n if (this.privIgnoreCache) {\n xhr.setRequestHeader(\"Cache-Control\", \"no-cache\");\n }\n\n xhr.timeout = this.privTimeout;\n\n xhr.onload = () => {\n responseReceivedDeferral.resolve(this.parseXHRResult(xhr));\n };\n\n xhr.onerror = () => {\n responseReceivedDeferral.resolve(this.errorResponse(xhr, \"Failed to make request.\"));\n };\n\n xhr.ontimeout = () => {\n responseReceivedDeferral.resolve(this.errorResponse(xhr, \"Request took longer than expected.\"));\n };\n\n if (method === RestRequestType.File && binaryBody) {\n xhr.setRequestHeader(\"Content-Type\", \"multipart/form-data\");\n xhr.send(binaryBody);\n } else if (method === RestRequestType.Post && body) {\n xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n xhr.send(JSON.stringify(body));\n } else {\n xhr.send();\n }\n\n return responseReceivedDeferral.promise();\n }\n\n private parseXHRResult(xhr: XMLHttpRequest | XHR.XMLHttpRequest): IRestResponse {\n return {\n data: xhr.responseText,\n headers: xhr.getAllResponseHeaders(),\n json: <T>() => JSON.parse(xhr.responseText) as T,\n ok: xhr.status >= 200 && xhr.status < 300,\n status: xhr.status,\n statusText: xhr.statusText,\n };\n }\n\n private errorResponse(xhr: XMLHttpRequest | XHR.XMLHttpRequest, message: string | null = null): IRestResponse {\n return {\n data: message || xhr.statusText,\n headers: xhr.getAllResponseHeaders(),\n json: <T>() => JSON.parse(message || (\"\\\"\" + xhr.statusText + \"\\\"\")) as T,\n ok: false,\n status: xhr.status,\n statusText: xhr.statusText,\n };\n }\n\n private withQuery(url: string, params: any = {}): any {\n const queryString = this.queryParams(params);\n return queryString ? url + (url.indexOf(\"?\") === -1 ? \"?\" : \"&\") + queryString : url;\n }\n\n private queryParams(params: any = {}): any {\n return Object.keys(params)\n .map((k: any) => encodeURIComponent(k) + \"=\" + encodeURIComponent(params[k]))\n .join(\"&\");\n }\n}\n"]}