From 1e34b047cd5bfb75e055fca03fa6d970de716089 Mon Sep 17 00:00:00 2001 From: Medzik Date: Sat, 18 Sep 2021 17:01:48 +0000 Subject: [PATCH] update --- api/index.ts | 69 ++++++---------------------------------- lib/api/add.ts | 36 +++++++++++++++++++++ lib/api/delete.ts | 31 ++++++++++++++++++ package.json | 11 ++++--- yarn.lock | 80 +++++++++++++++++++++++++++++++++++++++++++++-- 5 files changed, 160 insertions(+), 67 deletions(-) create mode 100644 lib/api/add.ts create mode 100644 lib/api/delete.ts diff --git a/api/index.ts b/api/index.ts index d1bd1c5..5dfd1bd 100644 --- a/api/index.ts +++ b/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() }) diff --git a/lib/api/add.ts b/lib/api/add.ts new file mode 100644 index 0000000..0b598f7 --- /dev/null +++ b/lib/api/add.ts @@ -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?' + }) + } +} diff --git a/lib/api/delete.ts b/lib/api/delete.ts new file mode 100644 index 0000000..3cbfd2f --- /dev/null +++ b/lib/api/delete.ts @@ -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' + }) + } +} diff --git a/package.json b/package.json index bc967a8..cb91a6f 100644 --- a/package.json +++ b/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 ", "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" } } diff --git a/yarn.lock b/yarn.lock index 1f70d6a..087e759 100644 --- a/yarn.lock +++ b/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"