gatsby-pingbot/api/index.js

59 lines
1.4 KiB
JavaScript

import fetch from 'node-fetch'
import connectToDatabase from './lib/dbConnect'
export default async (req, res) => {
const { method } = req
const db = await connectToDatabase()
switch (method) {
case 'POST':
if (!req.body || !req.body.url || !req.body.cluster) {
return res.status(400).json({ success: false, message: 'Invalid body' })
}
try {
await fetch(req.body.url)
} catch {
return res.status(400).json({ success: false, message: 'Invalid URL' })
}
try {
await db.coll.insertOne({
_id: req.body.url,
cluster: req.body.cluster
})
} catch {
return res.status(400).json({ success: false, message: 'Error Inserting to DB' })
}
res.status(200).json({ url: req.body.url })
break
case 'DELETE':
if (!req.query.url) {
return res.status(400).json({ success: false, message: 'Invalid body' })
}
try {
const { deletedCount } = await db.coll.deleteOne({
_id: req.query.url
})
if (deletedCount == 0) {
return res.status(400).json({ success: false, message: 'Not Found' })
}
} catch {
return res.status(400).json({ success: false, message: 'Error Deleting from DB' })
}
res.status(200).json({ url: req.query.url })
break
default:
res.status(404).json({ success: false })
break
}
}