diff --git a/api/services/cratesio.js b/api/services/cratesio.js index c1296a9..ad09632 100644 --- a/api/services/cratesio.js +++ b/api/services/cratesio.js @@ -1,11 +1,5 @@ const fetch = require('isomorphic-unfetch') - -async function getAvailability(name) { - const response = await fetch( - `https://crates.io/api/v1/crates/${encodeURIComponent(name)}` - ) - return response.status !== 200 -} +const { send, sendError } = require('../util/http') module.exports = async (req, res) => { const name = req.query.name @@ -15,9 +9,12 @@ module.exports = async (req, res) => { } try { - const availability = await getAvailability(name) - res.json({ availability }) + const response = await fetch( + `https://crates.io/api/v1/crates/${encodeURIComponent(name)}` + ) + const availability = response.status !== 200 + send(res, availability) } catch (err) { - res.status(400).json({ error: err.message }) + sendError(res, err) } } diff --git a/api/services/dns.js b/api/services/dns.js index aee43bd..595cb90 100644 --- a/api/services/dns.js +++ b/api/services/dns.js @@ -1,4 +1,5 @@ var dns = require('dns') +const { send, sendError } = require('../util/http') function resolvePromise(hostname) { return new Promise((resolve, reject) => { @@ -19,12 +20,11 @@ module.exports = async (req, res) => { try { const response = await resolvePromise(name) const availability = response && response.length > 0 ? false : true - - res.json({ availability }) + send(res, availability) } catch (err) { if (err.code === 'ENODATA' || err.code === 'ENOTFOUND') { return res.status(200).json({ availability: true }) } - res.status(400).json({ error: err.message }) + sendError(res, err) } } diff --git a/api/services/domain.js b/api/services/domain.js index 4497093..aba8f2c 100644 --- a/api/services/domain.js +++ b/api/services/domain.js @@ -1,4 +1,5 @@ import whois from 'whois-json' +const { send, sendError } = require('../util/http') module.exports = async (req, res) => { const name = req.query.name @@ -10,9 +11,8 @@ module.exports = async (req, res) => { try { const response = await whois(name, { follow: 3, verbose: true }) const availability = response[0].data.domainName ? false : true - - res.json({ availability }) + send(res, availability) } catch (err) { - res.status(400).json({ error: err.message }) + sendError(res, err) } } diff --git a/api/services/github.js b/api/services/github.js index 6b314b6..d8ac9ab 100644 --- a/api/services/github.js +++ b/api/services/github.js @@ -1,4 +1,5 @@ const fetch = require('isomorphic-unfetch') +const { send, sendError } = require('../util/http') async function getAvailability(name) { const response = await fetch(`https://github.com/${encodeURIComponent(name)}`) @@ -14,8 +15,8 @@ module.exports = async (req, res) => { try { const availability = await getAvailability(name) - res.json({ availability }) + send(res, availability) } catch (err) { - res.status(400).json({ error: err.message }) + sendError(res, err) } } diff --git a/api/services/npm-org.js b/api/services/npm-org.js index 6a85958..230419d 100644 --- a/api/services/npm-org.js +++ b/api/services/npm-org.js @@ -1,4 +1,5 @@ const npmName = require('npm-name') +const { send, sendError } = require('../util/http') module.exports = async (req, res) => { const name = req.query.name @@ -9,8 +10,8 @@ module.exports = async (req, res) => { try { const availability = await npmName(`@${name}`) - res.json({ availability }) + send(res, availability) } catch (err) { - res.status(400).json({ error: err.message }) + sendError(res, err) } } diff --git a/api/services/npm.js b/api/services/npm.js index f50e6e6..1436861 100644 --- a/api/services/npm.js +++ b/api/services/npm.js @@ -1,4 +1,5 @@ const npmName = require('npm-name') +const { send, sendError } = require('../util/http') module.exports = async (req, res) => { const name = req.query.name @@ -9,8 +10,8 @@ module.exports = async (req, res) => { try { const availability = await npmName(name) - res.json({ availability }) + send(res, availability) } catch (err) { - res.status(400).json({ error: err.message }) + sendError(res, err) } } diff --git a/api/services/pypi.js b/api/services/pypi.js index 3fb5666..a074969 100644 --- a/api/services/pypi.js +++ b/api/services/pypi.js @@ -1,4 +1,5 @@ const fetch = require('isomorphic-unfetch') +const { send, sendError } = require('../util/http') async function getAvailability(name) { const response = await fetch( @@ -16,8 +17,8 @@ module.exports = async (req, res) => { try { const availability = await getAvailability(name) - res.json({ availability }) + send(res, availability) } catch (err) { - res.status(400).json({ error: err.message }) + sendError(res, err) } } diff --git a/api/services/s3.js b/api/services/s3.js index 5db8534..e9a070e 100644 --- a/api/services/s3.js +++ b/api/services/s3.js @@ -1,4 +1,5 @@ const fetch = require('isomorphic-unfetch') +const { send, sendError } = require('../util/http') async function getAvailability(name) { const response = await fetch( @@ -16,8 +17,8 @@ module.exports = async (req, res) => { try { const availability = await getAvailability(name) - res.json({ availability }) + send(res, availability) } catch (err) { - res.status(400).json({ error: err.message }) + sendError(res, err) } } diff --git a/api/services/slack.js b/api/services/slack.js index cb23e31..01e57e1 100644 --- a/api/services/slack.js +++ b/api/services/slack.js @@ -1,4 +1,5 @@ const fetch = require('isomorphic-unfetch') +const { send, sendError } = require('../util/http') async function getAvailability(name) { try { @@ -24,8 +25,8 @@ module.exports = async (req, res) => { try { const availability = await getAvailability(name) - res.json({ availability }) + send(res, availability) } catch (err) { - res.status(400).json({ error: err.message }) + sendError(res, err) } } diff --git a/api/services/twitter.js b/api/services/twitter.js index 60b6888..d57257a 100644 --- a/api/services/twitter.js +++ b/api/services/twitter.js @@ -1,4 +1,5 @@ const fetch = require('isomorphic-unfetch') +const { send, sendError } = require('../util/http') async function getAvailability(name) { const response = await fetch( @@ -16,8 +17,8 @@ module.exports = async (req, res) => { try { const availability = await getAvailability(name) - res.json({ availability }) + send(res, availability) } catch (err) { - res.status(400).json({ error: err.message }) + sendError(res, err) } } diff --git a/api/util/http.js b/api/util/http.js new file mode 100644 index 0000000..cd14bc9 --- /dev/null +++ b/api/util/http.js @@ -0,0 +1,8 @@ +exports.send = (res, availability) => { + res.setHeader('Cache-Control', 'maxage=0, s-maxage=3600') + res.json({ availability }) +} + +exports.sendError = (res, error) => { + res.status(400).json({ error: error.message }) +} diff --git a/now.json b/now.json index 5792d65..ab8a719 100644 --- a/now.json +++ b/now.json @@ -16,10 +16,7 @@ "routes": [ { "src": "/availability/(?[^/]+)/(?[^/]+)", - "dest": "/api/services/$provider.js?name=$id", - "headers": { - "Cache-Control": "maxage=0, s-maxage=3600" - } + "dest": "/api/services/$provider.js?name=$id" }, { "src": "/(.*)",