1 | import { verify } from "@octokit/webhooks-methods";
|
2 | async function verifyAndReceive(state, event) {
|
3 | const matchesSignature = await verify(
|
4 | state.secret,
|
5 | event.payload,
|
6 | event.signature
|
7 | ).catch(() => false);
|
8 | if (!matchesSignature) {
|
9 | const error = new Error(
|
10 | "[@octokit/webhooks] signature does not match event payload and secret"
|
11 | );
|
12 | return state.eventHandler.receive(
|
13 | Object.assign(error, { event, status: 400 })
|
14 | );
|
15 | }
|
16 | let payload;
|
17 | try {
|
18 | payload = JSON.parse(event.payload);
|
19 | } catch (error) {
|
20 | error.message = "Invalid JSON";
|
21 | error.status = 400;
|
22 | throw new AggregateError([error], error.message);
|
23 | }
|
24 | return state.eventHandler.receive({
|
25 | id: event.id,
|
26 | name: event.name,
|
27 | payload
|
28 | });
|
29 | }
|
30 | export {
|
31 | verifyAndReceive
|
32 | };
|