2
0

first commit

This commit is contained in:
2024-08-09 00:39:27 +02:00
commit 79688abe2e
5698 changed files with 497838 additions and 0 deletions

View File

@@ -0,0 +1,47 @@
import { z } from "zod";
import type { UpdateAppCredentialsOptions } from "@calcom/trpc/server/routers/viewer/apps/updateAppCredentials.handler";
import Paypal from "./Paypal";
const schema = z.object({
credentialId: z.coerce.number(),
key: z.object({
client_id: z.string(),
secret_key: z.string(),
}),
});
const handlePaypalValidations = async ({ input }: UpdateAppCredentialsOptions) => {
const validated = schema.safeParse(input);
if (!validated.success) throw new Error("Invalid input");
const { key } = validated.data;
// Test credentials before saving
const paypalClient = new Paypal({ clientId: key.client_id, secretKey: key.secret_key });
const test = await paypalClient.test();
if (!test) throw new Error("Provided credentials failed to authenticate");
// Delete all existing webhooks
const webhooksToDelete = await paypalClient.listWebhooks();
if (webhooksToDelete) {
const promises = webhooksToDelete.map((webhook) => paypalClient.deleteWebhook(webhook));
await Promise.all(promises);
}
// Create webhook for this installation
const webhookId = await paypalClient.createWebhook();
if (!webhookId) {
// @TODO: make a button that tries to create the webhook again
console.error("Failed to create webhook", webhookId);
throw new Error("Failed to create webhook");
}
return {
client_id: key.client_id,
secret_key: key.secret_key,
webhook_id: webhookId,
};
};
export default handlePaypalValidations;