@sinch/sdk-client 0.0.1 → 0.0.2
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 +2 -2
- package/dist/api/api-client.js +13 -10
- 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/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 +34 -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 +4 -4
- package/dist/client/api-client-pagination-helper.js.map +1 -1
- package/dist/client/api-fetch-client.js +29 -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
|
package/dist/api/api-client.js
CHANGED
|
@@ -21,15 +21,18 @@ class ApiClient {
|
|
|
21
21
|
* @return {string} The query parameter formatted as required by the API
|
|
22
22
|
*/
|
|
23
23
|
this.formatQueryParameter = (name, queryParameters = {}, repeatParamArray) => {
|
|
24
|
-
const
|
|
25
|
-
if (
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
const parameterValues = parameterValue.split(';');
|
|
29
|
-
return parameterValues.map((value) => `${name}=${value}`).join('&');
|
|
24
|
+
const parameterValue = JSON.parse(queryParameters[name] || '');
|
|
25
|
+
if (Array.isArray(parameterValue)) {
|
|
26
|
+
if (repeatParamArray) {
|
|
27
|
+
return parameterValue.map((value) => `${name}=${value}`).join('&');
|
|
30
28
|
}
|
|
29
|
+
else {
|
|
30
|
+
return `${name}=${parameterValue.join(',')}`;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
return `${name}=${parameterValue}`;
|
|
31
35
|
}
|
|
32
|
-
return defaultFormat;
|
|
33
36
|
};
|
|
34
37
|
this.apiClientOptions = options;
|
|
35
38
|
}
|
|
@@ -45,9 +48,9 @@ class ApiClient {
|
|
|
45
48
|
.filter((name) => typeof data[name] !== 'undefined' && data[name] !== null)
|
|
46
49
|
.reduce((acc, name) => {
|
|
47
50
|
const prop = data[name];
|
|
48
|
-
acc[name] = typeof prop.toJSON === '
|
|
49
|
-
? prop.toJSON()
|
|
50
|
-
:
|
|
51
|
+
acc[name] = typeof prop.toJSON === 'object'
|
|
52
|
+
? JSON.stringify(prop.toJSON())
|
|
53
|
+
: JSON.stringify(prop);
|
|
51
54
|
return acc;
|
|
52
55
|
}, {});
|
|
53
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/api/api-client.ts"],"names":[],"mappings":";;;AAEA,2CAAqC;AAErC,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,mDAAI,CAAA;IACJ,qDAAK,CAAA;IACL,mDAAI,CAAA;AACN,CAAC,EAJW,cAAc,8BAAd,cAAc,QAIzB;AA0CD;;GAEG;AACH,MAAa,SAAS;IAIpB,YAAY,OAAyB;QA0FrC;;;;;;WAMG;QACK,yBAAoB,GAAG,CAC7B,IAAY,EACZ,kBAAyD,EAAE,EAC3D,gBAA0B,EAClB,EAAE;YACV,MAAM,
|
|
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"}
|
|
@@ -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,37 @@ 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
|
+
return typeof value === 'string' && !isNaN(Date.parse(value));
|
|
79
|
+
};
|
|
47
80
|
//# 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,7 +108,7 @@ 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;
|
|
@@ -120,7 +120,7 @@ function hasMore(response, context) {
|
|
|
120
120
|
exports.hasMore = hasMore;
|
|
121
121
|
function calculateNextPage(response, context) {
|
|
122
122
|
if (context.pagination === api_1.PaginationEnum.TOKEN) {
|
|
123
|
-
return response['nextPageToken'];
|
|
123
|
+
return response['nextPageToken'] || response['next_page_token'];
|
|
124
124
|
}
|
|
125
125
|
if (context.pagination === api_1.PaginationEnum.PAGE) {
|
|
126
126
|
const currentPage = response.page || 0;
|
|
@@ -140,10 +140,10 @@ function buildPaginationContext(props) {
|
|
|
140
140
|
};
|
|
141
141
|
}
|
|
142
142
|
exports.buildPaginationContext = buildPaginationContext;
|
|
143
|
-
const buildPageResultPromise = async (client, requestOptionsPromise, operationProperties) => {
|
|
143
|
+
const buildPageResultPromise = async (client, requestOptionsPromise, operationProperties, repeatParamArray) => {
|
|
144
144
|
// Await the promise in this async method and store the result in client so that they can be reused
|
|
145
145
|
const requestOptions = await requestOptionsPromise;
|
|
146
|
-
const url = client.prepareUrl(requestOptions.basePath, requestOptions.queryParams);
|
|
146
|
+
const url = client.prepareUrl(requestOptions.basePath, requestOptions.queryParams, repeatParamArray);
|
|
147
147
|
return client.processCallWithPagination({
|
|
148
148
|
url,
|
|
149
149
|
requestOptions,
|
|
@@ -1 +1 @@
|
|
|
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
|
+
{"version":3,"file":"api-client-pagination-helper.js","sourceRoot":"","sources":["../../src/client/api-client-pagination-helper.ts"],"names":[],"mappings":";;;AAAA,gCAOgB;AAGhB,MAAM,aAAa;IAQjB,YACE,SAAoB,EACpB,qBAA8C,EAC9C,gBAAwC,EACxC,OAA+B;QAE/B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,gBAAgB,CAAC;QACpC,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;QACnD,IAAI,CAAC,4BAA4B,GAAG,OAAO,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,UAAyB;QACrC,2DAA2D;QAC3D,IAAG,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1C,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;YAChB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAChC,CAAC;QACD,oCAAoC;aAC/B,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;YAChC,oDAAoD;YACpD,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;YACf,uIAAuI;YACvI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAChD,iDAAiD;YACjD,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC;YAChD,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACxC,CAAC;QACD,iEAAiE;QACjE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,UAAyB;QACzC,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC;QACxD,IAAI,IAAI,CAAC,4BAA4B,CAAC,UAAU,KAAK,oBAAc,CAAC,KAAK,EAAE,CAAC;YAC1E,MAAM,SAAS,GAAG;gBAChB,SAAS,EAAE,UAAU,CAAC,aAAa;aACpC,CAAC;YACF,OAAO,+BAA+B,CACpC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAClF,CAAC;QACD,IAAI,IAAI,CAAC,4BAA4B,CAAC,UAAU,KAAK,oBAAc,CAAC,IAAI,EAAE,CAAC;YACzE,MAAM,SAAS,GAAG;gBAChB,IAAI,EAAE,UAAU,CAAC,aAAa;aAC/B,CAAC;YACF,OAAO,+BAA+B,CACpC,IAAI,CAAC,SAAS,EAAC,SAAS,EAAE,cAAc,EAAE,IAAI,CAAC,4BAA4B,CAAC,CAAC;QACjF,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,CAAC,4BAA4B,CAAC,WAAW,kCAAkC,CAAC,CAAC;IACvH,CAAC;IAED,IAAI;QACF,OAAO,CAAC,KAAK,IAAgC,EAAE;YAC7C,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9C,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;CAEF;AAED,MAAM,+BAA+B,GAAG,CACtC,SAAoB,EACpB,SAAoC,EACpC,cAA8B,EAC9B,sBAA8C,EACtB,EAAE;IAC1B,MAAM,cAAc,GAAG;QACrB,GAAG,cAAc,CAAC,WAAW;QAC7B,GAAG,SAAS;KACb,CAAC;IACF,MAAM,iBAAiB,GAAmB;QACxC,GAAG,cAAc;QACjB,WAAW,EAAE,cAAc;KAC5B,CAAC;IACF,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CACjC,cAAc,CAAC,QAAQ,EACvB,cAAc,CACf,CAAC;IACF,OAAO,SAAS,CAAC,yBAAyB,CAAI;QAC5C,GAAG,EAAE,MAAM;QACX,cAAc,EAAE,iBAAiB;QACjC,GAAG,sBAAsB;KAC1B,CAAC,CAAC;AACL,CAAC,CAAC;AAEK,MAAM,kCAAkC,GAAG,CAChD,SAAoB,EACpB,qBAA8C,EAC9C,gBAAwC,EACxC,OAA+B,EACL,EAAE;IAC5B,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC,SAAS,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;IAChG,MAAM,qBAAqB,GAA6B;QACtD,IAAI,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE;QAC3B,MAAM,EAAE,GAAQ,EAAE;YAChB,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE;YAC3B,OAAO,qBAAqB,CAAC;QAC/B,CAAC;KACF,CAAC;IACF,OAAO,qBAAqB,CAAC;AAC/B,CAAC,CAAC;AAjBW,QAAA,kCAAkC,sCAiB7C;AAEK,MAAM,oBAAoB,GAAG,CAClC,SAAoB,EACpB,OAA0B,EAC1B,cAA8B,EAC9B,aAAqB,EACF,EAAE;IACrB,IAAI,SAAS,CAAC;IACd,IAAI,OAAO,CAAC,UAAU,KAAK,oBAAc,CAAC,KAAK,EAAE,CAAC;QAChD,SAAS,GAAG;YACV,SAAS,EAAE,aAAa;SACzB,CAAC;IACJ,CAAC;SAAM,IAAI,OAAO,CAAC,UAAU,KAAK,oBAAc,CAAC,IAAI,EAAE,CAAC;QACtD,SAAS,GAAG;YACV,IAAI,EAAE,aAAa;SACpB,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,iCAAiC,OAAO,CAAC,UAAU,oBAAoB,CAAC,CAAC;IAC3F,CAAC;IACD,MAAM,iBAAiB,GAAG,+BAA+B,CAAI,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;IAE5G,MAAM,qBAAqB,GAAG,IAAI,OAAO,CAAiB,CAAC,OAAO,EAAE,EAAE;QACpE,OAAO,CAAC,cAAc,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,kFAAkF;IAClF,MAAM,CAAC,MAAM,CACX,iBAAiB,EACjB,IAAA,0CAAkC,EAAI,SAAS,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,OAAO,CAAC,CACpG,CAAC;IAEF,OAAO,iBAAsC,CAAC;AAChD,CAAC,CAAC;AA/BW,QAAA,oBAAoB,wBA+B/B;AAEF,SAAgB,OAAO,CACrB,QAAa,EACb,OAA0B;IAE1B,IAAI,OAAO,CAAC,UAAU,KAAK,oBAAc,CAAC,KAAK,EAAE,CAAC;QAChD,OAAO,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,KAAK,oBAAc,CAAC,IAAI,EAAE,CAAC;QAC/C,MAAM,iBAAiB,GAAG,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,SAAS,CAAC;QACxE,MAAM,QAAQ,GAAW,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC9F,OAAO,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,iBAAiB,OAAO,CAAC,WAAW,gCAAgC,CAAC,CAAC;AACxF,CAAC;AAbD,0BAaC;AAED,SAAgB,iBAAiB,CAC/B,QAAa,EACb,OAA0B;IAE1B,IAAI,OAAO,CAAC,UAAU,KAAK,oBAAc,CAAC,KAAK,EAAE,CAAC;QAChD,OAAO,QAAQ,CAAC,eAAe,CAAC,IAAI,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,KAAK,oBAAc,CAAC,IAAI,EAAE,CAAC;QAC/C,MAAM,WAAW,GAAW,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,WAAW,GAAG,CAAC,CAAC;QACjC,OAAO,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,iBAAiB,OAAO,CAAC,WAAW,gCAAgC,CAAC,CAAC;AACxF,CAAC;AAbD,8CAaC;AAUD,SAAgB,sBAAsB,CAAC,KAAsC;IAC3E,OAAO;QACL,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,cAAc,EAAE,KAAK,CAAC,cAAe;KACtC,CAAC;AACJ,CAAC;AARD,wDAQC;AAEM,MAAM,sBAAsB,GAAG,KAAK,EACzC,MAAiB,EACjB,qBAA8C,EAC9C,mBAA2C,EAC3C,gBAA0B,EACF,EAAE;IAC1B,mGAAmG;IACnG,MAAM,cAAc,GAAG,MAAM,qBAAqB,CAAC;IACnD,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAC3B,cAAc,CAAC,QAAQ,EAAE,cAAc,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;IAEzE,OAAO,MAAM,CAAC,yBAAyB,CAAI;QACzC,GAAG;QACH,cAAc;QACd,GAAG,mBAAmB;KACvB,CAAC,CAAC;AACL,CAAC,CAAC;AAhBW,QAAA,sBAAsB,0BAgBjC;AAWF,MAAM,wBAAwB,GAAG,CAAC,QAAwB,EAAE,iBAAqC,EAAW,EAAE;IAC5G,MAAM,cAAc,GAAG,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IAC3E,OAAO,QAAQ,CAAC,IAAK,GAAG,cAAc,CAAC;AACzC,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,CAAC,QAAwB,EAAE,iBAAqC,EAAU,EAAE;IACzG,IAAI,oCAAoC,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CAAC,oFAAoF,QAAQ,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAI,eAAe,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IAChL,CAAC;IACD,IAAI,QAAQ,CAAC,SAAS,KAAK,CAAC,EAAE,CAAC;QAC7B,wEAAwE;QACxE,OAAO,QAAQ,CAAC,IAAK,CAAC;IACxB,CAAC;IACD,+FAA+F;IAC/F,MAAM,QAAQ,GAAW,iBAAiB,IAAI,QAAQ,CAAC,SAAU,CAAC;IAClE,MAAM,SAAS,GAAW,QAAQ,CAAC,KAAM,CAAC;IAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC7C,CAAC,CAAC;AAEF,MAAM,oCAAoC,GAAG,CAAC,QAAwB,EAAW,EAAE;IACjF,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC;IAClC,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC;IACpC,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC/E,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,KAAU,EAAE,EAAE;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACpD,CAAC,CAAC"}
|
|
@@ -67,8 +67,8 @@ class ApiFetchClient extends api_1.ApiClient {
|
|
|
67
67
|
if (exception) {
|
|
68
68
|
throw exception;
|
|
69
69
|
}
|
|
70
|
-
// If everything went fine, we return the transformed API response
|
|
71
|
-
return transformedResponse;
|
|
70
|
+
// If everything went fine, we apply a last transformation to revive the dates, and we return the transformed API response
|
|
71
|
+
return (0, api_client_helpers_1.reviveDates)(transformedResponse);
|
|
72
72
|
}
|
|
73
73
|
async sinchFetch(apiCallParameters, errorContext) {
|
|
74
74
|
const response = await (0, node_fetch_1.default)(apiCallParameters.url, apiCallParameters.requestOptions);
|
|
@@ -83,10 +83,11 @@ class ApiFetchClient extends api_1.ApiClient {
|
|
|
83
83
|
const origin = props.requestOptions.headers.get('Origin');
|
|
84
84
|
const errorContext = (0, api_client_helpers_1.buildErrorContext)(props, origin);
|
|
85
85
|
// Execute call
|
|
86
|
-
return this.sinchFetchWithPagination(props, errorContext);
|
|
86
|
+
return this.sinchFetchWithPagination(props, errorContext, origin);
|
|
87
87
|
}
|
|
88
88
|
;
|
|
89
|
-
async sinchFetchWithPagination(apiCallParameters, errorContext) {
|
|
89
|
+
async sinchFetchWithPagination(apiCallParameters, errorContext, origin) {
|
|
90
|
+
let exception;
|
|
90
91
|
const response = await (0, node_fetch_1.default)(apiCallParameters.url, apiCallParameters.requestOptions);
|
|
91
92
|
if (response.status === 401
|
|
92
93
|
&& response.headers.get('www-authenticate')?.includes('expired')) {
|
|
@@ -94,14 +95,33 @@ class ApiFetchClient extends api_1.ApiClient {
|
|
|
94
95
|
}
|
|
95
96
|
// When handling pagination, we won't return the raw response but a PageResult
|
|
96
97
|
const body = await response.text();
|
|
97
|
-
|
|
98
|
+
let result;
|
|
99
|
+
try {
|
|
100
|
+
// Try to parse the body if there is one
|
|
101
|
+
result = body ? JSON.parse(body) : undefined;
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
exception = new api_1.ResponseJSONParseError(error.message || 'Fail to parse response body', (response && response.status) || 0, errorContext, body);
|
|
105
|
+
}
|
|
106
|
+
// Load and invoke the response plugins to transform the response
|
|
107
|
+
const responsePlugins = this.loadResponsePlugins(this.apiClientOptions.responsePlugins, apiCallParameters, response, exception, origin);
|
|
108
|
+
let transformedResponse = result;
|
|
109
|
+
for (const pluginRunner of responsePlugins) {
|
|
110
|
+
transformedResponse = await pluginRunner.transform(transformedResponse);
|
|
111
|
+
}
|
|
112
|
+
// Revive Date objects
|
|
113
|
+
transformedResponse = (0, api_client_helpers_1.reviveDates)(transformedResponse);
|
|
114
|
+
// If there has been an error at some point in the process, throw it
|
|
115
|
+
if (exception) {
|
|
116
|
+
throw exception;
|
|
117
|
+
}
|
|
98
118
|
// Read the elements' array with its key
|
|
99
|
-
const responseData =
|
|
119
|
+
const responseData = transformedResponse[apiCallParameters.dataKey];
|
|
100
120
|
// Build the PageResult object
|
|
101
|
-
const nextPage = (0, api_client_pagination_helper_1.calculateNextPage)(
|
|
121
|
+
const nextPage = JSON.stringify((0, api_client_pagination_helper_1.calculateNextPage)(transformedResponse, (0, api_client_pagination_helper_1.buildPaginationContext)(apiCallParameters)));
|
|
102
122
|
return {
|
|
103
|
-
data: responseData,
|
|
104
|
-
hasNextPage: (0, api_client_pagination_helper_1.hasMore)(
|
|
123
|
+
data: responseData || [],
|
|
124
|
+
hasNextPage: (0, api_client_pagination_helper_1.hasMore)(transformedResponse, (0, api_client_pagination_helper_1.buildPaginationContext)(apiCallParameters)),
|
|
105
125
|
nextPageValue: nextPage,
|
|
106
126
|
nextPage: () => (0, api_client_pagination_helper_1.createNextPageMethod)(this, (0, api_client_pagination_helper_1.buildPaginationContext)(apiCallParameters), apiCallParameters.requestOptions, nextPage),
|
|
107
127
|
};
|
|
@@ -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,gCAQgB;AAChB,4DAAsD;AACtD,
|
|
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] = new Date(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,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC;4BACtC,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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"}
|