From 2a72eb085ca01a7f5f827c4300a1425aced1fa69 Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Fri, 6 Mar 2020 03:10:05 +0100 Subject: [PATCH] site: move github fetching to serverless function --- .gitignore | 3 ++- now.json | 5 +++++ site/.env.example | 1 + site/api/github.js | 18 ++++++++++++++++++ site/package.json | 10 ++++++++++ site/scripts.js | 17 ++--------------- 6 files changed, 38 insertions(+), 16 deletions(-) create mode 100644 now.json create mode 100644 site/.env.example create mode 100644 site/api/github.js create mode 100644 site/package.json diff --git a/.gitignore b/.gitignore index f371fb8..cb0e38c 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,5 @@ dist coverage .next out -.env \ No newline at end of file +.env +.now \ No newline at end of file diff --git a/now.json b/now.json new file mode 100644 index 0000000..75bbbfb --- /dev/null +++ b/now.json @@ -0,0 +1,5 @@ +{ + "env": { + "GITHUB_TOKEN": "@github_token" + } +} diff --git a/site/.env.example b/site/.env.example new file mode 100644 index 0000000..0c6a33d --- /dev/null +++ b/site/.env.example @@ -0,0 +1 @@ +GITHUB_TOKEN= \ No newline at end of file diff --git a/site/api/github.js b/site/api/github.js new file mode 100644 index 0000000..40c9998 --- /dev/null +++ b/site/api/github.js @@ -0,0 +1,18 @@ +const axios = require('axios') +require('dotenv').config + +module.exports = async (req, res) => { + try { + const response = await axios( + 'https://api.github.com/repos/kremalicious/blowfish/releases/latest', + { + headers: { + Authorization: `token ${process.env.GITHUB_TOKEN}` + } + } + ) + res.status(200).send(response.data) + } catch (error) { + console.error(error.message) + } +} diff --git a/site/package.json b/site/package.json new file mode 100644 index 0000000..7ee18cc --- /dev/null +++ b/site/package.json @@ -0,0 +1,10 @@ +{ + "name": "blowfish-site", + "version": "1.0.0", + "author": "", + "license": "MIT", + "dependencies": { + "axios": "^0.19.2", + "dotenv": "^8.2.0" + } +} diff --git a/site/scripts.js b/site/scripts.js index 7cf41f5..b53cbe5 100644 --- a/site/scripts.js +++ b/site/scripts.js @@ -1,24 +1,11 @@ async function init() { - const release = await getLatestRelease() + const response = await fetch('/api/github') + const release = await response.json() replaceDom(release) } window.addEventListener('load', () => init()) -async function getLatestRelease() { - const response = await fetch( - 'https://api.github.com/repos/kremalicious/blowfish/releases/latest' - ) - - if (response.status !== 200) { - console.error(`Non-200 response code from GitHub: ${response.status}`) - return null - } - - const json = await response.json() - return json -} - function getDownloads(release) { const downloads = release.assets .filter(