feat(cloud): create subscribers

This commit is contained in:
Henry
2026-07-31 16:25:25 +01:00
parent 4291d7bc8c
commit d6aa82e070
5 changed files with 96 additions and 10 deletions

View File

@@ -2,3 +2,4 @@ export const name = "email";
export { sendEmail } from "./sendEmail";
export { notificationClient } from "./notificationClient";
export { createSubscriber } from "./subscriberClient";

View File

@@ -0,0 +1,53 @@
import { createLogger } from "@kan/logger";
const log = createLogger("subscriberClient");
export const subscriberClient =
process.env.NEXT_PUBLIC_KAN_ENV === "cloud" &&
process.env.SUBSCRIBER_API_URL &&
process.env.SUBSCRIBER_API_KEY &&
process.env.SUBSCRIBER_ENVIRONMENT_ID
? {
apiUrl: process.env.SUBSCRIBER_API_URL,
apiKey: process.env.SUBSCRIBER_API_KEY,
environmentId: process.env.SUBSCRIBER_ENVIRONMENT_ID,
}
: null;
interface CreateSubscriberInput {
email: string;
externalId: string;
firstName?: string;
lastName?: string;
name?: string;
}
export async function createSubscriber(input: CreateSubscriberInput) {
if (!subscriberClient) return;
try {
const response = await fetch(
`${subscriberClient.apiUrl}/environments/${subscriberClient.environmentId}/subscribers`,
{
method: "POST",
headers: {
"Content-Type": "application/json",
"X-API-Key": subscriberClient.apiKey,
},
body: JSON.stringify(input),
},
);
if (!response.ok) {
log.error(
{
status: response.status,
body: await response.text().catch(() => undefined),
},
"Failed to create subscriber.dev subscriber",
);
}
} catch (error) {
log.error({ err: error }, "Error creating subscriber.dev subscriber");
}
}