gatsby-pingbot/api/index.js

70 lines
1.5 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) {
res.status(400).json({ success: false, message: "Invalid body" })
return
}
try {
await fetch(req.body.url)
} catch {
res.status(400).json({ success: false, message: "Invalid URL" })
return
}
try {
await db.coll.insertOne({
_id: req.body.url,
cluster: req.body.cluster
})
} catch {
res.status(400).json({ success: false, message: "Error Inserting to DB" })
return
}
res.status(200).json({ url: req.body.url })
break
case "DELETE":
if (!req.query.url) {
res.status(400).json({ success: false, message: "Invalid body" })
return
}
try {
const { deletedCount } = await db.coll.deleteOne({
_id: req.query.url
})
if (deletedCount == 0) {
res.status(400).json({ success: false, message: "Not Found" })
return
}
} catch {
res.status(400).json({ success: false, message: "Error Deleting from DB" })
return
}
res.status(200).json({ url: req.query.url })
break
default:
res.status(404).json({ success: false })
break
}
}