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
|
# File 'lib/ruby-swagger/grape/grape_template.rb', line 11
def self.generate(base_class)
swagger_doc = Swagger::Template.generate
routes = Swagger::Grape::Routes.new(base_class.routes)
swagger_doc.paths = routes.to_swagger
swagger_doc.definitions = Swagger::Data::Definitions.new
(routes.types).sort.each do |type|
grape_type = Swagger::Grape::Type.new(type)
swagger_doc.definitions.add_definition(type.to_s, grape_type.to_swagger(false))
end
if routes.scopes.present?
scheme = Swagger::Data::SecurityScheme.new
scheme.type = 'oauth2'
scheme.flow = 'accessCode'
scheme.authorizationUrl = 'https://'
scheme.tokenUrl = 'https://'
scopes = {}
routes.scopes.uniq.each do |scope|
scopes[scope] = ''
end
scheme.scopes = scopes
swagger_doc.securityDefinitions = Swagger::Data::SecurityDefinitions.new
swagger_doc.securityDefinitions.add_param('oauth2', scheme)
end
swagger_doc
end
|