about summary refs log tree commit diff
path: root/website/sandbox/contentful/src/contentful.ts
diff options
context:
space:
mode:
Diffstat (limited to 'website/sandbox/contentful/src/contentful.ts')
-rw-r--r--website/sandbox/contentful/src/contentful.ts25
1 files changed, 25 insertions, 0 deletions
diff --git a/website/sandbox/contentful/src/contentful.ts b/website/sandbox/contentful/src/contentful.ts
new file mode 100644
index 000000000000..e09cd8fc4ad3
--- /dev/null
+++ b/website/sandbox/contentful/src/contentful.ts
@@ -0,0 +1,25 @@
+import { createClient } from "contentful";
+import type { ContentfulClientApi } from "contentful";
+
+const space = process.env.CONTENTFUL_SPACE_ID;
+const accessToken = process.env.CONTENTFUL_ACCESS_TOKEN;
+
+let client: ContentfulClientApi;
+
+// Idempotent way to get a reference to the Contentful client.
+export const getClient = (): ContentfulClientApi => {
+  if (typeof client !== 'undefined') {
+    return client;
+  } else {
+    if (typeof space === 'string' && typeof accessToken === 'string') {
+      let client = createClient({
+        space,
+        accessToken,
+      });
+
+      return client;
+    } else {
+      throw new Error('Please set CONTENTFUL_SPACE_ID and CONTENTFUL_ACCESS_TOKEN');
+    }
+  }
+}