· 5 years ago · Feb 20, 2021, 02:16 PM
1//-------------------------------------------------
2// index.js
3//-------------------------------------------------
4import fs from 'fs'
5import express from 'express'
6import cors from 'cors'
7import OpenAPIBackend from 'openapi-backend'
8
9import * as handlers from '~/handlers'
10import * as security from '~/security'
11import { PORT } from '~/environment'
12
13const api = new OpenAPIBackend({
14 definition: './openapi.yml',
15 quick: true,
16 validate: true,
17 handlers,
18})
19
20for(let key in security)
21 api.registerSecurityHandler(key, security[key])
22
23const app = express()
24api.init()
25app.use(express.json())
26app.use(cors())
27app.use((req, res, next) => {
28 res.sendStatus = code => res.status(code).send()
29 res.setHeader('X-Powered-By', 'plot.watch')
30 res.setHeader('X-Ignore-Me', 'WW91IGRpZG4ndCBpZ25vcmUgbWUuLi4=')
31 next()
32})
33app.use((req, res) => api.handleRequest(req, req, res))
34app.listen(PORT, () => console.info(`API listening on port ${PORT}.`))
35
36
37//-------------------------------------------------
38// handlers/index.js
39//-------------------------------------------------
40export notFound from './notFound'
41export validationFail from './validationFail'
42export unauthorizedHandler from './unauthorizedHandler'
43
44export AuthenticateLogin from './authenticate/login'
45export AuthenticateRegister from './authenticate/register'
46
47export TeamsList from './teams/list'
48export TeamsGet from './teams/get'
49export TeamsCreate from './teams/create'
50export TeamsUpdate from './teams/update'
51export TeamsDelete from './teams/delete'
52
53//-------------------------------------------------
54// handlers/teams/get
55//-------------------------------------------------
56import database from '~/database'
57import { withUserInTeam } from '~/queryHelpers'
58
59export default async (c, req, res) => {
60 const team = await database('teams')
61 .select('id', 'name')
62 .where('id', c.request.params.teamId)
63 .modify(withUserInTeam, 'teams.id', c.security.JWT.id)
64 .first()
65
66 if(team == undefined)
67 return res.sendStatus(404)
68
69 return res.status(200).json(team)
70}
71