-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
84 lines (76 loc) · 1.56 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
const { send } = require('micro')
const cors = require('micro-cors')()
const { router, get } = require('microrouter')
const ms = require('ms')
const scrapper = require('./scrapper')
const cache = require('./cache')
const visuals = async (req, res) => {
const data = await cache(
ms('10m'),
async req => {
try {
return await scrapper.visualsRoute(req.query.per)
} catch (error) {
return null
}
},
req,
res
)
if (!data) {
send(res, 500, 'Internal Server Error')
} else {
send(res, 200, data)
}
}
const random = async (req, res) => {
const data = await cache(
ms('10m'),
async () => {
try {
return await scrapper.randomRoute()
} catch (error) {
return null
}
},
req,
res
)
if (!data) {
send(res, 500, 'Internal Server Error')
} else {
send(res, 200, data)
}
}
const id = async (req, res) => {
// Cache with 'null' ms -- means cache forever
const data = await cache(
null,
async req => {
try {
return await scrapper.idRoute(req.params.id)
} catch (error) {
return null
}
},
req,
res
)
if (!data) {
send(res, 500, 'Internal Server Error')
} else {
send(res, 200, data)
}
}
const notFound = (req, res) => {
send(res, 404, {
error: 'Not found route',
docs: 'https://github.com/lndgalante/archillect-api',
})
}
module.exports = router(
get('/visuals', cors(visuals)),
get('/visuals/:id', cors(id)),
get('/random', cors(random)),
get('/*', cors(notFound))
)