module Swagger::Api

Constants

VERSION

Public Class Methods

config() click to toggle source
# File lib/swagger/api.rb, line 30
def self.config
  @yaml_config ||= JSON.parse(YAML.load_file("#{Rails.root.to_s}/config/swagger.yml").to_json, object_class: OpenStruct)
end
create() click to toggle source
# File lib/swagger/api.rb, line 14
def self.create
  @config ||= {
    openapi: '3.0.0',
    security: [{api_key: []}],
    info: info,
    servers: [{url: server_url}],
    paths: Paths.new(controllers: config.controllers).create,
    components: {
      responses: responses,
      schemas: Components.new(controllers: config.controllers).create,
      requestBodies: RequestBodies.new(controllers: config.controllers).create,
      securitySchemes: security_schemes,
    },
  }
end
info() click to toggle source
# File lib/swagger/api.rb, line 96
def self.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 10
def self.json
  create.to_json
end
prettify() click to toggle source
# File lib/swagger/api.rb, line 6
def self.prettify
  JSON.pretty_generate(JSON.parse(json))
end
responses() click to toggle source
# File lib/swagger/api.rb, line 44
def self.responses
  {
    NotFound: {
      description: "The specified resource was not found",
      content: {
        'application/json; charset=utf-8' => {
          schema: {
            type: 'string',
            example: 'Not Found'
          }
        }
      }
    },
    Unauthorized: {
      description: "Unauthorized",
      content: {
        'application/json; charset=utf-8' => {
          schema: {
            type: 'string',
            example: 'Not Authorized'
          }
        }
      }
    },
    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'
            }
          }
        }
      }
    },
    Unexpected: {
      description: "Unexpected Error",
      content: {
        'application/json; charset=utf-8' => {
          schema: {
            type: 'string',
            example: 'Unexpected Error'
          }
        }
      }
    }
  }
end
security_schemes() click to toggle source
# File lib/swagger/api.rb, line 34
def self.security_schemes
  {
    api_key: {
      type: 'apiKey',
      name: 'Authorization',
      in: 'header'
    }
  }
end
server_url() click to toggle source
# File lib/swagger/api.rb, line 104
def self.server_url
  config.servers.send(Rails.env).url
end