mirror of
https://github.com/uetchy/namae.git
synced 2025-03-17 04:30:31 +09:00
feat: cache only if the response is succeeded
This commit is contained in:
parent
536e65e10e
commit
a8fa8a04d1
@ -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)
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
@ -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
8
api/util/http.js
Normal 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 })
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user