Skip to content

Commit fb35973

Browse files
committed
postRequest plugin callback
1 parent 0b5aa35 commit fb35973

File tree

2 files changed

+58
-6
lines changed

2 files changed

+58
-6
lines changed

src/plugins.js

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,29 @@ function getPlugins() {
1212
async function executePreRequest(event) {
1313
let response = null;
1414
//@TODO: only loop through plugins with preRequest.
15-
//@TODO: allow multiple reponses, currently last one wins.
1615
for (let i = 0; i < plugins.length; i++) {
1716
let plugin = plugins[i];
1817
if (plugin.preRequest) {
19-
response = await plugin.preRequest(event);
18+
response = await plugin.preRequest(event, response);
2019
}
2120
}
2221

2322
return response;
2423
}
2524

26-
async function executePostRequest() {
25+
async function executePostRequest(event, response) {
26+
//@TODO: only loop through plugins with postRequest.
27+
for (let i = 0; i < plugins.length; i++) {
28+
let plugin = plugins[i];
29+
if (plugin.postRequest) {
30+
response = await plugin.postRequest(event, response);
31+
}
32+
}
2733

34+
return response;
2835
}
2936

3037
module.exports.register = register;
3138
module.exports.getPlugins = getPlugins;
32-
module.exports.executePreRequest = executePreRequest;
39+
module.exports.executePreRequest = executePreRequest;
40+
module.exports.executePostRequest = executePostRequest;

tests/plugins.test.js

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ test('Execute preRequest', async () => {
2020
const body = 'foo';
2121

2222
plugins.register({
23-
name: 'Hello World',
24-
preRequest: async function(event) {
23+
name: 'preRequest',
24+
preRequest: async function(event, response) {
2525
return {
2626
statusCode: 200,
2727
body: event.test,
@@ -32,4 +32,48 @@ test('Execute preRequest', async () => {
3232
const response = await plugins.executePreRequest({test: body});
3333
expect(response.body).toEqual(body);
3434
expect(response.statusCode).toEqual(statusCode);
35+
});
36+
37+
test('Execute multiple preRequest', async () => {
38+
const body = 'foo';
39+
40+
plugins.register({
41+
name: '1',
42+
preRequest: async function(event, response) {
43+
return {
44+
statusCode: 200,
45+
body: event.test,
46+
}
47+
},
48+
});
49+
50+
plugins.register({
51+
name: '2',
52+
preRequest: async function(event, response) {
53+
if (response?.statusCode) {
54+
response.statusCode = response.statusCode + 1;
55+
}
56+
return response;
57+
},
58+
});
59+
60+
const response = await plugins.executePreRequest({test: body});
61+
expect(response.body).toEqual(body);
62+
expect(response.statusCode).toEqual(201);
63+
});
64+
65+
test('Execute postRequest', async () => {
66+
plugins.register({
67+
name: 'postRequest',
68+
postRequest: async function(event, response) {
69+
return {
70+
statusCode: response.statusCode + 1,
71+
body: 'Foo'
72+
}
73+
}
74+
});
75+
76+
const response = await plugins.executePostRequest({test: 'foo'}, {statusCode: 200, body: 'Test'});
77+
expect(response.body).toEqual('Foo');
78+
expect(response.statusCode).toEqual(201);
3579
});

0 commit comments

Comments
 (0)