class Swaggable::ApiDefinition

Public Class Methods

from_grape_api(grape) click to toggle source
# File lib/swaggable/api_definition.rb, line 40
def self.from_grape_api grape
  grape_adapter.import(grape, new)
end
grape_adapter() click to toggle source
# File lib/swaggable/api_definition.rb, line 44
def self.grape_adapter
  @grape_adapter ||= Swaggable::GrapeAdapter.new
end
new(&block) click to toggle source
# File lib/swaggable/api_definition.rb, line 15
def initialize &block
  configure(&block) if block_given?
end

Public Instance Methods

configure(&block) click to toggle source
# File lib/swaggable/api_definition.rb, line 48
def configure &block
  ForwardingDsl.run(self, &block)
  self
end
endpoints(&block) click to toggle source
# File lib/swaggable/api_definition.rb, line 19
def endpoints &block
  ForwardingDsl.run(
    @endpoints ||= build_endpoints, 
    &block
  )
end
tags() click to toggle source
# File lib/swaggable/api_definition.rb, line 26
def tags
  (endpoints.map(&:tags).reduce(:merge) || []).dup.freeze
end
used_schemas() click to toggle source
# File lib/swaggable/api_definition.rb, line 30
def used_schemas
  endpoints.inject([]) do |acc, endpoint|
    endpoint.parameters.each do |parameter|
      acc << parameter.schema unless parameter.schema.empty?
    end
    
    acc.uniq
  end.freeze
end

Private Instance Methods

build_endpoints() click to toggle source
# File lib/swaggable/api_definition.rb, line 55
def build_endpoints
  MiniObject::IndexedList.new.tap do |l|
    l.build { EndpointDefinition.new }
    l.key {|e| "#{e.verb.to_s.upcase} #{e.path}" }
  end
end