mirror of
https://github.com/MedzikUser/gatsby-pingbot
synced 2024-08-15 03:20:27 +00:00
update
This commit is contained in:
parent
a3befce3b2
commit
1e34b047cd
5 changed files with 160 additions and 67 deletions
69
api/index.ts
69
api/index.ts
|
@ -1,12 +1,12 @@
|
|||
import { VercelRequest, VercelResponse } from '@vercel/node'
|
||||
import axios from 'axios'
|
||||
import addURL from '../lib/api/add'
|
||||
import deleteURL from '../lib/api/delete'
|
||||
|
||||
import dbConnect from '../lib/dbConnect'
|
||||
import URLModel from '../lib/schema'
|
||||
|
||||
export default async (request: VercelRequest, response: VercelResponse) => {
|
||||
const { method } = request
|
||||
await dbConnect()
|
||||
|
||||
switch (method) {
|
||||
case 'POST':
|
||||
|
@ -17,34 +17,7 @@ export default async (request: VercelRequest, response: VercelResponse) => {
|
|||
})
|
||||
}
|
||||
|
||||
try {
|
||||
await axios.get(request.body.url)
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
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,
|
||||
message: `Added ${url.url}`
|
||||
})
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
return response.status(400).json({
|
||||
success: false,
|
||||
message: 'Already exist?'
|
||||
})
|
||||
}
|
||||
return addURL(request.body.url, response)
|
||||
case 'DELETE':
|
||||
if (!request.query.url) {
|
||||
return response.status(400).json({
|
||||
|
@ -53,41 +26,17 @@ export default async (request: VercelRequest, response: VercelResponse) => {
|
|||
})
|
||||
}
|
||||
|
||||
try {
|
||||
const url = request.query.url
|
||||
|
||||
if (typeof url != 'string') {
|
||||
return response.status(400).json({
|
||||
success: false,
|
||||
message: 'Query URL isn\'t string'
|
||||
})
|
||||
}
|
||||
|
||||
const del = await URLModel.findOneAndDelete({
|
||||
url
|
||||
})
|
||||
|
||||
if (del != null) {
|
||||
return response.status(200).json({
|
||||
success: true,
|
||||
message: `Deleted ${url}`,
|
||||
url
|
||||
})
|
||||
} else {
|
||||
return response.status(400).json({
|
||||
success: false,
|
||||
message: 'URL not exist?',
|
||||
url
|
||||
})
|
||||
}
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
if (typeof request.query.url != 'string') {
|
||||
return response.status(400).json({
|
||||
success: false,
|
||||
message: 'Error Deleting from DB'
|
||||
message: 'Query URL isn\'t string'
|
||||
})
|
||||
}
|
||||
|
||||
return deleteURL(request.query.url, response)
|
||||
default:
|
||||
await dbConnect()
|
||||
|
||||
response.status(200).json({
|
||||
db: await URLModel.find()
|
||||
})
|
||||
|
|
36
lib/api/add.ts
Normal file
36
lib/api/add.ts
Normal file
|
@ -0,0 +1,36 @@
|
|||
import { VercelResponse } from '@vercel/node'
|
||||
import axios from 'axios'
|
||||
|
||||
import dbConnect from '../dbConnect'
|
||||
import URLModel from '../schema'
|
||||
|
||||
export default async function addURL(url: string, response: VercelResponse) {
|
||||
// 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?'
|
||||
})
|
||||
}
|
||||
}
|
31
lib/api/delete.ts
Normal file
31
lib/api/delete.ts
Normal file
|
@ -0,0 +1,31 @@
|
|||
import { VercelResponse } from '@vercel/node'
|
||||
import dbConnect from '../dbConnect'
|
||||
import URLModel from '../schema'
|
||||
|
||||
export default async function deleteURL(url: string, response: VercelResponse) {
|
||||
await dbConnect()
|
||||
|
||||
try {
|
||||
const del = await URLModel.findOneAndDelete({ url })
|
||||
|
||||
if (del != null) {
|
||||
return response.status(200).json({
|
||||
success: true,
|
||||
message: `Deleted ${url}`,
|
||||
url
|
||||
})
|
||||
} else {
|
||||
return response.status(400).json({
|
||||
success: false,
|
||||
message: 'URL not exist?',
|
||||
url
|
||||
})
|
||||
}
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
return response.status(400).json({
|
||||
success: false,
|
||||
message: 'Error Deleting from DB'
|
||||
})
|
||||
}
|
||||
}
|
11
package.json
11
package.json
|
@ -1,16 +1,16 @@
|
|||
{
|
||||
"name": "pingbot",
|
||||
"name": "gatsby-pingbot",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"description": "Keep your apps alive on replit.com or glitch.com",
|
||||
"author": "Medzik",
|
||||
"author": "MedzikUser <nivua1fn@duck.com>",
|
||||
"keywords": [
|
||||
"gatsby",
|
||||
"pingbot"
|
||||
],
|
||||
"scripts": {
|
||||
"dev": "gatsby develop",
|
||||
"start": "gatsby develop",
|
||||
"dev": "vc dev",
|
||||
"dev:web": "gatsby develop",
|
||||
"build": "gatsby build",
|
||||
"serve": "gatsby serve",
|
||||
"clean": "gatsby clean",
|
||||
|
@ -38,6 +38,7 @@
|
|||
"@typescript-eslint/parser": "4.31.1",
|
||||
"@vercel/node": "1.12.1",
|
||||
"eslint": "7.32.0",
|
||||
"eslint-plugin-react": "7.25.2"
|
||||
"eslint-plugin-react": "7.25.2",
|
||||
"vercel": "^23.1.2"
|
||||
}
|
||||
}
|
||||
|
|
80
yarn.lock
80
yarn.lock
|
@ -2262,6 +2262,16 @@
|
|||
"@typescript-eslint/types" "4.31.1"
|
||||
eslint-visitor-keys "^2.0.0"
|
||||
|
||||
"@vercel/build-utils@2.12.2":
|
||||
version "2.12.2"
|
||||
resolved "https://registry.yarnpkg.com/@vercel/build-utils/-/build-utils-2.12.2.tgz#285a3bb0b78864fb6f44478257bd275c57aa8651"
|
||||
integrity sha512-KbSgG2ZCVXhUsdbnpv6gC7buygd31jaKiKhrd4Lzv1NwjnoeDZAXlm4hzvSPYHVtCY2jirKJWP2rFtMW8iAh9g==
|
||||
|
||||
"@vercel/go@1.2.3":
|
||||
version "1.2.3"
|
||||
resolved "https://registry.yarnpkg.com/@vercel/go/-/go-1.2.3.tgz#6f2bdba5681f9d64ee17060c5d63589e2d45e2d8"
|
||||
integrity sha512-BZCHRz43Qfr0DwZlZQCcofR+3cr+H+HK72/ZPkZy1Uq0NYjJMlmZ3ahuMgvJxT9lfC1RA6eOEUlUsZ+gqKcMCg==
|
||||
|
||||
"@vercel/node@1.12.1":
|
||||
version "1.12.1"
|
||||
resolved "https://registry.yarnpkg.com/@vercel/node/-/node-1.12.1.tgz#15f42f64690f904f8a52a387123ce0958657060f"
|
||||
|
@ -2271,6 +2281,16 @@
|
|||
ts-node "8.9.1"
|
||||
typescript "4.3.4"
|
||||
|
||||
"@vercel/python@2.0.5":
|
||||
version "2.0.5"
|
||||
resolved "https://registry.yarnpkg.com/@vercel/python/-/python-2.0.5.tgz#76c09280febfac863c39651edffafbb0838a1df8"
|
||||
integrity sha512-WCSTTw6He2COaSBiGDk2q5Q1ue+z5usRZcvUHCpsK6KvNkkV/PrY8JT73XQysMWKiXh6yQy19IUFAOqK/xwhig==
|
||||
|
||||
"@vercel/ruby@1.2.7":
|
||||
version "1.2.7"
|
||||
resolved "https://registry.yarnpkg.com/@vercel/ruby/-/ruby-1.2.7.tgz#516d1c45f4961619338f3d3bb518ee43b863a5da"
|
||||
integrity sha512-ZG2VxMHHSKocL57UWsfNc9UsblwYGm55/ujqGIBnkNUURnRgtUrwtWlEts1eJ4VHD754Lc/0/R1pfJXoN5SbRw==
|
||||
|
||||
"@vercel/webpack-asset-relocator-loader@^1.6.0":
|
||||
version "1.7.0"
|
||||
resolved "https://registry.yarnpkg.com/@vercel/webpack-asset-relocator-loader/-/webpack-asset-relocator-loader-1.7.0.tgz#d3b707e0aba3111719f941dacb2408eff3c27319"
|
||||
|
@ -5680,6 +5700,13 @@ glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.6, glob@^7.1.7:
|
|||
once "^1.3.0"
|
||||
path-is-absolute "^1.0.0"
|
||||
|
||||
global-dirs@^2.0.1:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.1.0.tgz#e9046a49c806ff04d6c1825e196c8f0091e8df4d"
|
||||
integrity sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==
|
||||
dependencies:
|
||||
ini "1.3.7"
|
||||
|
||||
global-dirs@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686"
|
||||
|
@ -6166,6 +6193,11 @@ inherits@2.0.3:
|
|||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
|
||||
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
|
||||
|
||||
ini@1.3.7:
|
||||
version "1.3.7"
|
||||
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84"
|
||||
integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==
|
||||
|
||||
ini@2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5"
|
||||
|
@ -6443,6 +6475,14 @@ is-hexadecimal@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7"
|
||||
integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==
|
||||
|
||||
is-installed-globally@^0.3.1:
|
||||
version "0.3.2"
|
||||
resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141"
|
||||
integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==
|
||||
dependencies:
|
||||
global-dirs "^2.0.1"
|
||||
is-path-inside "^3.0.1"
|
||||
|
||||
is-installed-globally@^0.4.0:
|
||||
version "0.4.0"
|
||||
resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520"
|
||||
|
@ -6463,6 +6503,11 @@ is-negative-zero@^2.0.1:
|
|||
resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24"
|
||||
integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==
|
||||
|
||||
is-npm@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d"
|
||||
integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==
|
||||
|
||||
is-npm@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8"
|
||||
|
@ -6892,7 +6937,7 @@ language-tags@^1.0.5:
|
|||
dependencies:
|
||||
language-subtag-registry "~0.3.2"
|
||||
|
||||
latest-version@5.1.0, latest-version@^5.1.0:
|
||||
latest-version@5.1.0, latest-version@^5.0.0, latest-version@^5.1.0:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face"
|
||||
integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==
|
||||
|
@ -8660,7 +8705,7 @@ punycode@^2.1.0, punycode@^2.1.1:
|
|||
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
|
||||
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
|
||||
|
||||
pupa@^2.1.1:
|
||||
pupa@^2.0.1, pupa@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62"
|
||||
integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==
|
||||
|
@ -10616,6 +10661,25 @@ unset-value@^1.0.0:
|
|||
has-value "^0.3.1"
|
||||
isobject "^3.0.0"
|
||||
|
||||
update-notifier@4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.0.tgz#4866b98c3bc5b5473c020b1250583628f9a328f3"
|
||||
integrity sha512-w3doE1qtI0/ZmgeoDoARmI5fjDoT93IfKgEGqm26dGUOh8oNpaSTsGNdYRN/SjOuo10jcJGwkEL3mroKzktkew==
|
||||
dependencies:
|
||||
boxen "^4.2.0"
|
||||
chalk "^3.0.0"
|
||||
configstore "^5.0.1"
|
||||
has-yarn "^2.1.0"
|
||||
import-lazy "^2.1.0"
|
||||
is-ci "^2.0.0"
|
||||
is-installed-globally "^0.3.1"
|
||||
is-npm "^4.0.0"
|
||||
is-yarn-global "^0.3.0"
|
||||
latest-version "^5.0.0"
|
||||
pupa "^2.0.1"
|
||||
semver-diff "^3.1.1"
|
||||
xdg-basedir "^4.0.0"
|
||||
|
||||
update-notifier@^5.0.1:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9"
|
||||
|
@ -10727,6 +10791,18 @@ vendors@^1.0.3:
|
|||
resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e"
|
||||
integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==
|
||||
|
||||
vercel@^23.1.2:
|
||||
version "23.1.2"
|
||||
resolved "https://registry.yarnpkg.com/vercel/-/vercel-23.1.2.tgz#7f36772970c7c56f10de89983f03b3c0c72d294e"
|
||||
integrity sha512-uS1k7wuXI6hbxiW+kn9vdAWL0bBi4jjVxc7Jwp8NhJjcRuzlydtt3gUEnhnC9AOIKQ4LxoAgmg50lSyYkrC8Hg==
|
||||
dependencies:
|
||||
"@vercel/build-utils" "2.12.2"
|
||||
"@vercel/go" "1.2.3"
|
||||
"@vercel/node" "1.12.1"
|
||||
"@vercel/python" "2.0.5"
|
||||
"@vercel/ruby" "1.2.7"
|
||||
update-notifier "4.1.0"
|
||||
|
||||
vfile-location@^2.0.0:
|
||||
version "2.0.6"
|
||||
resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.6.tgz#8a274f39411b8719ea5728802e10d9e0dff1519e"
|
||||
|
|
Loading…
Reference in a new issue