|
| 1 | +endpoint2action = { |
| 2 | + action: require("./action").action, |
| 3 | + click: require("./click").click, |
| 4 | + fill_form: require("./fill_form").fillForm, |
| 5 | + back: require("./goback").goBack, |
| 6 | + forward: require("./goforward").goForward, |
| 7 | + goto: require("./goto").goto, |
| 8 | + har: require("./har").har, |
| 9 | + mhtml: require("./mhtml").captureSnapshot, |
| 10 | + recaptcha_solver: require("./recaptcha_solver").recaptchaSolver, |
| 11 | + screenshot: require("./screenshot").screenshot, |
| 12 | + scroll: require("./scroll").scroll, |
| 13 | +} |
| 14 | + |
| 15 | +async function compose(page, request) { |
| 16 | + const originalClosePage = request.query.closePage; |
| 17 | + const originalBody = structuredClone(request.body); |
| 18 | + |
| 19 | + request.query.closePage = false; |
| 20 | + delete request.body["actions"]; |
| 21 | + |
| 22 | + let response; |
| 23 | + try { |
| 24 | + for (const action of originalBody["actions"]) { |
| 25 | + request.body = action["body"]; |
| 26 | + response = await endpoint2action[action["endpoint"]](page, request); |
| 27 | + } |
| 28 | + } finally { |
| 29 | + request.query.closePage = originalClosePage; |
| 30 | + request.body = originalBody; |
| 31 | + } |
| 32 | + |
| 33 | + return response; |
| 34 | +} |
| 35 | +exports.compose = compose; |
0 commit comments