2021-09-15 19:39:07 +00:00
|
|
|
import { VercelRequest, VercelResponse } from '@vercel/node'
|
|
|
|
import axios from 'axios'
|
|
|
|
import dbConnect from '../lib/dbConnect'
|
|
|
|
import URLModel from '../lib/schema'
|
|
|
|
|
|
|
|
export default async (request: VercelRequest, response: VercelResponse) => {
|
|
|
|
const { method } = request
|
2021-09-16 20:47:50 +00:00
|
|
|
await dbConnect()
|
2021-09-15 19:39:07 +00:00
|
|
|
|
|
|
|
switch (method) {
|
|
|
|
case 'POST':
|
|
|
|
if (!request.body || !request.body.url) {
|
|
|
|
return response.status(400).json(
|
|
|
|
{
|
|
|
|
success: false,
|
|
|
|
message: 'Invalid body'
|
|
|
|
}
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
try {
|
|
|
|
await axios.get(request.body.url)
|
|
|
|
} catch (err) {
|
2021-09-16 20:47:50 +00:00
|
|
|
console.error(err)
|
2021-09-15 19:39:07 +00:00
|
|
|
return response.status(400).json(
|
|
|
|
{
|
|
|
|
success: false,
|
|
|
|
message: 'Invalid URL'
|
|
|
|
}
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
try {
|
|
|
|
const url = new URLModel({
|
|
|
|
url: request.body.url
|
|
|
|
})
|
|
|
|
|
|
|
|
await url.save()
|
|
|
|
|
|
|
|
return response.status(200).json(
|
|
|
|
{
|
|
|
|
success: true,
|
|
|
|
url: request.body.url
|
|
|
|
}
|
|
|
|
)
|
|
|
|
} catch (err) {
|
2021-09-16 20:47:50 +00:00
|
|
|
console.error(err)
|
2021-09-15 19:39:07 +00:00
|
|
|
return response.status(400).json(
|
|
|
|
{
|
|
|
|
success: false,
|
|
|
|
message: 'Error Inserting to DB'
|
|
|
|
}
|
|
|
|
)
|
|
|
|
}
|
|
|
|
case 'DELETE':
|
|
|
|
if (!request.query.url) {
|
|
|
|
return response.status(400).json(
|
|
|
|
{
|
|
|
|
success: false,
|
|
|
|
message: 'Invalid body'
|
|
|
|
}
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
try {
|
|
|
|
const url = request.query.url
|
|
|
|
|
2021-09-16 20:47:50 +00:00
|
|
|
if (typeof url != 'string') {
|
2021-09-15 19:39:07 +00:00
|
|
|
return response.status(400).json(
|
|
|
|
{
|
|
|
|
success: false,
|
|
|
|
message: 'Query URL isn\'t string'
|
|
|
|
}
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
await URLModel.deleteOne({
|
|
|
|
url
|
|
|
|
})
|
|
|
|
|
|
|
|
return response.status(200).json(
|
|
|
|
{
|
|
|
|
success: true,
|
|
|
|
message: 'Deleted!',
|
|
|
|
url
|
|
|
|
}
|
|
|
|
)
|
|
|
|
} catch (err) {
|
2021-09-16 20:47:50 +00:00
|
|
|
console.error(err)
|
2021-09-15 19:39:07 +00:00
|
|
|
return response.status(400).json(
|
|
|
|
{
|
|
|
|
success: false,
|
|
|
|
message: 'Error Deleting from DB'
|
|
|
|
}
|
|
|
|
)
|
|
|
|
}
|
|
|
|
default:
|
2021-09-16 20:47:50 +00:00
|
|
|
response.status(200).json({
|
|
|
|
db: await URLModel.find()
|
|
|
|
})
|
2021-09-15 19:39:07 +00:00
|
|
|
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|