1 | import { verify } from "@octokit/webhooks-methods";
|
2 | import { toNormalizedJsonString } from "./to-normalized-json-string";
|
3 | export async function verifyAndReceive(state, event) {
|
4 |
|
5 | const matchesSignature = await verify(state.secret, typeof event.payload === "object"
|
6 | ? toNormalizedJsonString(event.payload)
|
7 | : event.payload, event.signature);
|
8 | if (!matchesSignature) {
|
9 | const error = new Error("[@octokit/webhooks] signature does not match event payload and secret");
|
10 | return state.eventHandler.receive(Object.assign(error, { event, status: 400 }));
|
11 | }
|
12 | return state.eventHandler.receive({
|
13 | id: event.id,
|
14 | name: event.name,
|
15 | payload: typeof event.payload === "string"
|
16 | ? JSON.parse(event.payload)
|
17 | : event.payload,
|
18 | });
|
19 | }
|