72 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
	
		
			2.9 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())
 | 
