Newer
Older
const Router = require('@koa/router')
const { apiMiddlewareGroup } = require('../middleware/groups')
const router = new Router({ prefix: '/v2' })
const controller = (path, handler) => require(`../controllers/${path}`)[handler]
const param = name => require(`../params/${name}`)

Louis
committed
const safemode = require('http/middleware/SafeModeBlock')
apiMiddlewareGroup.forEach(middleware => router.use(middleware))
const noop = ctx =>
(ctx.body = {
body: ctx.request.body,
headers: ctx.request.headers,
path: ctx.path,
query: ctx.query,
})
router.get(
'/',
ctx =>
(ctx.body = {
name: 'Jetsam Data API',
prefix: ctx.path,
}),

Louis
committed
router.post('/auth/login', safemode, controller('api/auth', 'login'))
router.post('/auth/register', safemode, controller('api/auth', 'register'))
router.post(
'/auth/password-reset',

Louis
committed
safemode,
controller('api/auth', 'triggerPasswordReset'),
router.get('/self', controller('api/user', 'self'))
router.get('/self/surveys', controller('api/v2/surveys', 'joined'))
router.get('/self/bundles', controller('api/app', 'getBundles'))

Louis
committed
router.put('/self/:property', safemode, controller('api/user', 'updateOne'))
router.get('/metrics', controller('api/content', 'getWithin'))

Louis
committed
router.post('/metrics', safemode, controller('api/content', 'postMetric'))
router.get('/images', noop)
router.post('/images', noop)
router.post('/images/:imageId/share', noop)
router.get('/uploads', noop)

Louis
committed
router.post('/uploads', safemode, controller('api/v2/uploads', 'createUpload'))
router.get('/uploads/:upload_id', noop)
router.delete('/uploads/:upload_id', noop)
router.put('/uploads/:upload_id/:property', noop)
router.param('classification', param('classification'))
router.get('/surveys', controller('api/v2/surveys', 'list'))
router.get('/excerpts', controller('api/v2/surveys', 'listExcerpts'))
router.get('/excerpts/:excerpt', controller('api/v2/surveys', 'getExcerpt'))
router.get('/surveys/:survey', controller('api/v2/surveys', 'get'))

Louis
committed
router.post('/surveys/:survey/membership', safemode, controller('api/v2/surveys', 'join'))
router.delete('/surveys/:survey/membership', safemode, controller('api/v2/surveys', 'leave'))

Louis
committed
router.post('/surveys/factory', safemode, controller('api/v2/factories', 'survey'))
router.get('/classifications/roots', controller('api/v2/classifications', 'listRoots'))
router.put('/classifications/roots/:classification/status', controller('api/v2/classifications', 'putRootStatus'))

Louis
committed
router.post('/an/ev', safemode, controller('api/analytics', 'track'))