@return [Hash]
@return [String, nil]
@return [Array<Symbol>]
@return [ShapeMap]
@return [String, nil]
@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
@api private @return [String]
# File lib/seahorse/model/api.rb, line 61 def inspect "#<#{self.class.name} version=#{version.inspect}>" end
@param [String] key @return [Object, nil]
# File lib/seahorse/model/api.rb, line 55 def metadata(key) @metadata[key] end
@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
@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
@return [Enumerable]
# File lib/seahorse/model/api.rb, line 49 def operations enum_for(:each_operation) { |*args| operation_names.size } end
# 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
# File lib/seahorse/model/api.rb, line 67 def each_operation(&block) operation_names.each do |name| yield(name, operation(name)) end end