/
SwaggerProvider.js
59 lines (51 loc) · 1.55 KB
/
SwaggerProvider.js
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
'use strict'
const { ServiceProvider } = require('@adonisjs/fold')
class SwaggerProvider extends ServiceProvider {
_addRoutes () {
const Route = use('Route')
const swaggerJSDoc = use('swagger-jsdoc')
const Config = use('Config')
if (Config.get('swagger.enable')) {
// Get custom URL for Swagger specification, if defined.
const specUrl = Config.get('swagger.specUrl', '/swagger.json')
Route.get(specUrl, async ({ response }) => (
swaggerJSDoc(Config.get('swagger.options', {}))
))
}
}
_registerCommands () {
this.app.bind('Adonis/Commands/SwaggerExport', () => require('../commands/SwaggerExport'))
this.app.bind('Adonis/Commands/SwaggerExportDocs', () => require('../commands/SwaggerExportDocs'))
this.app.bind('Adonis/Commands/SwaggerRemove', () => require('../commands/SwaggerRemove'))
this.app.bind('Adonis/Commands/SwaggerRemoveDocs', () => require('../commands/SwaggerRemoveDocs'))
}
_addCommands () {
const ace = require('@adonisjs/ace')
ace.addCommand('Adonis/Commands/SwaggerExport')
ace.addCommand('Adonis/Commands/SwaggerExportDocs')
ace.addCommand('Adonis/Commands/SwaggerRemove')
ace.addCommand('Adonis/Commands/SwaggerRemoveDocs')
}
/**
* Register all the required providers
*
* @method register
*
* @return {void}
*/
register () {
this._registerCommands()
}
/**
* Boot the provider
*
* @method boot
*
* @return {void}
*/
boot () {
this._addCommands()
this._addRoutes()
}
}
module.exports = SwaggerProvider