Class/Module Index [+]

Quicksearch

Fog::InternetArchive

Public Class Methods

escape(string) click to toggle source
# File lib/fog/internet_archive.rb, line 73
def self.escape(string)
  string.gsub(/([^a-zA-Z0-9_.\-~]+)/) {
    "%" + $1.unpack("H2" * $1.bytesize).join("%").upcase
  }
end
indexed_filters(filters) click to toggle source
# File lib/fog/internet_archive.rb, line 60
def self.indexed_filters(filters)
  params = {}
  filters.keys.each_with_index do |key, key_index|
    key_index += 1
    params[format('Filter.%d.Name', key_index)] = key
    [*filters[key]].each_with_index do |value, value_index|
      value_index += 1
      params[format('Filter.%d.Value.%d', key_index, value_index)] = value
    end
  end
  params
end
indexed_param(key, values) click to toggle source
# File lib/fog/internet_archive.rb, line 17
def self.indexed_param(key, values)
  params = {}
  unless key.include?('%d')
    key << '.%d'
  end
  [*values].each_with_index do |value, index|
    if value.respond_to?('keys')
      k = format(key, index + 1)
      value.each do | vkey, vvalue |
        params["#{k}.#{vkey}"] = vvalue
      end
    else
      params[format(key, index + 1)] = value
    end
  end
  params
end
indexed_request_param(name, values) click to toggle source
# File lib/fog/internet_archive.rb, line 52
def self.indexed_request_param(name, values)
  idx = -1
  Array(values).inject({}) do |params, value|
    params["#{name}.#{idx += 1}"] = value
    params
  end
end
parse_security_group_options(group_name, options) click to toggle source
# File lib/fog/internet_archive.rb, line 270
def self.parse_security_group_options(group_name, options)
  options ||= Hash.new
  if group_name.is_a?(Hash)
    options = group_name
  elsif group_name
    if options.key?('GroupName')
      raise Fog::Compute::InternetArchive::Error, 'Arguments specified both group_name and GroupName in options'
    end
    options = options.clone
    options['GroupName'] = group_name
  end
  name_specified = options.key?('GroupName') && !options['GroupName'].nil?
  group_id_specified = options.key?('GroupId') && !options['GroupId'].nil?
  unless name_specified || group_id_specified
    raise Fog::Compute::InternetArchive::Error, 'Neither GroupName nor GroupId specified'
  end
  if name_specified && group_id_specified
    options.delete('GroupName')
  end
  options
end
serialize_keys(key, value, options = {}) click to toggle source
# File lib/fog/internet_archive.rb, line 35
def self.serialize_keys(key, value, options = {})
  case value
  when Hash
    value.each do | k, v |
      options.merge!(serialize_keys("#{key}.#{k}", v))
    end
    return options
  when Array
    value.each_with_index do | it, idx |
      options.merge!(serialize_keys("#{key}.member.#{(idx + 1)}", it))
    end
    return options
  else
    return {key => value}
  end
end
signed_params(params, options = {}) click to toggle source
# File lib/fog/internet_archive.rb, line 79
def self.signed_params(params, options = {})
  params.merge!({
    'AWSAccessKeyId'    => options[:ia_access_key_id],
    'SignatureMethod'   => 'HmacSHA256',
    'SignatureVersion'  => '2',
    'Timestamp'         => Time.now.utc.strftime("%Y-%m-%dT%H:%M:%SZ"),
    'Version'           => options[:version]
  })

  params.merge!({
    'SecurityToken'     => options[:ia_session_token]
  }) if options[:ia_session_token]

  body = ''
  for key in params.keys.sort
    unless (value = params[key]).nil?
      body << "#{key}=#{escape(value.to_s)}&"
    end
  end
  string_to_sign = "POST\n#{options[:host]}:#{options[:port]}\n#{options[:path]}\n" << body.chop
  signed_string = options[:hmac].sign(string_to_sign)
  body << "Signature=#{escape(Base64.encode64(signed_string).chomp!)}"

  body
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.