Migrated to new webhook format
This commit is contained in:
parent
db6b331380
commit
73dfc452cc
|
@ -21,7 +21,7 @@ const redirect = (redirectURL: string, headers: Record<string, string> = {}): Re
|
||||||
const localeAgnosticPaths = ["/api/"];
|
const localeAgnosticPaths = ["/api/"];
|
||||||
|
|
||||||
const localeNegotiator = defineMiddleware(({ cookies, url, request }, next) => {
|
const localeNegotiator = defineMiddleware(({ cookies, url, request }, next) => {
|
||||||
if (localeAgnosticPaths.some((prefix) => url.pathname.startsWith(prefix))) {
|
if (localeAgnosticPaths.some((prefix) => url.pathname.includes(prefix))) {
|
||||||
return next();
|
return next();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,40 +0,0 @@
|
||||||
---
|
|
||||||
import { Collections } from "src/shared/payload/payload-sdk";
|
|
||||||
import {
|
|
||||||
refreshCurrencies,
|
|
||||||
refreshLocales,
|
|
||||||
refreshWordings,
|
|
||||||
refreshWebsiteConfig,
|
|
||||||
} from "src/utils/payload";
|
|
||||||
|
|
||||||
const auth = Astro.request.headers.get("Authorization");
|
|
||||||
|
|
||||||
if (auth !== `Bearer ${import.meta.env.WEB_HOOK_TOKEN}`) {
|
|
||||||
return new Response(null, { status: 403, statusText: "Forbidden" });
|
|
||||||
}
|
|
||||||
|
|
||||||
const collectionSlug = Astro.request.headers.get("Collection");
|
|
||||||
|
|
||||||
switch (collectionSlug) {
|
|
||||||
case Collections.Wordings:
|
|
||||||
await refreshWordings();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Collections.Currencies:
|
|
||||||
await refreshCurrencies();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Collections.Languages:
|
|
||||||
await refreshLocales();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Collections.WebsiteConfig:
|
|
||||||
await refreshWebsiteConfig();
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
return new Response(null, { status: 400, statusText: "Bad Request" });
|
|
||||||
}
|
|
||||||
|
|
||||||
return new Response(null, { status: 200, statusText: "Ok" });
|
|
||||||
---
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
import type { APIRoute } from "astro";
|
||||||
|
import { Collections, type WebHookMessage } from "src/shared/payload/payload-sdk";
|
||||||
|
import {
|
||||||
|
refreshCurrencies,
|
||||||
|
refreshLocales,
|
||||||
|
refreshWebsiteConfig,
|
||||||
|
refreshWordings,
|
||||||
|
} from "src/utils/payload";
|
||||||
|
|
||||||
|
export const POST: APIRoute = async ({ request }) => {
|
||||||
|
const auth = request.headers.get("Authorization");
|
||||||
|
|
||||||
|
if (auth !== `Bearer ${import.meta.env.WEB_HOOK_TOKEN}`) {
|
||||||
|
return new Response(null, { status: 403, statusText: "Forbidden" });
|
||||||
|
}
|
||||||
|
|
||||||
|
const message = (await request.json()) as WebHookMessage;
|
||||||
|
console.log("[Webhook] Received message from CMS:", message);
|
||||||
|
|
||||||
|
switch (message.collection) {
|
||||||
|
case Collections.Wordings:
|
||||||
|
await refreshWordings();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Collections.Currencies:
|
||||||
|
await refreshCurrencies();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Collections.Languages:
|
||||||
|
await refreshLocales();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Collections.WebsiteConfig:
|
||||||
|
await refreshWebsiteConfig();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Response(null, { status: 200, statusText: "Ok" });
|
||||||
|
};
|
|
@ -1276,6 +1276,20 @@ export enum AttributeTypes {
|
||||||
Tags = "Tags",
|
Tags = "Tags",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* WEB HOOKS */
|
||||||
|
|
||||||
|
export interface WebHookMessage {
|
||||||
|
collection: Collections;
|
||||||
|
operation: WebHookOperationType;
|
||||||
|
id?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export enum WebHookOperationType {
|
||||||
|
create = "create",
|
||||||
|
update = "update",
|
||||||
|
delete = "delete",
|
||||||
|
}
|
||||||
|
|
||||||
/* RICH TEXT */
|
/* RICH TEXT */
|
||||||
|
|
||||||
export type RichTextContent = {
|
export type RichTextContent = {
|
||||||
|
|
Loading…
Reference in New Issue