107 lines
1.9 KiB
JavaScript
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
|
|
}
|
|
}
|