gatsby-pingbot/api/index.js

107 lines
1.9 KiB
JavaScript

import axios from 'axios'
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 axios.get(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(
{
success: true,
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(
{
success: true, url:
req.query.url
}
)
break
default:
res.status(404).json(
{
success: false
}
)
break
}
}