@awell-health/awell-extensions 1.1.62 → 1.1.63
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/extensions/rest/actions/post/post.js +72 -28
- package/dist/extensions/rest/actions/post/post.js.map +1 -1
- package/dist/extensions/rest/actions/post/post.test.js +49 -0
- package/dist/extensions/rest/actions/post/post.test.js.map +1 -1
- package/dist/extensions/rest/lib/errors.d.ts +6 -0
- package/dist/extensions/rest/lib/errors.js +16 -0
- package/dist/extensions/rest/lib/errors.js.map +1 -0
- package/package.json +1 -1
@@ -4,6 +4,7 @@ exports.post = void 0;
|
|
4
4
|
const extensions_core_1 = require("@awell-health/extensions-core");
|
5
5
|
const config_1 = require("./config");
|
6
6
|
const zod_1 = require("zod");
|
7
|
+
const errors_1 = require("../../lib/errors");
|
7
8
|
exports.post = {
|
8
9
|
key: 'post',
|
9
10
|
title: 'POST request',
|
@@ -13,41 +14,84 @@ exports.post = {
|
|
13
14
|
dataPoints: config_1.dataPoints,
|
14
15
|
previewable: true,
|
15
16
|
onActivityCreated: async (payload, onComplete, onError) => {
|
17
|
+
var _a, _b;
|
16
18
|
const { fields: { endpoint, headers, jsonPayload, additionalPayload }, } = (0, extensions_core_1.validate)({
|
17
19
|
schema: zod_1.z.object({
|
18
20
|
fields: config_1.FieldsValidationSchema,
|
19
21
|
}),
|
20
22
|
payload,
|
21
23
|
});
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
24
|
+
try {
|
25
|
+
const response = await fetch(endpoint, {
|
26
|
+
method: 'POST',
|
27
|
+
headers: {
|
28
|
+
...headers,
|
29
|
+
'Content-Type': 'application/json',
|
30
|
+
},
|
31
|
+
body: JSON.stringify({
|
32
|
+
...jsonPayload,
|
33
|
+
...additionalPayload,
|
34
|
+
}),
|
35
|
+
});
|
36
|
+
if (response.ok) {
|
37
|
+
const getResponseBody = async (response) => {
|
38
|
+
var _a, _b;
|
39
|
+
const contentType = (_b = (_a = response === null || response === void 0 ? void 0 : response.headers) === null || _a === void 0 ? void 0 : _a.get('content-type')) !== null && _b !== void 0 ? _b : '';
|
40
|
+
if (contentType === null || contentType === void 0 ? void 0 : contentType.toLowerCase().includes('application/json')) {
|
41
|
+
return await response.json();
|
42
|
+
}
|
43
|
+
return await response.text();
|
44
|
+
};
|
45
|
+
const responseBody = await getResponseBody(response);
|
46
|
+
const statusCode = response.status;
|
47
|
+
await onComplete({
|
48
|
+
data_points: {
|
49
|
+
response: typeof responseBody === 'string'
|
50
|
+
? responseBody
|
51
|
+
: JSON.stringify(responseBody),
|
52
|
+
statusCode: String(statusCode),
|
53
|
+
},
|
54
|
+
});
|
38
55
|
}
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
56
|
+
else {
|
57
|
+
throw new errors_1.FetchError(response.status, response.statusText, response.body);
|
58
|
+
}
|
59
|
+
}
|
60
|
+
catch (error) {
|
61
|
+
if (error instanceof errors_1.FetchError) {
|
62
|
+
await onError({
|
63
|
+
events: [
|
64
|
+
{
|
65
|
+
date: new Date().toISOString(),
|
66
|
+
text: {
|
67
|
+
en: `${error.message} ${error.responseBody}`,
|
68
|
+
},
|
69
|
+
error: {
|
70
|
+
category: 'SERVER_ERROR',
|
71
|
+
message: `${error.message} ${error.responseBody}`,
|
72
|
+
},
|
73
|
+
},
|
74
|
+
],
|
75
|
+
});
|
76
|
+
}
|
77
|
+
else {
|
78
|
+
const parsedError = error;
|
79
|
+
await onError({
|
80
|
+
events: [
|
81
|
+
{
|
82
|
+
date: new Date().toISOString(),
|
83
|
+
text: {
|
84
|
+
en: (_a = parsedError.message) !== null && _a !== void 0 ? _a : 'Unexpected error',
|
85
|
+
},
|
86
|
+
error: {
|
87
|
+
category: 'SERVER_ERROR',
|
88
|
+
message: (_b = parsedError.message) !== null && _b !== void 0 ? _b : 'Unexpected error',
|
89
|
+
},
|
90
|
+
},
|
91
|
+
],
|
92
|
+
});
|
93
|
+
}
|
94
|
+
}
|
51
95
|
},
|
52
96
|
};
|
53
97
|
//# sourceMappingURL=post.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"post.js","sourceRoot":"","sources":["../../../../../extensions/rest/actions/post/post.ts"],"names":[],"mappings":";;;AACA,mEAAkE;AAElE,qCAAqE;AACrE,6BAAuB;
|
1
|
+
{"version":3,"file":"post.js","sourceRoot":"","sources":["../../../../../extensions/rest/actions/post/post.ts"],"names":[],"mappings":"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"}
|
@@ -16,6 +16,11 @@ describe('REST - POST', () => {
|
|
16
16
|
;
|
17
17
|
global.fetch.mockResolvedValue({
|
18
18
|
status: 200,
|
19
|
+
statusText: 'Ok',
|
20
|
+
ok: true,
|
21
|
+
headers: new Headers({
|
22
|
+
'Content-Type': 'application/json',
|
23
|
+
}),
|
19
24
|
json: jest.fn().mockResolvedValue({
|
20
25
|
success: true,
|
21
26
|
message: 'Data received successfully',
|
@@ -57,5 +62,49 @@ describe('REST - POST', () => {
|
|
57
62
|
},
|
58
63
|
});
|
59
64
|
});
|
65
|
+
test('Should catch errors', async () => {
|
66
|
+
;
|
67
|
+
global.fetch.mockResolvedValue({
|
68
|
+
status: 404,
|
69
|
+
ok: false,
|
70
|
+
statusText: 'Not found',
|
71
|
+
headers: new Headers({
|
72
|
+
'Content-Type': 'application/json',
|
73
|
+
}),
|
74
|
+
json: jest.fn().mockResolvedValue({
|
75
|
+
message: 'Not found',
|
76
|
+
}),
|
77
|
+
});
|
78
|
+
const mockOnActivityCreateParams = (0, tests_1.generateTestPayload)({
|
79
|
+
fields: {
|
80
|
+
endpoint: 'https://webhook.site/bb853fec-9260-44e5-a944-17894d678a7f',
|
81
|
+
headers: '{}',
|
82
|
+
jsonPayload: `{}`,
|
83
|
+
additionalPayload: `{}`,
|
84
|
+
},
|
85
|
+
settings: {},
|
86
|
+
});
|
87
|
+
await _1.post.onActivityCreated(mockOnActivityCreateParams, onComplete, onError);
|
88
|
+
expect(global.fetch).toHaveBeenCalledWith('https://webhook.site/bb853fec-9260-44e5-a944-17894d678a7f', expect.objectContaining({
|
89
|
+
method: 'POST',
|
90
|
+
headers: {
|
91
|
+
'Content-Type': 'application/json',
|
92
|
+
},
|
93
|
+
body: JSON.stringify({}),
|
94
|
+
}));
|
95
|
+
expect(onError).toHaveBeenCalledWith({
|
96
|
+
events: [
|
97
|
+
expect.objectContaining({
|
98
|
+
error: {
|
99
|
+
category: 'SERVER_ERROR',
|
100
|
+
message: '404 Not found ',
|
101
|
+
},
|
102
|
+
text: {
|
103
|
+
en: '404 Not found ',
|
104
|
+
},
|
105
|
+
}),
|
106
|
+
],
|
107
|
+
});
|
108
|
+
});
|
60
109
|
});
|
61
110
|
//# sourceMappingURL=post.test.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"post.test.js","sourceRoot":"","sources":["../../../../../extensions/rest/actions/post/post.test.ts"],"names":[],"mappings":";;AAAA,wBAAwB;AACxB,iDAA2D;AAE3D,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;IAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;IAEzB,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,aAAa,EAAE,CAAA;QACpB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,CAAC,CAAC,CAAA;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,eAAe,EAAE,CAAA;IACxB,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;QAC7B,CAAC;QAAC,MAAM,CAAC,KAAmB,CAAC,iBAAiB,CAAC;YAC7C,MAAM,EAAE,GAAG;YACX,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;gBAChC,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,4BAA4B;aACtC,CAAC;
|
1
|
+
{"version":3,"file":"post.test.js","sourceRoot":"","sources":["../../../../../extensions/rest/actions/post/post.test.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.FetchError = void 0;
|
4
|
+
const lodash_1 = require("lodash");
|
5
|
+
class FetchError extends Error {
|
6
|
+
constructor(statusCode, statusText, responseBody) {
|
7
|
+
super(`${statusCode} ${statusText}`);
|
8
|
+
this.statusCode = statusCode;
|
9
|
+
this.statusText = statusText;
|
10
|
+
this.responseBody = (0, lodash_1.isEmpty)(responseBody)
|
11
|
+
? ''
|
12
|
+
: JSON.stringify(responseBody);
|
13
|
+
}
|
14
|
+
}
|
15
|
+
exports.FetchError = FetchError;
|
16
|
+
//# sourceMappingURL=errors.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../extensions/rest/lib/errors.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAEhC,MAAa,UAAW,SAAQ,KAAK;IAKnC,YAAY,UAAkB,EAAE,UAAkB,EAAE,YAAsB;QACxE,KAAK,CAAC,GAAG,UAAU,IAAI,UAAU,EAAE,CAAC,CAAA;QACpC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,YAAY,GAAG,IAAA,gBAAO,EAAC,YAAY,CAAC;YACvC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;IAClC,CAAC;CACF;AAbD,gCAaC"}
|