mirror of
https://github.com/MedzikUser/gatsby-pingbot
synced 2024-08-15 03:20:27 +00:00
fix
This commit is contained in:
parent
8c6b02b340
commit
4197fb3cf0
7 changed files with 57 additions and 65 deletions
92
api/index.ts
92
api/index.ts
|
@ -1,5 +1,6 @@
|
||||||
import { VercelRequest, VercelResponse } from '@vercel/node'
|
import { VercelRequest, VercelResponse } from '@vercel/node'
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
|
|
||||||
import dbConnect from '../lib/dbConnect'
|
import dbConnect from '../lib/dbConnect'
|
||||||
import URLModel from '../lib/schema'
|
import URLModel from '../lib/schema'
|
||||||
|
|
||||||
|
@ -10,24 +11,20 @@ export default async (request: VercelRequest, response: VercelResponse) => {
|
||||||
switch (method) {
|
switch (method) {
|
||||||
case 'POST':
|
case 'POST':
|
||||||
if (!request.body || !request.body.url) {
|
if (!request.body || !request.body.url) {
|
||||||
return response.status(400).json(
|
return response.status(400).json({
|
||||||
{
|
success: false,
|
||||||
success: false,
|
message: 'Invalid body'
|
||||||
message: 'Invalid body'
|
})
|
||||||
}
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await axios.get(request.body.url)
|
await axios.get(request.body.url)
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error(err)
|
console.error(err)
|
||||||
return response.status(400).json(
|
return response.status(400).json({
|
||||||
{
|
success: false,
|
||||||
success: false,
|
message: 'Invalid URL'
|
||||||
message: 'Invalid URL'
|
})
|
||||||
}
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -37,66 +34,63 @@ export default async (request: VercelRequest, response: VercelResponse) => {
|
||||||
|
|
||||||
await url.save()
|
await url.save()
|
||||||
|
|
||||||
return response.status(200).json(
|
return response.status(200).json({
|
||||||
{
|
success: true,
|
||||||
success: true,
|
url,
|
||||||
url: request.body.url
|
message: `Added ${url.url}`
|
||||||
}
|
})
|
||||||
)
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error(err)
|
console.error(err)
|
||||||
return response.status(400).json(
|
return response.status(400).json({
|
||||||
{
|
success: false,
|
||||||
success: false,
|
message: 'Already exist?'
|
||||||
message: 'Error Inserting to DB'
|
})
|
||||||
}
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
case 'DELETE':
|
case 'DELETE':
|
||||||
if (!request.query.url) {
|
if (!request.query.url) {
|
||||||
return response.status(400).json(
|
return response.status(400).json({
|
||||||
{
|
success: false,
|
||||||
success: false,
|
message: 'Invalid body'
|
||||||
message: 'Invalid body'
|
})
|
||||||
}
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const url = request.query.url
|
const url = request.query.url
|
||||||
|
|
||||||
if (typeof url != 'string') {
|
if (typeof url != 'string') {
|
||||||
return response.status(400).json(
|
return response.status(400).json({
|
||||||
{
|
success: false,
|
||||||
success: false,
|
message: 'Query URL isn\'t string'
|
||||||
message: 'Query URL isn\'t string'
|
})
|
||||||
}
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
await URLModel.deleteOne({
|
const del = await URLModel.findOneAndDelete({
|
||||||
url
|
url
|
||||||
})
|
})
|
||||||
|
|
||||||
return response.status(200).json(
|
if (del != null) {
|
||||||
{
|
return response.status(200).json({
|
||||||
success: true,
|
success: true,
|
||||||
message: 'Deleted!',
|
message: `Deleted ${url}`,
|
||||||
url
|
url
|
||||||
}
|
})
|
||||||
)
|
} else {
|
||||||
|
return response.status(400).json({
|
||||||
|
success: false,
|
||||||
|
message: 'URL not exist?',
|
||||||
|
url
|
||||||
|
})
|
||||||
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error(err)
|
console.error(err)
|
||||||
return response.status(400).json(
|
return response.status(400).json({
|
||||||
{
|
success: false,
|
||||||
success: false,
|
message: 'Error Deleting from DB'
|
||||||
message: 'Error Deleting from DB'
|
})
|
||||||
}
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
response.status(200).json({
|
response.status(200).json({
|
||||||
db: await URLModel.find()
|
db: await URLModel.find()
|
||||||
})
|
})
|
||||||
|
|
||||||
break
|
break
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
import { model, models, Schema } from 'mongoose'
|
import { model, models, Schema } from 'mongoose'
|
||||||
|
|
||||||
const { MONGODB_COLLECTION } = process.env
|
|
||||||
|
|
||||||
interface URL {
|
interface URL {
|
||||||
url: string
|
url: string
|
||||||
}
|
}
|
||||||
|
@ -14,12 +12,16 @@ const schema = new Schema<URL>({
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
schema.path(MONGODB_COLLECTION).validate(async function(value) {
|
schema.path('url').validate(async function(value) {
|
||||||
const count = await models.URL.countDocuments({ url: value })
|
if (models.url) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
const count = await models.url.countDocuments({ url: value })
|
||||||
|
|
||||||
return !count
|
return !count
|
||||||
}, 'URL already exists')
|
}, 'URL already exists')
|
||||||
|
|
||||||
const URLModel = model<URL>(MONGODB_COLLECTION, schema)
|
const URLModel = model<URL>('url', schema)
|
||||||
|
|
||||||
export = URLModel
|
export = URLModel
|
||||||
|
|
|
@ -3,7 +3,7 @@ $fonts: "-apple-system, Roboto, sans-serif, serif"
|
||||||
body
|
body
|
||||||
color: #fff
|
color: #fff
|
||||||
background-color: #111
|
background-color: #111
|
||||||
background: url("../images/blob.svg") no-repeat center center fixed
|
background: url("../images/background.svg") no-repeat center center fixed
|
||||||
background-size: cover
|
background-size: cover
|
||||||
|
|
||||||
margin: 0
|
margin: 0
|
||||||
|
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
@ -39,21 +39,17 @@ const AddURLPage = () => {
|
||||||
success: {
|
success: {
|
||||||
delay: 500,
|
delay: 500,
|
||||||
render({ data: { data } }) {
|
render({ data: { data } }) {
|
||||||
return `Added ${data.url}!`
|
return data.message
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
error: {
|
error: {
|
||||||
delay: 500,
|
delay: 500,
|
||||||
render(err) {
|
render(err) {
|
||||||
let e = ''
|
|
||||||
|
|
||||||
if (err.data.response && err.data.response.data.message) {
|
if (err.data.response && err.data.response.data.message) {
|
||||||
e = err.data.response.data.message
|
return err.data.response.data.message
|
||||||
} else {
|
} else {
|
||||||
e = err.data.toString()
|
return err.data.toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
return `${e}`
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,7 +36,7 @@ const DeleteURLPage = () => {
|
||||||
success: {
|
success: {
|
||||||
delay: 500,
|
delay: 500,
|
||||||
render({ data: { data } }) {
|
render({ data: { data } }) {
|
||||||
return `If URL: ${data.url} existed, it has been deleted!`
|
return data.message
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
error: {
|
error: {
|
||||||
|
|
|
@ -3,7 +3,7 @@ import AniLink from 'gatsby-plugin-transition-link/AniLink'
|
||||||
|
|
||||||
import Seo from '../components/seo'
|
import Seo from '../components/seo'
|
||||||
|
|
||||||
const LoginPage = () => {
|
const HomePage = () => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Seo
|
<Seo
|
||||||
|
@ -25,4 +25,4 @@ const LoginPage = () => {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
export default LoginPage
|
export default HomePage
|
||||||
|
|
Loading…
Reference in a new issue