71 lines
2.3 KiB
TypeScript
71 lines
2.3 KiB
TypeScript
import { Printful, PrintfulClient, PrintfulError, Webflow, WebflowClient, WebflowError } from "@blade-and-brawn/commerce";
|
|
import { env } from "../util";
|
|
|
|
const DOMAIN = "dev.api.bladeandbrawn.com";
|
|
|
|
const PRINTFUL_WEBHOOK_URL = env.NODE_ENV === "development" ?
|
|
`http://${DOMAIN}/webhooks/printful?secret=${env.PRINTFUL_WEBHOOK_SECRET}` :
|
|
`https://${DOMAIN}/webhooks/printful?secret=${env.PRINTFUL_WEBHOOK_SECRET}`;
|
|
// http dosent work for webflow, so cant register properly for development env
|
|
const WEBFLOW_WEBHOOK_URL = `https://${DOMAIN}/webhooks/webflow`;
|
|
|
|
function printError(err: unknown): never {
|
|
if (err instanceof WebflowError || err instanceof PrintfulError)
|
|
console.error(`${err.message}\n`, JSON.stringify(err.payload, null, 2));
|
|
else
|
|
console.error(err);
|
|
process.exit(1);
|
|
}
|
|
|
|
// Register printful webhook
|
|
try {
|
|
console.log("Registering printful webhook...");
|
|
const printful = new PrintfulClient({
|
|
token: env.PRINTFUL_AUTH,
|
|
storeId: env.PRINTFUL_STORE_ID,
|
|
});
|
|
|
|
await printful.Webhooks.create(PRINTFUL_WEBHOOK_URL, [
|
|
Printful.Webhook.Event.ProductUpdated,
|
|
Printful.Webhook.Event.ProductDeleted,
|
|
Printful.Webhook.Event.PackageShipped,
|
|
]);
|
|
|
|
const webhook = await printful.Webhooks.get();
|
|
console.log("Finished: ");
|
|
console.log(webhook);
|
|
} catch (err) {
|
|
printError(err);
|
|
}
|
|
|
|
// Register webflow webhooks
|
|
try {
|
|
console.log("Registering webflow webhooks...");
|
|
const webflow = new WebflowClient({
|
|
siteId: env.WEBFLOW_SITE_ID,
|
|
collectionIds: {
|
|
products: env.WEBFLOW_COLLECTION_PRODUCTS_ID,
|
|
skus: env.WEBFLOW_COLLECTION_SKUS_ID
|
|
},
|
|
token: env.WEBFLOW_AUTH,
|
|
webhookSecret: env.WEBFLOW_WEBHOOK_SECRET,
|
|
});
|
|
|
|
const events: Webflow.Webhook.Event[] = [
|
|
Webflow.Webhook.Event.OrderCreated,
|
|
];
|
|
|
|
const webhooksToDelete = await webflow.Webhooks.list({ forceAll: true });
|
|
for (const webhook of webhooksToDelete)
|
|
await webflow.Webhooks.remove(webhook.id);
|
|
|
|
for (const event of events)
|
|
await webflow.Webhooks.create(WEBFLOW_WEBHOOK_URL, event);
|
|
|
|
const webhooks = await webflow.Webhooks.list({ forceAll: true });
|
|
console.log("Finished: ");
|
|
console.log(webhooks);
|
|
} catch (err) {
|
|
printError(err);
|
|
}
|