class Seahorse::Model::Api

Attributes

definition[R]

@return [Hash]

documentation[R]

@return [String, nil]

operation_names[R]

@return [Array<Symbol>]

shape_map[R]

@return [ShapeMap]

version[R]

@return [String, nil]

Public Class Methods

new(definition = {}) click to toggle source

@param [Hash] definition

# File lib/seahorse/model/api.rb, line 6
def initialize(definition = {})
  @metadata = definition['metadata'] || {}
  @version = metadata('apiVersion')
  @documentation = definition['documentation']
  @definition = definition
  @shape_map = ShapeMap.new(definition['shapes'] || {})
  compute_operations
end

Public Instance Methods

inspect() click to toggle source

@api private @return [String]

# File lib/seahorse/model/api.rb, line 61
def inspect
  "#<#{self.class.name} version=#{version.inspect}>"
end
metadata(key) click to toggle source

@param [String] key @return [Object, nil]

# File lib/seahorse/model/api.rb, line 55
def metadata(key)
  @metadata[key]
end
operation(name) click to toggle source

@param [Symbol] name @return [Operation]

# File lib/seahorse/model/api.rb, line 39
def operation(name)
  name = name.to_sym
  if definition = @operation_defs[name.to_sym]
    @operations[name] ||= Operation.new(definition, shape_map: @shape_map)
  else
    raise ArgumentError, "unknown operation :#{name}"
  end
end
operation?(name) click to toggle source

@param [Symbol] name @return [Boolean] Returns `true` if this API provides an operation

with the given name.
# File lib/seahorse/model/api.rb, line 33
def operation?(name)
  @operation_defs.key?(name.to_sym)
end
operations() click to toggle source

@return [Enumerable]

# File lib/seahorse/model/api.rb, line 49
def operations
  enum_for(:each_operation) { |*args| operation_names.size }
end

Private Instance Methods

compute_operations() click to toggle source
# File lib/seahorse/model/api.rb, line 73
def compute_operations
  @operations = {}
  @operation_defs = {}
  (definition['operations'] || {}).each do |name,definition|
    name = Util.underscore(name).to_sym
    @operation_defs[name] = definition
  end
  @operation_names = @operation_defs.keys
end
each_operation() { |name, operation(name)| ... } click to toggle source
# File lib/seahorse/model/api.rb, line 67
def each_operation(&block)
  operation_names.each do |name|
    yield(name, operation(name))
  end
end