From b992e50faf69e6f9e2d17385c0b05191e29bd49c Mon Sep 17 00:00:00 2001 From: 简律纯 Date: Fri, 28 Apr 2023 00:28:05 +0800 Subject: --- docs/lib/ConvertKitApi.ts | 59 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 docs/lib/ConvertKitApi.ts (limited to 'docs/lib/ConvertKitApi.ts') diff --git a/docs/lib/ConvertKitApi.ts b/docs/lib/ConvertKitApi.ts new file mode 100644 index 0000000..3e35ec9 --- /dev/null +++ b/docs/lib/ConvertKitApi.ts @@ -0,0 +1,59 @@ +import axios from "axios"; + +const API_KEY = process.env.CONVERTKIT_API_KEY; +const API_SECRET = process.env.CONVERTKIT_API_SECRET; + +const Http = axios.create({ + baseURL: "https://api.convertkit.com/v3", + headers: { + "Content-Type": "application/json; charset=utf-8", + }, +}); + +export function subscribeToForm({ + formId, + email, + firstName, + fields, +}: { + formId: string; + email: string; + firstName: string; + fields?: Record; +}): Promise { + return Http(`/forms/${formId}/subscribe`, { + method: "POST", + data: { api_key: API_KEY, email, first_name: firstName, fields }, + }).then((res) => res.data.subscription?.subscriber); +} + +export function updateSubscriber( + id: string, + update: Subscriber +): Promise { + return Http(`/subscribers/${id}`, { + method: "PUT", + data: { + api_secret: API_SECRET, + ...update, + }, + }).then((res) => res.data); +} + +export interface Subscriber { + id: number; + first_name: string; + email_address: string; + state: string; // maybe 'active' | 'inactive' + created_at: string; + fields: Record; +} + +export function getSubscriber(id: string): Promise { + return Http(`/subscribers/${id}`, { + method: "GET", + data: { + api_secret: API_SECRET, + }, + }).then((res) => res.data.subscriber); +} \ No newline at end of file -- cgit v1.2.3-70-g09d2