diff --git a/src/components/JsOrgCard.js b/src/components/JsOrgCard.js index bd06276..fa16371 100644 --- a/src/components/JsOrgCard.js +++ b/src/components/JsOrgCard.js @@ -7,10 +7,9 @@ export default function JsOrgCard({ name }) { js.org } /> diff --git a/src/services/dns.js b/src/services/dns.js new file mode 100644 index 0000000..64d32b8 --- /dev/null +++ b/src/services/dns.js @@ -0,0 +1,30 @@ +var dns = require('dns') + +function resolvePromise(hostname) { + return new Promise((resolve, reject) => { + dns.resolve4(hostname, function(err, addresses) { + if (err) return reject(err) + resolve(addresses) + }) + }) +} + +module.exports = async (req, res) => { + const name = req.query.name + + if (!name) { + return res.status(400).json({ error: 'no query given' }) + } + + try { + const response = await resolvePromise(name) + const availability = response && response.length > 0 ? false : true + + res.json({ availability }) + } catch (err) { + if (err.code === 'ENODATA') { + return res.status(200).json({ availability: true }) + } + res.status(400).json({ error: err.message }) + } +} diff --git a/src/services/jsorg.js b/src/services/jsorg.js deleted file mode 100644 index 99d5af5..0000000 --- a/src/services/jsorg.js +++ /dev/null @@ -1,29 +0,0 @@ -const fetch = require('isomorphic-unfetch') - -async function getAvailability(name) { - try { - const response = await fetch(`https://${encodeURIComponent(name)}.js.org`) - return response.status !== 200 - } catch (err) { - if (err.code === 'ENOTFOUND') { - return true - } else { - throw new Error(err.message) - } - } -} - -module.exports = async (req, res) => { - const name = req.query.name - - if (!name) { - return res.status(400).json({ error: 'no query given' }) - } - - try { - const availability = await getAvailability(name) - res.json({ availability }) - } catch (err) { - res.status(400).json({ error: err.message }) - } -}