This commit is contained in:
Medzik 2021-09-03 20:25:42 +00:00
parent e468f3ea4d
commit 7d6d25bacc
3 changed files with 73 additions and 24 deletions

View File

@ -1,6 +1,6 @@
import fetch from 'node-fetch'
import axios from 'axios'
import connectToDatabase from './lib/dbConnect'
import connectToDatabase from '../lib/dbConnect'
export default async (req, res) => {
const { method } = req
@ -9,49 +9,97 @@ export default async (req, res) => {
switch (method) {
case 'POST':
if (!req.body || !req.body.url || !req.body.cluster) {
return res.status(400).json({ success: false, message: 'Invalid body' })
return res.status(400).json(
{
success: false,
message: 'Invalid body'
}
)
}
try {
await fetch(req.body.url)
await axios.get(req.body.url)
} catch {
return res.status(400).json({ success: false, message: 'Invalid URL' })
return res.status(400).json(
{
success: false,
message: 'Invalid URL'
}
)
}
try {
await db.coll.insertOne({
_id: req.body.url,
cluster: req.body.cluster
})
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' })
return res.status(400).json(
{
success: false,
message: 'Error Inserting to DB'
}
)
}
res.status(200).json({ success: true, url: req.body.url })
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' })
return res.status(400).json(
{
success: false,
message: 'Invalid body'
}
)
}
try {
const { deletedCount } = await db.coll.deleteOne({
_id: req.query.url
})
const { deletedCount } = await db.coll.deleteOne(
{
_id: req.query.url
}
)
if (deletedCount == 0) {
return res.status(400).json({ success: false, message: 'Not Found' })
return res.status(400).json(
{
success: false,
message: 'Not Found'
}
)
}
} catch {
return res.status(400).json({ success: false, message: 'Error Deleting from DB' })
return res.status(400).json(
{
success: false,
message: 'Error Deleting from DB'
}
)
}
res.status(200).json({ success: true, url: req.query.url })
res.status(200).json(
{
success: true, url:
req.query.url
}
)
break
default:
res.status(404).json({ success: false })
res.status(404).json(
{
success: false
}
)
break
}

View File

@ -5,13 +5,15 @@ const { MONGODB_URI, MONGODB_DB, MONGODB_COLLECTION } = process.env
let cached = global.mongo
if (!cached) {
cached = global.mongo = { conn: null, promise: null }
cached = global.mongo = {
conn: null,
promise: null
}
}
export default async function connectToDatabase() {
if (cached.conn) {
if (cached.conn)
return cached.conn
}
if (!cached.promise) {
const opts = {

View File

@ -1,6 +1,6 @@
{
"name": "pingbot",
"version": "1.0.0",
"version": "0.0.0",
"private": true,
"description": "Keep your apps alive on replit.com or glitch.com",
"author": "Medzik",
@ -25,7 +25,6 @@
"gatsby-plugin-transition-link": "1.20.5",
"gsap": "3.7.1",
"mongodb": "4.1.1",
"node-fetch": "2.6.1",
"prop-types": "15.7.2",
"react": "17.0.2",
"react-dom": "17.0.2",