Skip to content

Commit 23e0443

Browse files
committed
refactor: make verifyAndReceive extend verifyAndParse under the hood
1 parent 83e8850 commit 23e0443

File tree

1 file changed

+4
-36
lines changed

1 file changed

+4
-36
lines changed

src/verify-and-receive.ts

Lines changed: 4 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,15 @@
1-
import { verifyWithFallback } from "@octokit/webhooks-methods";
2-
1+
import { verifyAndParse } from "./verify-and-parse.ts";
32
import type {
4-
EmitterWebhookEvent,
53
EmitterWebhookEventWithStringPayloadAndSignature,
64
State,
7-
WebhookError,
85
} from "./types.ts";
96
import type { EventHandler } from "./event-handler/index.ts";
107

118
export async function verifyAndReceive(
129
state: State & { secret: string; eventHandler: EventHandler<unknown> },
1310
event: EmitterWebhookEventWithStringPayloadAndSignature,
1411
): Promise<void> {
15-
// verify will validate that the secret is not undefined
16-
const matchesSignature = await verifyWithFallback(
17-
state.secret,
18-
event.payload,
19-
event.signature,
20-
state.additionalSecrets,
21-
).catch(() => false);
22-
23-
if (!matchesSignature) {
24-
const error = new Error(
25-
"[@octokit/webhooks] signature does not match event payload and secret",
26-
);
27-
28-
return state.eventHandler.receive(
29-
Object.assign(error, { event, status: 400 }) as WebhookError,
30-
);
31-
}
32-
33-
let payload: EmitterWebhookEvent["payload"];
34-
try {
35-
payload = JSON.parse(event.payload);
36-
} catch (error: any) {
37-
error.message = "Invalid JSON";
38-
error.status = 400;
39-
throw new AggregateError([error], error.message);
40-
}
41-
42-
return state.eventHandler.receive({
43-
id: event.id,
44-
name: event.name,
45-
payload,
46-
} as EmitterWebhookEvent);
12+
return state.eventHandler.receive(
13+
await verifyAndParse(state.secret, event, state.additionalSecrets),
14+
);
4715
}

0 commit comments

Comments
 (0)