module Aws::Api::Customizations

def api(prefix, &block)

def api(prefix, &block)
  @apis[prefix] = block
end

def apply_api_customizations(api)

def apply_api_customizations(api)
  metadata = api['metadata'] || {}
  prefix = metadata['endpointPrefix']
  @apis[prefix].call(api) if @apis[prefix]
end

def apply_plugins(client_class)

def apply_plugins(client_class)
  protocol = client_class.api.metadata['protocol']
  plugin = case protocol
    when 'ec2'       then Aws::Plugins::Protocols::EC2
    when 'query'     then Aws::Plugins::Protocols::Query
    when 'json'      then Aws::Plugins::Protocols::JsonRpc
    when 'rest-json' then Aws::Plugins::Protocols::RestJson
    when 'rest-xml'  then Aws::Plugins::Protocols::RestXml
  end
  client_class.add_plugin(plugin) if plugin
  prefix = client_class.api.metadata['endpointPrefix']
  if @plugins[prefix]
    @plugins[prefix][:add].each { |p| client_class.add_plugin(p) }
    @plugins[prefix][:remove].each { |p| client_class.remove_plugin(p) }
  end
end

def plugins(prefix, options)

def plugins(prefix, options)
  @plugins[prefix] = {
    add: options[:add] || [],
    remove: options[:remove] || [],
  }
end