aboutsummaryrefslogtreecommitdiffstats
path: root/start/routes.js
blob: da12a1b66050623ea853a396dd50af695c313b2e (plain) (blame)
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
'use strict'

/*
|--------------------------------------------------------------------------
| Routes
|--------------------------------------------------------------------------
|
*/

/** @type {typeof import('@adonisjs/framework/src/Route/Manager')} */
const Route = use('Route')

// Health: Returning if all systems function correctly
Route.get('health', ({
  response
}) => {
  return response.send({
    api: 'success',
    db: 'success'
  })
})

// API is grouped under '/v1/' route
Route.group(() => {
  // User authentification
  Route.post('auth/signup', 'UserController.signup').middleware('guest')
  Route.post('auth/login', 'UserController.login').middleware('guest')

  // User info
  Route.get('me', 'UserController.me').middleware('auth')

  // Service info
  Route.post('service', 'ServiceController.create').middleware('auth')
  Route.get('me/services', 'ServiceController.list').middleware('auth')
  Route.get('recipe', 'ServiceController.list').middleware('auth')

  // Recipe store
  Route.get('recipes', 'RecipeController.list')
  Route.get('recipes/download/:recipe', 'ServiceController.download')
  Route.get('recipes/popular', 'StaticController.popularRecipes')
  Route.get('recipes/update', 'StaticController.emptyArray')

  // Workspaces
  Route.put('workspace/:id', 'WorkspaceController.edit').middleware('auth')
  Route.post('workspace', 'WorkspaceController.create').middleware('auth')
  Route.get('workspace', 'WorkspaceController.list').middleware('auth')

  // Static responses
  Route.get('features', 'StaticController.features')
  Route.get('services', 'StaticController.emptyArray')
  Route.get('news', 'StaticController.emptyArray')
  Route.get('payment/plans', 'StaticController.plans')
  // Route.get('announcements/:version', 'StaticController.announcement')
}).prefix('v1')

Route.get('/', () => {
  return {
    info: 'Franz Unofficial Server',
    version: '1.0.0',
    author: 'vantezzen',
    repo: 'https://github.com/vantezzen/franz-server'
  }
})