76 lines
3 KiB
TypeScript
76 lines
3 KiB
TypeScript
/*
|
|
|--------------------------------------------------------------------------
|
|
| Routes file
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
| The routes file is used for defining the HTTP routes.
|
|
|
|
|
*/
|
|
|
|
import router from '@adonisjs/core/services/router'
|
|
// import transmit from '@adonisjs/transmit/services/main'
|
|
import { authThrottle } from './limiters.js'
|
|
import { throttle } from './limiter.js'
|
|
import { middleware } from './kernel.js'
|
|
|
|
// TODO: Magic link login
|
|
// transmit.registerRoutes()
|
|
|
|
const AuthController = () => import('#controllers/auth_controller')
|
|
|
|
router.group(() => {
|
|
router.post('/auth/request', [AuthController, 'requestLogin']).use(authThrottle)
|
|
router.post('/auth/verify', [AuthController, 'verifyCode']).use(throttle)
|
|
router.post('/auth/register', [AuthController, 'register']).use(throttle)
|
|
router.post('/auth/logout', [AuthController, 'logout'])
|
|
router.get('/auth/autocomplete', [AuthController, 'listNames']).use(throttle)
|
|
// TODO: Magic link login
|
|
// router.get('/auth/magic-link', 'AuthController.magicLink').use(throttle)
|
|
// router.get('/auth/listen', 'AuthController.listen')
|
|
})
|
|
|
|
const UserController = () => import('#controllers/user_controller')
|
|
router.get('/users/@me', [UserController, 'me']).use(middleware.auth())
|
|
router.post('/users/@me', [UserController, 'update']).use(middleware.auth())
|
|
|
|
const SubjectsController = () => import('#controllers/subjects_controller')
|
|
router.get('/subjects', [SubjectsController, 'index']).use(middleware.auth())
|
|
|
|
const CollesController = () => import('#controllers/colles_controller')
|
|
router
|
|
.group(() => {
|
|
router.post('/', [CollesController, 'create']).use(middleware.internal())
|
|
router.post('/upcoming', [CollesController, 'createUpcoming']).use(middleware.internal())
|
|
router.post('/:colleId/refresh', [CollesController, 'refresh']).use(middleware.auth())
|
|
router.get('/', [CollesController, 'index']).use(middleware.auth())
|
|
router.get('/:colleId', [CollesController, 'show']).use(middleware.auth())
|
|
})
|
|
.prefix('/colles')
|
|
|
|
const NotificationsController = () => import('#controllers/notifications_controller')
|
|
router
|
|
.group(() => {
|
|
router.get('/', [NotificationsController, 'index'])
|
|
router.post('/', [NotificationsController, 'subscribe'])
|
|
router.post('/:id/unsubscribe', [NotificationsController, 'unsubscribe'])
|
|
router.post('/:id', [NotificationsController, 'update'])
|
|
router.post('/:id/test', [NotificationsController, 'test'])
|
|
})
|
|
.prefix('/notifications')
|
|
.use(middleware.auth())
|
|
|
|
const GradesController = () => import('#controllers/grades_controller')
|
|
router.get('/grades', [GradesController, 'index']).use(middleware.auth())
|
|
router.get('/averages', [GradesController, 'averages']).use(middleware.auth())
|
|
|
|
const InternalsController = () => import('#controllers/internals_controller')
|
|
router
|
|
.group(() => {
|
|
router.post('/back-fetch', [InternalsController, 'backFetch'])
|
|
})
|
|
.prefix('/internals')
|
|
.use(middleware.internal())
|
|
|
|
router.get('/health', async () => {
|
|
return { status: 'ok' }
|
|
})
|