@sinch/sdk-client 0.0.1 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -2
- package/dist/api/api-client.d.ts +21 -2
- package/dist/api/api-client.js +37 -11
- package/dist/api/api-client.js.map +1 -1
- package/dist/api/api-errors.d.ts +2 -2
- package/dist/api/api-errors.js +2 -2
- package/dist/api/api-errors.js.map +1 -1
- package/dist/api/api-interface.d.ts +7 -0
- package/dist/api/callback-webhooks-interface.d.ts +6 -0
- package/dist/api/callback-webhooks-interface.js +3 -0
- package/dist/api/callback-webhooks-interface.js.map +1 -0
- package/dist/api/index.d.ts +1 -0
- package/dist/api/index.js +1 -0
- package/dist/api/index.js.map +1 -1
- package/dist/client/api-client-helpers.d.ts +6 -0
- package/dist/client/api-client-helpers.js +38 -1
- package/dist/client/api-client-helpers.js.map +1 -1
- package/dist/client/api-client-pagination-helper.d.ts +1 -1
- package/dist/client/api-client-pagination-helper.js +12 -4
- package/dist/client/api-client-pagination-helper.js.map +1 -1
- package/dist/client/api-fetch-client.d.ts +7 -1
- package/dist/client/api-fetch-client.js +91 -9
- package/dist/client/api-fetch-client.js.map +1 -1
- package/dist/domain/domain-interface.d.ts +5 -0
- package/dist/domain/domain-interface.js +7 -1
- package/dist/domain/domain-interface.js.map +1 -1
- package/dist/plugins/timezone/timezone.response.js +18 -3
- package/dist/plugins/timezone/timezone.response.js.map +1 -1
- package/dist/utils/authorization.helper.d.ts +41 -2
- package/dist/utils/authorization.helper.js +123 -21
- package/dist/utils/authorization.helper.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -7,8 +7,8 @@ This package contains the HTTP client used by the Sinch SDK client. It uses the
|
|
|
7
7
|
- request plugins will modify the request: for the moment, they are all about adding some headers (for authentication, for tracking the SDK usage).
|
|
8
8
|
- response plugins will modify the response, e.g.: response content is checked and transformed into an exception if the content is empty.
|
|
9
9
|
|
|
10
|
-
<span style="color:red; font-weight:bold">Warning:</span>
|
|
11
|
-
**This SDK is currently available for preview
|
|
10
|
+
> <span style="color:red; font-weight:bold">Warning:</span>
|
|
11
|
+
> **This SDK is currently available to selected developers for preview use only. It is being provided for the purpose of collecting feedback, and should not be used in production environments.**
|
|
12
12
|
|
|
13
13
|
## Architecture
|
|
14
14
|
TODO: schema
|
|
@@ -104,6 +104,7 @@ const myResponse = await myApi.myApiOperation();
|
|
|
104
104
|
| Plugin name | Description |
|
|
105
105
|
|-------------|-----------------------------------------------------------------------------------------------------------------------------------------------|
|
|
106
106
|
| exception | Check the response content and converts it into an error if empty or if the status is not `ok`.<br>**Added by default to the ApiFetchClient** |
|
|
107
|
+
| timezone | Patch some response properties which are identified as returned without a timezone by the server |
|
|
107
108
|
|
|
108
109
|
## Contact
|
|
109
110
|
Developer Experience team: [devexp@sinch.com](mailto:devexp@sinch.com)
|
package/dist/api/api-client.d.ts
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { RequestBody, RequestOptions } from '../plugins/core/request-plugin';
|
|
2
2
|
import { ApiClientOptions } from './api-client-options';
|
|
3
|
+
import FormData = require('form-data');
|
|
4
|
+
import { FileBuffer } from './api-interface';
|
|
3
5
|
export declare enum PaginationEnum {
|
|
4
6
|
NONE = 0,
|
|
5
7
|
TOKEN = 1,
|
|
6
|
-
PAGE = 2
|
|
8
|
+
PAGE = 2,
|
|
9
|
+
PAGE3 = 3
|
|
7
10
|
}
|
|
8
11
|
export interface ApiListPromise<T> extends Promise<PageResult<T>>, AsyncIterableIterator<T> {
|
|
9
12
|
}
|
|
@@ -103,11 +106,27 @@ export declare class ApiClient {
|
|
|
103
106
|
*/
|
|
104
107
|
processCall<T>(_httpCallParameters: ApiCallParameters): Promise<T>;
|
|
105
108
|
/**
|
|
106
|
-
* Process HTTP call
|
|
109
|
+
* Process HTTP call with Pagination
|
|
107
110
|
* @abstract
|
|
108
111
|
* @template T
|
|
109
112
|
* @param {ApiCallParametersWithPagination} _httpCallParameters - Parameters for the HTTP call.
|
|
110
113
|
* @return {Promise<T>} A promise that resolves to the result of the HTTP call.
|
|
111
114
|
*/
|
|
112
115
|
processCallWithPagination<T>(_httpCallParameters: ApiCallParametersWithPagination): Promise<PageResult<T>>;
|
|
116
|
+
/**
|
|
117
|
+
* Process HTTP call to download a PDF file
|
|
118
|
+
* @abstract
|
|
119
|
+
* @template T
|
|
120
|
+
* @param {ApiCallParameters} _httpCallParameters - Parameters for the HTTP call.
|
|
121
|
+
* @return {Promise<T>} A promise that resolves to the result of the HTTP call.
|
|
122
|
+
*/
|
|
123
|
+
processFileCall(_httpCallParameters: ApiCallParameters): Promise<FileBuffer>;
|
|
124
|
+
/**
|
|
125
|
+
* Receives an object containing key/value pairs
|
|
126
|
+
* Encodes this object to match application/x-www-urlencoded or multipart/form-data
|
|
127
|
+
* @abstract
|
|
128
|
+
* @param {any} _data
|
|
129
|
+
* @param {string} _type
|
|
130
|
+
*/
|
|
131
|
+
processFormData(_data: any, _type: string): FormData | string;
|
|
113
132
|
}
|
package/dist/api/api-client.js
CHANGED
|
@@ -7,6 +7,7 @@ var PaginationEnum;
|
|
|
7
7
|
PaginationEnum[PaginationEnum["NONE"] = 0] = "NONE";
|
|
8
8
|
PaginationEnum[PaginationEnum["TOKEN"] = 1] = "TOKEN";
|
|
9
9
|
PaginationEnum[PaginationEnum["PAGE"] = 2] = "PAGE";
|
|
10
|
+
PaginationEnum[PaginationEnum["PAGE3"] = 3] = "PAGE3";
|
|
10
11
|
})(PaginationEnum || (exports.PaginationEnum = PaginationEnum = {}));
|
|
11
12
|
/**
|
|
12
13
|
* API Client used to call the server
|
|
@@ -21,15 +22,18 @@ class ApiClient {
|
|
|
21
22
|
* @return {string} The query parameter formatted as required by the API
|
|
22
23
|
*/
|
|
23
24
|
this.formatQueryParameter = (name, queryParameters = {}, repeatParamArray) => {
|
|
24
|
-
const
|
|
25
|
-
if (
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
const parameterValues = parameterValue.split(';');
|
|
29
|
-
return parameterValues.map((value) => `${name}=${value}`).join('&');
|
|
25
|
+
const parameterValue = JSON.parse(queryParameters[name] || '');
|
|
26
|
+
if (Array.isArray(parameterValue)) {
|
|
27
|
+
if (repeatParamArray) {
|
|
28
|
+
return parameterValue.map((value) => `${name}=${value}`).join('&');
|
|
30
29
|
}
|
|
30
|
+
else {
|
|
31
|
+
return `${name}=${parameterValue.join(',')}`;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
return `${name}=${parameterValue}`;
|
|
31
36
|
}
|
|
32
|
-
return defaultFormat;
|
|
33
37
|
};
|
|
34
38
|
this.apiClientOptions = options;
|
|
35
39
|
}
|
|
@@ -45,9 +49,9 @@ class ApiClient {
|
|
|
45
49
|
.filter((name) => typeof data[name] !== 'undefined' && data[name] !== null)
|
|
46
50
|
.reduce((acc, name) => {
|
|
47
51
|
const prop = data[name];
|
|
48
|
-
acc[name] = typeof prop.toJSON === '
|
|
49
|
-
? prop.toJSON()
|
|
50
|
-
:
|
|
52
|
+
acc[name] = typeof prop.toJSON === 'object'
|
|
53
|
+
? JSON.stringify(prop.toJSON())
|
|
54
|
+
: JSON.stringify(prop);
|
|
51
55
|
return acc;
|
|
52
56
|
}, {});
|
|
53
57
|
}
|
|
@@ -108,7 +112,7 @@ class ApiClient {
|
|
|
108
112
|
throw new Error('Abstract method must be implemented');
|
|
109
113
|
}
|
|
110
114
|
/**
|
|
111
|
-
* Process HTTP call
|
|
115
|
+
* Process HTTP call with Pagination
|
|
112
116
|
* @abstract
|
|
113
117
|
* @template T
|
|
114
118
|
* @param {ApiCallParametersWithPagination} _httpCallParameters - Parameters for the HTTP call.
|
|
@@ -118,6 +122,28 @@ class ApiClient {
|
|
|
118
122
|
processCallWithPagination(_httpCallParameters) {
|
|
119
123
|
throw new Error('Abstract method must be implemented');
|
|
120
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* Process HTTP call to download a PDF file
|
|
127
|
+
* @abstract
|
|
128
|
+
* @template T
|
|
129
|
+
* @param {ApiCallParameters} _httpCallParameters - Parameters for the HTTP call.
|
|
130
|
+
* @return {Promise<T>} A promise that resolves to the result of the HTTP call.
|
|
131
|
+
*/
|
|
132
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
133
|
+
processFileCall(_httpCallParameters) {
|
|
134
|
+
throw new Error('Abstract method must be implemented');
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Receives an object containing key/value pairs
|
|
138
|
+
* Encodes this object to match application/x-www-urlencoded or multipart/form-data
|
|
139
|
+
* @abstract
|
|
140
|
+
* @param {any} _data
|
|
141
|
+
* @param {string} _type
|
|
142
|
+
*/
|
|
143
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
144
|
+
processFormData(_data, _type) {
|
|
145
|
+
throw new Error('Abstract method must be implemented');
|
|
146
|
+
}
|
|
121
147
|
}
|
|
122
148
|
exports.ApiClient = ApiClient;
|
|
123
149
|
// ----- INTERNAL ------ \\
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/api/api-client.ts"],"names":[],"mappings":";;;AAEA,2CAAqC;
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/api/api-client.ts"],"names":[],"mappings":"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"}
|
package/dist/api/api-errors.d.ts
CHANGED
|
@@ -29,7 +29,7 @@ export declare class RequestFailedError<T> extends GenericError {
|
|
|
29
29
|
/**
|
|
30
30
|
* Data decoded from the response body
|
|
31
31
|
*/
|
|
32
|
-
data?:
|
|
32
|
+
data?: string;
|
|
33
33
|
constructor(message: string, statusCode: number, errorContext: ErrorContext, data?: T);
|
|
34
34
|
}
|
|
35
35
|
/**
|
|
@@ -39,7 +39,7 @@ export declare class EmptyResponseError<T> extends GenericError {
|
|
|
39
39
|
/**
|
|
40
40
|
* Data decoded from the response body
|
|
41
41
|
*/
|
|
42
|
-
data?:
|
|
42
|
+
data?: string;
|
|
43
43
|
constructor(message: string, errorContext: ErrorContext, data?: T);
|
|
44
44
|
}
|
|
45
45
|
/**
|
package/dist/api/api-errors.js
CHANGED
|
@@ -25,7 +25,7 @@ class RequestFailedError extends GenericError {
|
|
|
25
25
|
constructor(message, statusCode, errorContext, data) {
|
|
26
26
|
super(`[status: ${statusCode}] ${message}`, errorContext);
|
|
27
27
|
this.statusCode = statusCode;
|
|
28
|
-
this.data = data;
|
|
28
|
+
this.data = JSON.stringify(data, null, 2);
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
exports.RequestFailedError = RequestFailedError;
|
|
@@ -35,7 +35,7 @@ exports.RequestFailedError = RequestFailedError;
|
|
|
35
35
|
class EmptyResponseError extends GenericError {
|
|
36
36
|
constructor(message, errorContext, data) {
|
|
37
37
|
super(`[Empty response] ${message}`, errorContext);
|
|
38
|
-
this.data = data;
|
|
38
|
+
this.data = JSON.stringify(data, null, 2);
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
exports.EmptyResponseError = EmptyResponseError;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-errors.js","sourceRoot":"","sources":["../../src/api/api-errors.ts"],"names":[],"mappings":";;;AAcA;;GAEG;AACH,MAAa,YAAa,SAAQ,KAAK;IACrC,YAAY,OAAe,EAAE,YAA0B;QACrD,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC3D,KAAK,CACH,mBAAmB,YAAY,CAAC,OAAO,IAAI,SAAS;wBAClC,YAAY,CAAC,WAAW,IAAI,SAAS;oBACzC,OAAO,cAAc,MAAM,sBAAsB,OAAO,EAAE,CACzE,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,SAAS,CAAC,GAA8B;QACrD,MAAM,UAAU,GAAG,cAAc,CAAC;QAClC,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvD,CAAC;CAEF;AAhBD,oCAgBC;AAED;;GAEG;AACH,MAAa,kBAAsB,SAAQ,YAAY;IAWrD,YACE,OAAe,EACf,UAAkB,EAClB,YAA0B,EAC1B,IAAQ;QAER,KAAK,CAAC,YAAY,UAAU,KAAK,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;QAC1D,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"api-errors.js","sourceRoot":"","sources":["../../src/api/api-errors.ts"],"names":[],"mappings":";;;AAcA;;GAEG;AACH,MAAa,YAAa,SAAQ,KAAK;IACrC,YAAY,OAAe,EAAE,YAA0B;QACrD,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC3D,KAAK,CACH,mBAAmB,YAAY,CAAC,OAAO,IAAI,SAAS;wBAClC,YAAY,CAAC,WAAW,IAAI,SAAS;oBACzC,OAAO,cAAc,MAAM,sBAAsB,OAAO,EAAE,CACzE,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,SAAS,CAAC,GAA8B;QACrD,MAAM,UAAU,GAAG,cAAc,CAAC;QAClC,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvD,CAAC;CAEF;AAhBD,oCAgBC;AAED;;GAEG;AACH,MAAa,kBAAsB,SAAQ,YAAY;IAWrD,YACE,OAAe,EACf,UAAkB,EAClB,YAA0B,EAC1B,IAAQ;QAER,KAAK,CAAC,YAAY,UAAU,KAAK,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;QAC1D,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;CACF;AArBD,gDAqBC;AAED;;GAEG;AACH,MAAa,kBAAsB,SAAQ,YAAY;IAMrD,YAAY,OAAe,EAAE,YAA0B,EAAE,IAAQ;QAC/D,KAAK,CAAC,oBAAoB,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;CACF;AAVD,gDAUC;AAED;;GAEG;AACH,MAAa,sBAAuB,SAAQ,kBAA0B;IACpE,YACE,OAAe,EACf,UAAkB,EAClB,YAA0B,EAC1B,WAAoB;QAEpB,KAAK,CACH,+BAA+B,OAAO,EAAE,EACxC,UAAU,EACV,YAAY,EACZ,WAAW,CACZ,CAAC;IACJ,CAAC;CACF;AAdD,wDAcC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
1
2
|
import { ApiClient } from './api-client';
|
|
2
3
|
/** API interface */
|
|
3
4
|
export interface Api {
|
|
@@ -6,3 +7,9 @@ export interface Api {
|
|
|
6
7
|
/** API Client used to process the calls to the API */
|
|
7
8
|
client?: ApiClient;
|
|
8
9
|
}
|
|
10
|
+
export interface FileBuffer {
|
|
11
|
+
/** Name of the file extracted from the 'content-disposition' header */
|
|
12
|
+
fileName: string;
|
|
13
|
+
/** File content as Buffer */
|
|
14
|
+
buffer: Buffer;
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"callback-webhooks-interface.js","sourceRoot":"","sources":["../../src/api/callback-webhooks-interface.ts"],"names":[],"mappings":""}
|
package/dist/api/index.d.ts
CHANGED
package/dist/api/index.js
CHANGED
|
@@ -19,4 +19,5 @@ __exportStar(require("./api-client-options"), exports);
|
|
|
19
19
|
__exportStar(require("./api-client"), exports);
|
|
20
20
|
__exportStar(require("./api-errors"), exports);
|
|
21
21
|
__exportStar(require("./api-interface"), exports);
|
|
22
|
+
__exportStar(require("./callback-webhooks-interface"), exports);
|
|
22
23
|
//# sourceMappingURL=index.js.map
|
package/dist/api/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,+CAA+C;AAC/C,+CAA6B;AAC7B,+CAA6B;AAC7B,kDAAgC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,+CAA+C;AAC/C,+CAA6B;AAC7B,+CAA6B;AAC7B,kDAAgC;AAChC,gEAA8C"}
|
|
@@ -3,3 +3,9 @@ import { ApiCallParameters, ApiCallParametersWithPagination, ErrorContext } from
|
|
|
3
3
|
export declare const manageExpiredToken: (apiCallParameters: ApiCallParameters | ApiCallParametersWithPagination, errorContext: ErrorContext, requestPlugins: RequestPlugin[] | undefined, requestOptions: RequestOptions, callback: (props: any) => Promise<any>) => Promise<any>;
|
|
4
4
|
export declare function buildErrorContext(apiCallParameters: ApiCallParameters, origin: string | null): ErrorContext;
|
|
5
5
|
export declare function invalidateAndRegenerateJwt(requestPlugins: RequestPlugin[] | undefined, options: RequestOptions, errorContext: ErrorContext): Promise<RequestOptions>;
|
|
6
|
+
/**
|
|
7
|
+
* Go through all an object's properties and transform to date the values that match the right format
|
|
8
|
+
* @param {any} input - the response object after all the response plugins have been run
|
|
9
|
+
* @return {any} - the response where the values matching a date are revived as Date objects
|
|
10
|
+
*/
|
|
11
|
+
export declare const reviveDates: (input: any) => any;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.invalidateAndRegenerateJwt = exports.buildErrorContext = exports.manageExpiredToken = void 0;
|
|
3
|
+
exports.reviveDates = exports.invalidateAndRegenerateJwt = exports.buildErrorContext = exports.manageExpiredToken = void 0;
|
|
4
4
|
const request_plugin_1 = require("../plugins/core/request-plugin");
|
|
5
5
|
const api_1 = require("../api");
|
|
6
6
|
const manageExpiredToken = async (apiCallParameters, errorContext, requestPlugins, requestOptions, callback) => {
|
|
@@ -44,4 +44,41 @@ async function invalidateAndRegenerateJwt(requestPlugins, options, errorContext)
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
exports.invalidateAndRegenerateJwt = invalidateAndRegenerateJwt;
|
|
47
|
+
/**
|
|
48
|
+
* Go through all an object's properties and transform to date the values that match the right format
|
|
49
|
+
* @param {any} input - the response object after all the response plugins have been run
|
|
50
|
+
* @return {any} - the response where the values matching a date are revived as Date objects
|
|
51
|
+
*/
|
|
52
|
+
const reviveDates = (input) => {
|
|
53
|
+
if (Array.isArray(input)) {
|
|
54
|
+
// Process array elements recursively
|
|
55
|
+
return input.map((item) => (0, exports.reviveDates)(item));
|
|
56
|
+
}
|
|
57
|
+
else if (typeof input === 'object' && input !== null) {
|
|
58
|
+
// Process object properties recursively
|
|
59
|
+
const newObj = {};
|
|
60
|
+
for (const key in input) {
|
|
61
|
+
if (Object.prototype.hasOwnProperty.call(input, key)) {
|
|
62
|
+
newObj[key] = (0, exports.reviveDates)(input[key]);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return newObj;
|
|
66
|
+
}
|
|
67
|
+
else if (isDateString(input)) {
|
|
68
|
+
// Convert string date to Date object
|
|
69
|
+
return new Date(input);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
// Return other types as-is
|
|
73
|
+
return input;
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
exports.reviveDates = reviveDates;
|
|
77
|
+
const isDateString = (value) => {
|
|
78
|
+
if (typeof value === 'string' && value.length >= 10) {
|
|
79
|
+
const date = new Date(value);
|
|
80
|
+
return !isNaN(date.getTime()) && date.toISOString().slice(0, 10) === value.slice(0, 10);
|
|
81
|
+
}
|
|
82
|
+
return false;
|
|
83
|
+
};
|
|
47
84
|
//# sourceMappingURL=api-client-helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client-helpers.js","sourceRoot":"","sources":["../../src/client/api-client-helpers.ts"],"names":[],"mappings":";;;AAAA,mEAIwC;AACxC,gCAAwG;AAEjG,MAAM,kBAAkB,GAAG,KAAK,EACrC,iBAAsE,EACtE,YAA0B,EAC1B,cAA2C,EAC3C,cAA8B,EAC9B,QAAsC,EACtC,EAAE;IACF,gFAAgF;IAChF,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC;QACtC,iBAAiB,CAAC,cAAc,GAAG,CAAC,CAAC;IACvC,CAAC;SAAM,CAAC;QACN,iBAAiB,CAAC,cAAc,EAAE,CAAC;QACnC,4EAA4E;QAC5E,IAAI,iBAAiB,CAAC,cAAc,IAAI,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,kBAAY,CACpB,6CAA6C,EAC7C,YAAY,CACb,CAAC;QACJ,CAAC;IACH,CAAC;IACD,MAAM,iBAAiB,GAAG,MAAM,0BAA0B,CAAC,cAAc,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;IACzG,MAAM,oBAAoB,GAAG;QAC3B,GAAG,iBAAiB;QACpB,cAAc,EAAE,iBAAiB;KAClC,CAAC;IACF,OAAO,QAAQ,CAAC,oBAAoB,CAAC,CAAC;AACxC,CAAC,CAAC;AA1BW,QAAA,kBAAkB,sBA0B7B;AAEF,SAAgB,iBAAiB,CAC/B,iBAAoC,EACpC,MAAqB;IAErB,OAAO;QACL,OAAO,EAAE,iBAAiB,CAAC,OAAO;QAClC,WAAW,EAAE,iBAAiB,CAAC,WAAW;QAC1C,GAAG,EAAE,iBAAiB,CAAC,GAAG;QAC1B,MAAM;KACP,CAAC;AACJ,CAAC;AAVD,8CAUC;AAEM,KAAK,UAAU,0BAA0B,CAC9C,cAA2C,EAC3C,OAAuB,EACvB,YAA0B;IAE1B,MAAM,YAAY,GAAG,cAAc,EAAE,IAAI,CACvC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,kCAAiB,CAAC,oBAAoB,CACxE,CAAC;IACF,IAAI,YAAY,EAAE,CAAC;QAChB,YAAoB,CAAC,eAAe,EAAE,CAAC;QACxC,OAAO,YAAY,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;SAAM,CAAC;QACN,MAAM,YAAY,GACd,sGAAsG,CAAC;QAC3G,MAAM,IAAI,kBAAY,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAhBD,gEAgBC"}
|
|
1
|
+
{"version":3,"file":"api-client-helpers.js","sourceRoot":"","sources":["../../src/client/api-client-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,4 +12,4 @@ export interface PaginationContext {
|
|
|
12
12
|
requestOptions: RequestOptions;
|
|
13
13
|
}
|
|
14
14
|
export declare function buildPaginationContext(props: ApiCallParametersWithPagination): PaginationContext;
|
|
15
|
-
export declare const buildPageResultPromise: <T>(client: ApiClient, requestOptionsPromise: Promise<RequestOptions>, operationProperties: PaginatedApiProperties) => Promise<PageResult<T>>;
|
|
15
|
+
export declare const buildPageResultPromise: <T>(client: ApiClient, requestOptionsPromise: Promise<RequestOptions>, operationProperties: PaginatedApiProperties, repeatParamArray?: boolean) => Promise<PageResult<T>>;
|
|
@@ -108,25 +108,33 @@ const createNextPageMethod = (apiClient, context, requestOptions, nextPageValue)
|
|
|
108
108
|
exports.createNextPageMethod = createNextPageMethod;
|
|
109
109
|
function hasMore(response, context) {
|
|
110
110
|
if (context.pagination === api_1.PaginationEnum.TOKEN) {
|
|
111
|
-
return !!response
|
|
111
|
+
return !!response['nextPageToken'] || !!response['next_page_token'];
|
|
112
112
|
}
|
|
113
113
|
if (context.pagination === api_1.PaginationEnum.PAGE) {
|
|
114
114
|
const requestedPageSize = context.requestOptions.queryParams?.page_size;
|
|
115
115
|
const pageSize = requestedPageSize ? parseInt(requestedPageSize) : response.page_size;
|
|
116
116
|
return checkIfThereAreMorePages(response, pageSize);
|
|
117
117
|
}
|
|
118
|
+
if (context.pagination === api_1.PaginationEnum.PAGE3) {
|
|
119
|
+
return response.pageNumber < response.totalPages;
|
|
120
|
+
}
|
|
118
121
|
throw new Error(`The operation ${context.operationId} is not meant to be paginated.`);
|
|
119
122
|
}
|
|
120
123
|
exports.hasMore = hasMore;
|
|
121
124
|
function calculateNextPage(response, context) {
|
|
122
125
|
if (context.pagination === api_1.PaginationEnum.TOKEN) {
|
|
123
|
-
return response['nextPageToken'];
|
|
126
|
+
return response['nextPageToken'] || response['next_page_token'];
|
|
124
127
|
}
|
|
125
128
|
if (context.pagination === api_1.PaginationEnum.PAGE) {
|
|
126
129
|
const currentPage = response.page || 0;
|
|
127
130
|
const nextPage = currentPage + 1;
|
|
128
131
|
return nextPage.toString();
|
|
129
132
|
}
|
|
133
|
+
if (context.pagination === api_1.PaginationEnum.PAGE3) {
|
|
134
|
+
const currentPage = response.pageNumber || 1;
|
|
135
|
+
const nextPage = currentPage + 1;
|
|
136
|
+
return nextPage.toString();
|
|
137
|
+
}
|
|
130
138
|
throw new Error(`The operation ${context.operationId} is not meant to be paginated.`);
|
|
131
139
|
}
|
|
132
140
|
exports.calculateNextPage = calculateNextPage;
|
|
@@ -140,10 +148,10 @@ function buildPaginationContext(props) {
|
|
|
140
148
|
};
|
|
141
149
|
}
|
|
142
150
|
exports.buildPaginationContext = buildPaginationContext;
|
|
143
|
-
const buildPageResultPromise = async (client, requestOptionsPromise, operationProperties) => {
|
|
151
|
+
const buildPageResultPromise = async (client, requestOptionsPromise, operationProperties, repeatParamArray) => {
|
|
144
152
|
// Await the promise in this async method and store the result in client so that they can be reused
|
|
145
153
|
const requestOptions = await requestOptionsPromise;
|
|
146
|
-
const url = client.prepareUrl(requestOptions.basePath, requestOptions.queryParams);
|
|
154
|
+
const url = client.prepareUrl(requestOptions.basePath, requestOptions.queryParams, repeatParamArray);
|
|
147
155
|
return client.processCallWithPagination({
|
|
148
156
|
url,
|
|
149
157
|
requestOptions,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client-pagination-helper.js","sourceRoot":"","sources":["../../src/client/api-client-pagination-helper.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"api-client-pagination-helper.js","sourceRoot":"","sources":["../../src/client/api-client-pagination-helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { ApiClient, ApiClientOptions, ApiCallParameters, ApiCallParametersWithPagination, PageResult } from '../api';
|
|
1
|
+
import { ApiClient, ApiClientOptions, ApiCallParameters, ApiCallParametersWithPagination, PageResult, FileBuffer } from '../api';
|
|
2
|
+
import FormData = require('form-data');
|
|
2
3
|
/** Client to process the call to the API using Fetch API */
|
|
3
4
|
export declare class ApiFetchClient extends ApiClient {
|
|
4
5
|
/**
|
|
@@ -16,4 +17,9 @@ export declare class ApiFetchClient extends ApiClient {
|
|
|
16
17
|
private sinchFetchWithPagination;
|
|
17
18
|
private buildFetchError;
|
|
18
19
|
private loadResponsePlugins;
|
|
20
|
+
/** @inheritdoc */
|
|
21
|
+
processFileCall(props: ApiCallParameters): Promise<FileBuffer>;
|
|
22
|
+
private extractFileName;
|
|
23
|
+
/** @inheritDoc */
|
|
24
|
+
processFormData(data: any, type: string): FormData | string;
|
|
19
25
|
}
|
|
@@ -9,6 +9,7 @@ const exception_1 = require("../plugins/exception");
|
|
|
9
9
|
const timezone_1 = require("../plugins/timezone");
|
|
10
10
|
const api_1 = require("../api");
|
|
11
11
|
const node_fetch_1 = __importDefault(require("node-fetch"));
|
|
12
|
+
const FormData = require("form-data");
|
|
12
13
|
const api_client_helpers_1 = require("./api-client-helpers");
|
|
13
14
|
const api_client_pagination_helper_1 = require("./api-client-pagination-helper");
|
|
14
15
|
/** Client to process the call to the API using Fetch API */
|
|
@@ -67,8 +68,8 @@ class ApiFetchClient extends api_1.ApiClient {
|
|
|
67
68
|
if (exception) {
|
|
68
69
|
throw exception;
|
|
69
70
|
}
|
|
70
|
-
// If everything went fine, we return the transformed API response
|
|
71
|
-
return transformedResponse;
|
|
71
|
+
// If everything went fine, we apply a last transformation to revive the dates, and we return the transformed API response
|
|
72
|
+
return (0, api_client_helpers_1.reviveDates)(transformedResponse);
|
|
72
73
|
}
|
|
73
74
|
async sinchFetch(apiCallParameters, errorContext) {
|
|
74
75
|
const response = await (0, node_fetch_1.default)(apiCallParameters.url, apiCallParameters.requestOptions);
|
|
@@ -83,10 +84,11 @@ class ApiFetchClient extends api_1.ApiClient {
|
|
|
83
84
|
const origin = props.requestOptions.headers.get('Origin');
|
|
84
85
|
const errorContext = (0, api_client_helpers_1.buildErrorContext)(props, origin);
|
|
85
86
|
// Execute call
|
|
86
|
-
return this.sinchFetchWithPagination(props, errorContext);
|
|
87
|
+
return this.sinchFetchWithPagination(props, errorContext, origin);
|
|
87
88
|
}
|
|
88
89
|
;
|
|
89
|
-
async sinchFetchWithPagination(apiCallParameters, errorContext) {
|
|
90
|
+
async sinchFetchWithPagination(apiCallParameters, errorContext, origin) {
|
|
91
|
+
let exception;
|
|
90
92
|
const response = await (0, node_fetch_1.default)(apiCallParameters.url, apiCallParameters.requestOptions);
|
|
91
93
|
if (response.status === 401
|
|
92
94
|
&& response.headers.get('www-authenticate')?.includes('expired')) {
|
|
@@ -94,14 +96,33 @@ class ApiFetchClient extends api_1.ApiClient {
|
|
|
94
96
|
}
|
|
95
97
|
// When handling pagination, we won't return the raw response but a PageResult
|
|
96
98
|
const body = await response.text();
|
|
97
|
-
|
|
99
|
+
let result;
|
|
100
|
+
try {
|
|
101
|
+
// Try to parse the body if there is one
|
|
102
|
+
result = body ? JSON.parse(body) : undefined;
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
exception = new api_1.ResponseJSONParseError(error.message || 'Fail to parse response body', (response && response.status) || 0, errorContext, body);
|
|
106
|
+
}
|
|
107
|
+
// Load and invoke the response plugins to transform the response
|
|
108
|
+
const responsePlugins = this.loadResponsePlugins(this.apiClientOptions.responsePlugins, apiCallParameters, response, exception, origin);
|
|
109
|
+
let transformedResponse = result;
|
|
110
|
+
for (const pluginRunner of responsePlugins) {
|
|
111
|
+
transformedResponse = await pluginRunner.transform(transformedResponse);
|
|
112
|
+
}
|
|
113
|
+
// Revive Date objects
|
|
114
|
+
transformedResponse = (0, api_client_helpers_1.reviveDates)(transformedResponse);
|
|
115
|
+
// If there has been an error at some point in the process, throw it
|
|
116
|
+
if (exception) {
|
|
117
|
+
throw exception;
|
|
118
|
+
}
|
|
98
119
|
// Read the elements' array with its key
|
|
99
|
-
const responseData =
|
|
120
|
+
const responseData = transformedResponse[apiCallParameters.dataKey];
|
|
100
121
|
// Build the PageResult object
|
|
101
|
-
const nextPage = (0, api_client_pagination_helper_1.calculateNextPage)(
|
|
122
|
+
const nextPage = JSON.stringify((0, api_client_pagination_helper_1.calculateNextPage)(transformedResponse, (0, api_client_pagination_helper_1.buildPaginationContext)(apiCallParameters)));
|
|
102
123
|
return {
|
|
103
|
-
data: responseData,
|
|
104
|
-
hasNextPage: (0, api_client_pagination_helper_1.hasMore)(
|
|
124
|
+
data: responseData || [],
|
|
125
|
+
hasNextPage: (0, api_client_pagination_helper_1.hasMore)(transformedResponse, (0, api_client_pagination_helper_1.buildPaginationContext)(apiCallParameters)),
|
|
105
126
|
nextPageValue: nextPage,
|
|
106
127
|
nextPage: () => (0, api_client_pagination_helper_1.createNextPageMethod)(this, (0, api_client_pagination_helper_1.buildPaginationContext)(apiCallParameters), apiCallParameters.requestOptions, nextPage),
|
|
107
128
|
};
|
|
@@ -127,6 +148,67 @@ class ApiFetchClient extends api_1.ApiClient {
|
|
|
127
148
|
}))
|
|
128
149
|
: [];
|
|
129
150
|
}
|
|
151
|
+
/** @inheritdoc */
|
|
152
|
+
async processFileCall(props) {
|
|
153
|
+
// Read the "Origin" header if existing, for logging purposes
|
|
154
|
+
const origin = props.requestOptions.headers.get('Origin');
|
|
155
|
+
const errorContext = (0, api_client_helpers_1.buildErrorContext)(props, origin);
|
|
156
|
+
// Declare variables
|
|
157
|
+
let response;
|
|
158
|
+
let body;
|
|
159
|
+
let fileName;
|
|
160
|
+
// Execute call
|
|
161
|
+
try {
|
|
162
|
+
// Send the request with the refresh token mechanism
|
|
163
|
+
response = await this.sinchFetch(props, errorContext);
|
|
164
|
+
body = await response.buffer();
|
|
165
|
+
fileName = this.extractFileName(response.headers);
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
this.buildFetchError(error, errorContext);
|
|
169
|
+
}
|
|
170
|
+
if (!body || !fileName) {
|
|
171
|
+
throw new Error('An error occurred while downloading the file');
|
|
172
|
+
}
|
|
173
|
+
return {
|
|
174
|
+
fileName,
|
|
175
|
+
buffer: body,
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
extractFileName(headers) {
|
|
179
|
+
const contentDisposition = headers.get('content-disposition');
|
|
180
|
+
let fileName = 'default-name.pdf';
|
|
181
|
+
if (contentDisposition) {
|
|
182
|
+
const match = contentDisposition.match(/filename="([^"]+)"/);
|
|
183
|
+
if (match && match[1]) {
|
|
184
|
+
fileName = match[1];
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
return fileName;
|
|
188
|
+
}
|
|
189
|
+
/** @inheritDoc */
|
|
190
|
+
processFormData(data, type) {
|
|
191
|
+
let encodedData;
|
|
192
|
+
if (type === 'multipart/form-data') {
|
|
193
|
+
const formData = new FormData();
|
|
194
|
+
for (const i in data) {
|
|
195
|
+
if (Object.prototype.hasOwnProperty.call(data, i)) {
|
|
196
|
+
formData.append(i, data[i]);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
encodedData = formData;
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
const formData = [];
|
|
203
|
+
for (const i in data) {
|
|
204
|
+
if (Object.prototype.hasOwnProperty.call(data, i)) {
|
|
205
|
+
formData.push(`${i}=${encodeURIComponent(data[i])}`);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
encodedData = formData.join('&');
|
|
209
|
+
}
|
|
210
|
+
return encodedData;
|
|
211
|
+
}
|
|
130
212
|
}
|
|
131
213
|
exports.ApiFetchClient = ApiFetchClient;
|
|
132
214
|
//# sourceMappingURL=api-fetch-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-fetch-client.js","sourceRoot":"","sources":["../../src/client/api-fetch-client.ts"],"names":[],"mappings":";;;;;;AACA,gDAAoD;AACpD,oDAAyD;AACzD,kDAAuD;AACvD,
|
|
1
|
+
{"version":3,"file":"api-fetch-client.js","sourceRoot":"","sources":["../../src/client/api-fetch-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,4 +46,9 @@ export declare enum VoiceRegion {
|
|
|
46
46
|
SOUTHEAST_ASIA_1 = "-apse1",
|
|
47
47
|
SOUTHEAST_ASIA_2 = "-apse2"
|
|
48
48
|
}
|
|
49
|
+
export declare enum ConversationRegion {
|
|
50
|
+
UNITED_STATES = "us",
|
|
51
|
+
EUROPE = "eu",
|
|
52
|
+
BRAZIL = "br"
|
|
53
|
+
}
|
|
49
54
|
export declare const getVoiceRegion: (value: string | undefined) => VoiceRegion | undefined;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getVoiceRegion = exports.VoiceRegion = exports.getRegion = exports.Region = exports.isServicePlanIdCredentials = exports.isUnifiedCredentials = void 0;
|
|
3
|
+
exports.getVoiceRegion = exports.ConversationRegion = exports.VoiceRegion = exports.getRegion = exports.Region = exports.isServicePlanIdCredentials = exports.isUnifiedCredentials = void 0;
|
|
4
4
|
const isUnifiedCredentials = (credentials) => {
|
|
5
5
|
const candidate = (credentials);
|
|
6
6
|
return candidate.projectId !== undefined
|
|
@@ -44,6 +44,12 @@ var VoiceRegion;
|
|
|
44
44
|
VoiceRegion["SOUTHEAST_ASIA_1"] = "-apse1";
|
|
45
45
|
VoiceRegion["SOUTHEAST_ASIA_2"] = "-apse2";
|
|
46
46
|
})(VoiceRegion || (exports.VoiceRegion = VoiceRegion = {}));
|
|
47
|
+
var ConversationRegion;
|
|
48
|
+
(function (ConversationRegion) {
|
|
49
|
+
ConversationRegion["UNITED_STATES"] = "us";
|
|
50
|
+
ConversationRegion["EUROPE"] = "eu";
|
|
51
|
+
ConversationRegion["BRAZIL"] = "br";
|
|
52
|
+
})(ConversationRegion || (exports.ConversationRegion = ConversationRegion = {}));
|
|
47
53
|
const getVoiceRegion = (value) => {
|
|
48
54
|
if (!value) {
|
|
49
55
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain-interface.js","sourceRoot":"","sources":["../../src/domain/domain-interface.ts"],"names":[],"mappings":";;;AAoCO,MAAM,oBAAoB,GAAG,CAAC,WAAgB,EAAqC,EAAE;IAC1F,MAAM,SAAS,GAAG,CAAC,WAAW,CAAuB,CAAC;IACtD,OAAO,SAAS,CAAC,SAAS,KAAK,SAAS;WACnC,SAAS,CAAC,KAAK,KAAK,SAAS;WAC7B,SAAS,CAAC,SAAS,KAAK,SAAS,CAAC;AACzC,CAAC,CAAC;AALW,QAAA,oBAAoB,wBAK/B;AAEK,MAAM,0BAA0B,GAAG,CAAC,WAAgB,EAA2C,EAAE;IACtG,MAAM,SAAS,GAAG,CAAC,WAAW,CAA6B,CAAC;IAC5D,OAAO,SAAS,CAAC,aAAa,KAAK,SAAS;WACvC,SAAS,CAAC,QAAQ,KAAK,SAAS,CAAC;AACxC,CAAC,CAAC;AAJW,QAAA,0BAA0B,8BAIrC;AAEF,IAAY,MAMX;AAND,WAAY,MAAM;IAChB,8BAAoB,CAAA;IACpB,uBAAa,CAAA;IACb,uBAAa,CAAA;IACb,uBAAa,CAAA;IACb,0BAAgB,CAAA;AAClB,CAAC,EANW,MAAM,sBAAN,MAAM,QAMjB;AAED,SAAgB,SAAS,CAAC,KAAyB;IACjD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3C,IAAI,MAAM,KAAK,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACnC,OAAO,MAAgB,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,kCAAkC,KAAK,GAAG,CAAC,CAAC;IAC1D,OAAO,SAAS,CAAC;AACnB,CAAC;AAZD,8BAYC;AAED,IAAY,WAOX;AAPD,WAAY,WAAW;IACrB,2BAAY,CAAA;IACZ,sCAAuB,CAAA;IACvB,+BAAgB,CAAA;IAChB,sCAAuB,CAAA;IACvB,0CAA2B,CAAA;IAC3B,0CAA2B,CAAA;AAC7B,CAAC,EAPW,WAAW,2BAAX,WAAW,QAOtB;AAEM,MAAM,cAAc,GAAG,CAAC,KAAyB,EAA2B,EAAE;IACnF,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,KAAI,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/C,IAAI,MAAM,KAAK,KAAK,CAAC,WAAW,EAAE,EAAG,CAAC;YACpC,OAAO,MAAqB,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,kCAAkC,KAAK,GAAG,CAAC,CAAC;IAC1D,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAXW,QAAA,cAAc,kBAWzB"}
|
|
1
|
+
{"version":3,"file":"domain-interface.js","sourceRoot":"","sources":["../../src/domain/domain-interface.ts"],"names":[],"mappings":";;;AAoCO,MAAM,oBAAoB,GAAG,CAAC,WAAgB,EAAqC,EAAE;IAC1F,MAAM,SAAS,GAAG,CAAC,WAAW,CAAuB,CAAC;IACtD,OAAO,SAAS,CAAC,SAAS,KAAK,SAAS;WACnC,SAAS,CAAC,KAAK,KAAK,SAAS;WAC7B,SAAS,CAAC,SAAS,KAAK,SAAS,CAAC;AACzC,CAAC,CAAC;AALW,QAAA,oBAAoB,wBAK/B;AAEK,MAAM,0BAA0B,GAAG,CAAC,WAAgB,EAA2C,EAAE;IACtG,MAAM,SAAS,GAAG,CAAC,WAAW,CAA6B,CAAC;IAC5D,OAAO,SAAS,CAAC,aAAa,KAAK,SAAS;WACvC,SAAS,CAAC,QAAQ,KAAK,SAAS,CAAC;AACxC,CAAC,CAAC;AAJW,QAAA,0BAA0B,8BAIrC;AAEF,IAAY,MAMX;AAND,WAAY,MAAM;IAChB,8BAAoB,CAAA;IACpB,uBAAa,CAAA;IACb,uBAAa,CAAA;IACb,uBAAa,CAAA;IACb,0BAAgB,CAAA;AAClB,CAAC,EANW,MAAM,sBAAN,MAAM,QAMjB;AAED,SAAgB,SAAS,CAAC,KAAyB;IACjD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3C,IAAI,MAAM,KAAK,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACnC,OAAO,MAAgB,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,kCAAkC,KAAK,GAAG,CAAC,CAAC;IAC1D,OAAO,SAAS,CAAC;AACnB,CAAC;AAZD,8BAYC;AAED,IAAY,WAOX;AAPD,WAAY,WAAW;IACrB,2BAAY,CAAA;IACZ,sCAAuB,CAAA;IACvB,+BAAgB,CAAA;IAChB,sCAAuB,CAAA;IACvB,0CAA2B,CAAA;IAC3B,0CAA2B,CAAA;AAC7B,CAAC,EAPW,WAAW,2BAAX,WAAW,QAOtB;AAED,IAAY,kBAIX;AAJD,WAAY,kBAAkB;IAC5B,0CAAoB,CAAA;IACpB,mCAAa,CAAA;IACb,mCAAa,CAAA;AACf,CAAC,EAJW,kBAAkB,kCAAlB,kBAAkB,QAI7B;AAEM,MAAM,cAAc,GAAG,CAAC,KAAyB,EAA2B,EAAE;IACnF,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,KAAI,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/C,IAAI,MAAM,KAAK,KAAK,CAAC,WAAW,EAAE,EAAG,CAAC;YACpC,OAAO,MAAqB,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,kCAAkC,KAAK,GAAG,CAAC,CAAC;IAC1D,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAXW,QAAA,cAAc,kBAWzB"}
|
|
@@ -3,9 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.TimezoneResponse = void 0;
|
|
4
4
|
const buggyOperationIds = [
|
|
5
5
|
'GetCallResult',
|
|
6
|
+
'VerificationStatusById',
|
|
7
|
+
'VerificationStatusByIdentity',
|
|
8
|
+
'VerificationStatusByReference',
|
|
6
9
|
];
|
|
7
10
|
const buggyFields = {
|
|
8
11
|
'GetCallResult': 'timestamp',
|
|
12
|
+
'VerificationStatusById': 'verificationTimestamp',
|
|
13
|
+
'VerificationStatusByIdentity': 'verificationTimestamp',
|
|
14
|
+
'VerificationStatusByReference': 'verificationTimestamp',
|
|
9
15
|
};
|
|
10
16
|
class TimezoneResponse {
|
|
11
17
|
load(context) {
|
|
@@ -17,11 +23,20 @@ class TimezoneResponse {
|
|
|
17
23
|
if (Object.prototype.hasOwnProperty.call(res, key)) {
|
|
18
24
|
const buggyKey = buggyFields[context.operationId];
|
|
19
25
|
if (key === buggyKey && typeof res[buggyKey] === 'string') {
|
|
20
|
-
|
|
21
|
-
|
|
26
|
+
let timestampValue = res[key];
|
|
27
|
+
// Check the formats +XX:XX, +XX and Z
|
|
28
|
+
const timeZoneRegex = /([+-]\d{2}(:\d{2})|Z)$/;
|
|
22
29
|
if (!timeZoneRegex.test(timestampValue)) {
|
|
23
|
-
|
|
30
|
+
const hourMinutesTimezoneRegex = /([+-]\d{2})$/;
|
|
31
|
+
// A timestamp with no minutes in the timezone cannot be converted into a Date => assume it's :00
|
|
32
|
+
if (hourMinutesTimezoneRegex.test(timestampValue)) {
|
|
33
|
+
timestampValue = timestampValue + ':00';
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
timestampValue = timestampValue + 'Z';
|
|
37
|
+
}
|
|
24
38
|
}
|
|
39
|
+
res[key] = timestampValue;
|
|
25
40
|
}
|
|
26
41
|
}
|
|
27
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timezone.response.js","sourceRoot":"","sources":["../../../src/plugins/timezone/timezone.response.ts"],"names":[],"mappings":";;;AAGA,MAAM,iBAAiB,GAAa;IAClC,eAAe;
|
|
1
|
+
{"version":3,"file":"timezone.response.js","sourceRoot":"","sources":["../../../src/plugins/timezone/timezone.response.ts"],"names":[],"mappings":";;;AAGA,MAAM,iBAAiB,GAAa;IAClC,eAAe;IACf,wBAAwB;IACxB,8BAA8B;IAC9B,+BAA+B;CAChC,CAAC;AAEF,MAAM,WAAW,GAA4B;IAC3C,eAAe,EAAE,WAAW;IAC5B,wBAAwB,EAAE,uBAAuB;IACjD,8BAA8B,EAAE,uBAAuB;IACvD,+BAA+B,EAAE,uBAAuB;CACzD,CAAC;AAEF,MAAa,gBAAgB;IAGpB,IAAI,CACT,OAA8B;QAE9B,OAAO;YACL,SAAS,CAAC,GAAM;gBACd,gFAAgF;gBAChF,IAAI,GAAG,IAAI,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,EAAG,CAAC;oBAC5D,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;wBACtB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;4BACnD,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;4BAClD,IAAI,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,QAAQ,EAAE,CAAC;gCAC1D,IAAI,cAAc,GAAG,GAAG,CAAC,GAAG,CAAW,CAAC;gCACxC,sCAAsC;gCACtC,MAAM,aAAa,GAAG,wBAAwB,CAAC;gCAC/C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;oCACxC,MAAM,wBAAwB,GAAG,cAAc,CAAC;oCAChD,iGAAiG;oCACjG,IAAI,wBAAwB,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;wCAClD,cAAc,GAAG,cAAc,GAAG,KAAK,CAAC;oCAC1C,CAAC;yCAAM,CAAC;wCACN,cAAc,GAAG,cAAc,GAAG,GAAG,CAAC;oCACxC,CAAC;gCACH,CAAC;gCACD,GAAG,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC;4BAC5B,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,OAAO,GAAG,CAAC;YACb,CAAC;SACF,CAAC;IACJ,CAAC;CAEF;AApCD,4CAoCC"}
|
|
@@ -1,7 +1,46 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { IncomingHttpHeaders } from 'http';
|
|
3
3
|
import { RequestBody } from '../plugins';
|
|
4
|
+
/**
|
|
5
|
+
* Generate authorization header for application-signed requests (Verification and Voice)
|
|
6
|
+
* @param {string} httpVerb - request's HTTP method
|
|
7
|
+
* @param {RequestBody | undefined} body - request's body (undefined in case of GET request)
|
|
8
|
+
* @param {string} contentType - content-type header value
|
|
9
|
+
* @param {string} canonicalizedHeaders - x-timestamp header
|
|
10
|
+
* @param {string} canonicalizedResource - request's path
|
|
11
|
+
* @param {string} applicationKey - application key (from dashboard)
|
|
12
|
+
* @param {string} applicationSecret - application secret (from dashboard)
|
|
13
|
+
* @return {string} - Application signed header value for HTTP authorization header
|
|
14
|
+
*/
|
|
15
|
+
export declare const generateAuthorizationHeader: (httpVerb: string, body: RequestBody | undefined, contentType: string, canonicalizedHeaders: string, canonicalizedResource: string, applicationKey: string, applicationSecret: string) => string;
|
|
16
|
+
/**
|
|
17
|
+
* Validate webhook signature headers for Conversation callback.
|
|
18
|
+
* @param {string} secret - secret associated to the Conversation app
|
|
19
|
+
* @param {IncomingHttpHeaders} headers - Incoming request's headers
|
|
20
|
+
* @param {any} body - Incoming request's body
|
|
21
|
+
* @return {boolean} - true if the signature header is valid
|
|
22
|
+
*/
|
|
23
|
+
export declare const validateWebhookSignature: (secret: string, headers: IncomingHttpHeaders, body: any) => boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Validate authorization header for callback request on application-signed protected endpoints (Verification and Voice webhooks)
|
|
26
|
+
* @param {string} applicationKey - application key (from dashboard) related to the event
|
|
27
|
+
* @param {string} applicationSecret - application secret (from dashboard) related to the event
|
|
28
|
+
* @param {IncomingHttpHeaders} headers - Incoming request's headers
|
|
29
|
+
* @param {any} body - Incoming request's body
|
|
30
|
+
* @param {string} path - Incoming request's path
|
|
31
|
+
* @param {string} method - Incoming request's HTTP method
|
|
32
|
+
* @return {boolean} - true if the authorization header is valid
|
|
33
|
+
*/
|
|
34
|
+
export declare const validateAuthenticationHeader: (applicationKey: string, applicationSecret: string, headers: IncomingHttpHeaders, body: any, path: string, method: string) => boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Validate signature headers for Numbers callback. Note: a callbackURL must be associated to the number
|
|
37
|
+
* @param {string} callbackSecret - secret associated to the rented number
|
|
38
|
+
* @param {IncomingHttpHeaders} headers - Incoming request's headers
|
|
39
|
+
* @param {any} body - Incoming request's body
|
|
40
|
+
* @return {boolean} - true if the signature header is valid
|
|
41
|
+
*/
|
|
42
|
+
export declare const validateSignatureHeader: (callbackSecret: string, headers: IncomingHttpHeaders, body: any) => boolean;
|
|
43
|
+
export declare const computeSignedData: (body: string, nonce: string, timestamp: string) => string;
|
|
44
|
+
export declare const calculateWebhookSignature: (signedData: string, secret: string) => string;
|
|
4
45
|
export declare const calculateMD5: (body: string) => string;
|
|
5
46
|
export declare const calculateSignature: (secret: string, stringToSign: string) => string;
|
|
6
|
-
export declare const generateAuthorizationHeader: (httpVerb: string, body: RequestBody | undefined, contentType: string, canonicalizedHeaders: string, canonicalizedResource: string, applicationKey: string, applicationSecret: string) => string;
|
|
7
|
-
export declare const validateAuthenticationHeader: (applicationKey: string, applicationSecret: string, headers: IncomingHttpHeaders, path: string, body: any, method: string) => boolean;
|
|
@@ -1,25 +1,45 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
27
|
};
|
|
5
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
29
|
+
exports.calculateSignature = exports.calculateMD5 = exports.calculateWebhookSignature = exports.computeSignedData = exports.validateSignatureHeader = exports.validateAuthenticationHeader = exports.validateWebhookSignature = exports.generateAuthorizationHeader = void 0;
|
|
7
30
|
const crypto_1 = __importDefault(require("crypto"));
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
const buildStringToSign = (httpVerb, contentMD5, contentType, canonicalizedHeaders, canonicalizedResource) => {
|
|
21
|
-
return `${httpVerb}\n${contentMD5}\n${contentType}\n${canonicalizedHeaders}\n${canonicalizedResource}`;
|
|
22
|
-
};
|
|
31
|
+
const console = __importStar(require("console"));
|
|
32
|
+
/**
|
|
33
|
+
* Generate authorization header for application-signed requests (Verification and Voice)
|
|
34
|
+
* @param {string} httpVerb - request's HTTP method
|
|
35
|
+
* @param {RequestBody | undefined} body - request's body (undefined in case of GET request)
|
|
36
|
+
* @param {string} contentType - content-type header value
|
|
37
|
+
* @param {string} canonicalizedHeaders - x-timestamp header
|
|
38
|
+
* @param {string} canonicalizedResource - request's path
|
|
39
|
+
* @param {string} applicationKey - application key (from dashboard)
|
|
40
|
+
* @param {string} applicationSecret - application secret (from dashboard)
|
|
41
|
+
* @return {string} - Application signed header value for HTTP authorization header
|
|
42
|
+
*/
|
|
23
43
|
const generateAuthorizationHeader = (httpVerb, body, contentType, canonicalizedHeaders, canonicalizedResource, applicationKey, applicationSecret) => {
|
|
24
44
|
const hasBody = !!body;
|
|
25
45
|
const stringToSign = buildStringToSign(httpVerb, hasBody ? (0, exports.calculateMD5)(body) : '', contentType, canonicalizedHeaders, canonicalizedResource);
|
|
@@ -27,12 +47,43 @@ const generateAuthorizationHeader = (httpVerb, body, contentType, canonicalizedH
|
|
|
27
47
|
return `Application ${applicationKey}:${signature}`;
|
|
28
48
|
};
|
|
29
49
|
exports.generateAuthorizationHeader = generateAuthorizationHeader;
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
50
|
+
/**
|
|
51
|
+
* Validate webhook signature headers for Conversation callback.
|
|
52
|
+
* @param {string} secret - secret associated to the Conversation app
|
|
53
|
+
* @param {IncomingHttpHeaders} headers - Incoming request's headers
|
|
54
|
+
* @param {any} body - Incoming request's body
|
|
55
|
+
* @return {boolean} - true if the signature header is valid
|
|
56
|
+
*/
|
|
57
|
+
const validateWebhookSignature = (secret, headers, body) => {
|
|
58
|
+
const normalizedHeaders = normalizeHeaders(headers);
|
|
59
|
+
const nonce = getHeader(normalizedHeaders['x-sinch-webhook-signature-nonce']);
|
|
60
|
+
const timestamp = getHeader(normalizedHeaders['x-sinch-webhook-signature-timestamp']);
|
|
61
|
+
let bodyAsString = body;
|
|
62
|
+
if (typeof body === 'object' && body !== null) {
|
|
63
|
+
bodyAsString = JSON.stringify(body);
|
|
64
|
+
}
|
|
65
|
+
const signedData = (0, exports.computeSignedData)(bodyAsString, nonce, timestamp);
|
|
66
|
+
const signature = (0, exports.calculateWebhookSignature)(signedData, secret);
|
|
67
|
+
const headerSignature = normalizedHeaders['x-sinch-webhook-signature'];
|
|
68
|
+
return headerSignature === signature;
|
|
69
|
+
};
|
|
70
|
+
exports.validateWebhookSignature = validateWebhookSignature;
|
|
71
|
+
/**
|
|
72
|
+
* Validate authorization header for callback request on application-signed protected endpoints (Verification and Voice webhooks)
|
|
73
|
+
* @param {string} applicationKey - application key (from dashboard) related to the event
|
|
74
|
+
* @param {string} applicationSecret - application secret (from dashboard) related to the event
|
|
75
|
+
* @param {IncomingHttpHeaders} headers - Incoming request's headers
|
|
76
|
+
* @param {any} body - Incoming request's body
|
|
77
|
+
* @param {string} path - Incoming request's path
|
|
78
|
+
* @param {string} method - Incoming request's HTTP method
|
|
79
|
+
* @return {boolean} - true if the authorization header is valid
|
|
80
|
+
*/
|
|
81
|
+
const validateAuthenticationHeader = (applicationKey, applicationSecret, headers, body, path, method) => {
|
|
82
|
+
const normalizedHeaders = normalizeHeaders(headers);
|
|
35
83
|
const authorization = getHeader(normalizedHeaders.authorization);
|
|
84
|
+
if (typeof authorization === 'undefined') {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
36
87
|
const authParts = checkAuthorizationHeaderFormat(authorization);
|
|
37
88
|
if (null === authParts) {
|
|
38
89
|
return false;
|
|
@@ -50,6 +101,42 @@ const validateAuthenticationHeader = (applicationKey, applicationSecret, headers
|
|
|
50
101
|
return false;
|
|
51
102
|
};
|
|
52
103
|
exports.validateAuthenticationHeader = validateAuthenticationHeader;
|
|
104
|
+
/**
|
|
105
|
+
* Validate signature headers for Numbers callback. Note: a callbackURL must be associated to the number
|
|
106
|
+
* @param {string} callbackSecret - secret associated to the rented number
|
|
107
|
+
* @param {IncomingHttpHeaders} headers - Incoming request's headers
|
|
108
|
+
* @param {any} body - Incoming request's body
|
|
109
|
+
* @return {boolean} - true if the signature header is valid
|
|
110
|
+
*/
|
|
111
|
+
const validateSignatureHeader = (callbackSecret, headers, body) => {
|
|
112
|
+
const normalizedHeaders = normalizeHeaders(headers);
|
|
113
|
+
const signature = getHeader(normalizedHeaders['x-sinch-signature']);
|
|
114
|
+
if (typeof signature === 'undefined') {
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
const expectedSignature = computeHmacSignature(body, callbackSecret);
|
|
118
|
+
return signature === expectedSignature;
|
|
119
|
+
};
|
|
120
|
+
exports.validateSignatureHeader = validateSignatureHeader;
|
|
121
|
+
// ////////////////
|
|
122
|
+
// UTILITY METHODS
|
|
123
|
+
const normalizeHeaders = (headers) => {
|
|
124
|
+
return Object.fromEntries(Object.entries(headers)
|
|
125
|
+
.map(([key, value]) => [key.toLowerCase(), value])
|
|
126
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
127
|
+
.filter(([_, value]) => value !== undefined));
|
|
128
|
+
};
|
|
129
|
+
const computeHmacSignature = (body, secret) => {
|
|
130
|
+
return crypto_1.default.createHmac('sha1', secret).update(body).digest('hex');
|
|
131
|
+
};
|
|
132
|
+
const computeSignedData = (body, nonce, timestamp) => {
|
|
133
|
+
return `${body}.${nonce}.${timestamp}`;
|
|
134
|
+
};
|
|
135
|
+
exports.computeSignedData = computeSignedData;
|
|
136
|
+
const calculateWebhookSignature = (signedData, secret) => {
|
|
137
|
+
return crypto_1.default.createHmac('sha256', secret).update(signedData).digest('base64');
|
|
138
|
+
};
|
|
139
|
+
exports.calculateWebhookSignature = calculateWebhookSignature;
|
|
53
140
|
const validateApplicationAuth = (authorizationValue, normalizedHeaders, applicationKey, applicationSecret, path, body, method) => {
|
|
54
141
|
const authKeyAndSecret = authorizationValue.split(':');
|
|
55
142
|
if (authKeyAndSecret.length !== 2) {
|
|
@@ -71,6 +158,21 @@ const validateApplicationAuth = (authorizationValue, normalizedHeaders, applicat
|
|
|
71
158
|
}
|
|
72
159
|
return true;
|
|
73
160
|
};
|
|
161
|
+
const calculateMD5 = (body) => {
|
|
162
|
+
// Content-MD5 = Base64 ( MD5 ( UTF8 ( [BODY] ) ) )
|
|
163
|
+
return crypto_1.default.createHash('md5').update(Buffer.from(body, 'utf-8')).digest('base64');
|
|
164
|
+
};
|
|
165
|
+
exports.calculateMD5 = calculateMD5;
|
|
166
|
+
const calculateSignature = (secret, stringToSign) => {
|
|
167
|
+
// Signature = Base64 ( HMAC-SHA256 ( Base64-Decode ( ApplicationSecret ), UTF8 ( StringToSign ) ) );
|
|
168
|
+
return crypto_1.default.createHmac('sha256', Buffer.from(secret, 'base64'))
|
|
169
|
+
.update(Buffer.from(stringToSign, 'utf-8'))
|
|
170
|
+
.digest('base64');
|
|
171
|
+
};
|
|
172
|
+
exports.calculateSignature = calculateSignature;
|
|
173
|
+
const buildStringToSign = (httpVerb, contentMD5, contentType, canonicalizedHeaders, canonicalizedResource) => {
|
|
174
|
+
return `${httpVerb}\n${contentMD5}\n${contentType}\n${canonicalizedHeaders}\n${canonicalizedResource}`;
|
|
175
|
+
};
|
|
74
176
|
const checkAuthorizationHeaderFormat = (authorizationHeader) => {
|
|
75
177
|
const authParts = authorizationHeader.split(' ');
|
|
76
178
|
if (authParts.length !== 2) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authorization.helper.js","sourceRoot":"","sources":["../../src/utils/authorization.helper.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"authorization.helper.js","sourceRoot":"","sources":["../../src/utils/authorization.helper.ts"],"names":[],"mappings":"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"}
|