1
0
mirror of https://github.com/uetchy/namae.git synced 2025-08-20 01:48:12 +09:00

feat: cache only if the response is succeeded

This commit is contained in:
2019-08-01 13:22:03 +09:00
parent 536e65e10e
commit a8fa8a04d1
12 changed files with 43 additions and 34 deletions

View File

@@ -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)
}
}

View File

@@ -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)
}
}

View File

@@ -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)
}
}

View File

@@ -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)
}
}

View File

@@ -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)
}
}

View File

@@ -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)
}
}

View File

@@ -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)
}
}

View File

@@ -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)
}
}

View File

@@ -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)
}
}

View File

@@ -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)
}
}

8
api/util/http.js Normal file
View File

@@ -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 })
}