about summary refs log tree commit diff
path: root/website/sandbox/contentful/src/contentful.ts
diff options
context:
space:
mode:
authorWilliam Carroll <wpcarro@gmail.com>2020-03-24T13·27+0000
committerWilliam Carroll <wpcarro@gmail.com>2020-03-24T13·27+0000
commit527aeeeced9fdcc2fc3a6a08c58ceb3a17ae2122 (patch)
tree0d7d31079c2b7e1791e4726ca47ff25a812e325e /website/sandbox/contentful/src/contentful.ts
parent57b58e9b2fe2a1b178f42bc16d7c5ab1f8da9cdd (diff)
Add sandbox project using Contentful CMS
I used the boilerplate/typescript project as a starting point. This project
fetches and renders books that I'm defining in a Contentful CMS that I created.
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');
+    }
+  }
+}