class SwaggerApi::Generator

Public Instance Methods

components() click to toggle source
# File lib/swagger_api.rb, line 27
def components
  {
    responses: responses,
    schemas: Components.new(controllers: config.controllers).create,
    requestBodies: RequestBodies.new(controllers: config.controllers).create,
    securitySchemes: security_schemes
  }
end
config() click to toggle source
# File lib/swagger_api.rb, line 36
def config
  @yaml_config ||= JSON.parse(YAML.load_file("#{Rails.root}/config/swagger.yml").to_json, object_class: OpenStruct)
end
create() click to toggle source
# File lib/swagger_api.rb, line 16
def create
  @config ||= {
    openapi: '3.0.0',
    security: [{ api_key: [] }],
    info: info,
    servers: [{ url: server_url }],
    paths: Paths.new(controllers: config.controllers).create,
    components: components
  }
end
default_bad_request_response() click to toggle source
# File lib/swagger_api.rb, line 90
def default_bad_request_response
  {
    BadRequest: {
      description: 'Bad Request',
      content: {
        'application/json; charset=utf-8' => {
          schema: {
            example: ['The field name is invalid.', 'The id must be present'],
            type: 'array',
            items: {
              type: 'string'
            }
          }
        }
      }
    }
  }
end
default_not_found_response() click to toggle source
# File lib/swagger_api.rb, line 58
def default_not_found_response
  {
    NotFound: {
      description: 'The specified resource was not found',
      content: {
        'application/json; charset=utf-8' => {
          schema: {
            type: 'string',
            example: 'Not Found'
          }
        }
      }
    }
  }
end
default_responses() click to toggle source
# File lib/swagger_api.rb, line 54
def default_responses
  {}.merge(default_not_found_response).merge(default_unauthorized_response).merge(default_bad_request_response)
end
default_unauthorized_response() click to toggle source
# File lib/swagger_api.rb, line 74
def default_unauthorized_response
  {
    Unauthorized: {
      description: 'Unauthorized',
      content: {
        'application/json; charset=utf-8' => {
          schema: {
            type: 'string',
            example: 'Not Authorized'
          }
        }
      }
    }
  }
end
info() click to toggle source
# File lib/swagger_api.rb, line 109
def info
  {
    version: config.info.version,
    title: config.info.title,
    description: config.info.description
  }
end
json() click to toggle source
# File lib/swagger_api.rb, line 12
def json
  create.to_json
end
prettify() click to toggle source
# File lib/swagger_api.rb, line 8
def prettify
  JSON.pretty_generate(JSON.parse(json))
end
responses() click to toggle source
# File lib/swagger_api.rb, line 50
def responses
  @responses ||= default_responses
end
security_schemes() click to toggle source
# File lib/swagger_api.rb, line 40
def security_schemes
  {
    api_key: {
      type: 'apiKey',
      name: 'Authorization',
      in: 'header'
    }
  }
end
server_url() click to toggle source
# File lib/swagger_api.rb, line 117
def server_url
  return unless config.servers.respond_to?(Rails.env)
  config.servers.send(Rails.env).url
end