gatsby-pingbot/lib/api/add.ts

47 lines
974 B
TypeScript

import { VercelResponse } from '@vercel/node'
import axios from 'axios'
import blacklist from './blacklist.json'
import dbConnect from '../dbConnect'
import URLModel from '../schema'
export default async function addURL(url: string, response: VercelResponse) {
blacklist.forEach(b => {
if (url.includes(b)) {
return response.status(400).json({
success: false,
message: 'URL in on blacklist'
})
}
})
// fetch url (e.g. check domain exist)
try {
await axios.get(url)
} catch (err) {
return response.status(400).json({
success: false,
message: 'Invalid URL'
})
}
await dbConnect()
try {
const dbURL = new URLModel({ url })
await dbURL.save()
return response.status(200).json({
success: true,
message: `Added ${url}`
})
} catch (err) {
console.error(err)
return response.status(400).json({
success: false,
message: 'Already exist?'
})
}
}