class Swagger::Grape::Template
Public Class Methods
extract_all_types(types, all_types = [])
click to toggle source
# File lib/ruby-swagger/grape/grape_template.rb, line 44 def self.extract_all_types(types, all_types = []) return all_types.uniq if types.length == 0 new_types = [] types.each do |type| all_types << type.to_s unless all_types.include?(type.to_s) grape_type = Swagger::Grape::Type.new(type) grape_type.sub_types.each do |new_type| unless all_types.include?(new_type.to_s) new_types << new_type.to_s all_types << new_type.to_s end end end extract_all_types(new_types, all_types) end
generate(base_class)
click to toggle source
# 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 extract_all_types(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