class APIGatewayDSL::Document

Attributes

description[RW]
host[RW]
operations[R]
schemes[RW]
title[RW]
version[RW]

Public Class Methods

load(dir) click to toggle source
# File lib/api_gateway_dsl/document.rb, line 4
def self.load(dir)
  new do
    ::Dir.glob(::Pathname.new(dir).join('**', '*.rb')) do |file|
      file = ::Pathname.new(file)
      self.context = Context.new(file.dirname)
      instance_eval file.read, file.to_s, 1
    end
  end
end
new(&block) click to toggle source
# File lib/api_gateway_dsl/document.rb, line 17
def initialize(&block)
  @operations = Operation::Collection.new

  DSL::DocumentNode.new(self, &block)
end

Public Instance Methods

as_json() click to toggle source
# File lib/api_gateway_dsl/document.rb, line 23
def as_json # rubocop:disable Metrics/MethodLength
  {}.tap do |result|
    result[:swagger] = '2.0'

    result[:info] = {}.tap do |info|
      info[:title]       = title
      info[:version]     = version
      info[:description] = description.strip_heredoc if description
    end

    result[:host]    = host
    result[:schemes] = schemes

    result[:paths]   = operations.as_json
  end.deep_stringify_keys
end