class Assembla::ParamsHash

Class responsible for holding request parameters

Public Class Methods

empty() click to toggle source

Create empty hash

# File lib/assembla_api/params_hash.rb, line 19
def self.empty
  new({})
end
new(hash) click to toggle source
Calls superclass method
# File lib/assembla_api/params_hash.rb, line 13
def initialize(hash)
  super(normalize!(Hash[hash]))
end

Public Instance Methods

accept() click to toggle source

Return accept header if present

# File lib/assembla_api/params_hash.rb, line 33
def accept
  if has_key?('accept')
    delete('accept')
  elsif has_key?('media')
    media
  else
    nil
  end
end
data() click to toggle source

Extract request data from parameters

# File lib/assembla_api/params_hash.rb, line 45
def data
  if has_key?('data') && !self['data'].nil?
    return delete('data')
  else
    return to_hash
  end
end
encoder() click to toggle source
# File lib/assembla_api/params_hash.rb, line 53
def encoder
  if has_key?('encoder') && self['encoder']
    return delete('encoder')
  else
    return {}
  end
end
media() click to toggle source

Extract and parse media type param

[.version].param[+json]
# File lib/assembla_api/params_hash.rb, line 27
def media
  parse(delete('media'))
end
merge_default(defaults) click to toggle source

Update hash with default parameters for non existing keys

# File lib/assembla_api/params_hash.rb, line 79
def merge_default(defaults)
  if defaults && !defaults.empty?
    defaults.each do |key, value|
      self[key] = value unless self.has_key?(key)
    end
  end
  self
end
options() click to toggle source

Any client configuration options

# File lib/assembla_api/params_hash.rb, line 63
def options
  opts = has_key?('options') ? delete('options') : {}
  headers = opts.fetch(:headers) { {} }
  if value = accept
    headers[:accept] = value
  end
  if value = delete('content_type')
    headers[:content_type] = value
  end
  opts[:raw] = has_key?('raw') ? delete('raw') : false
  opts[:headers] = headers unless headers.empty?
  opts
end
strict_encode64(key) click to toggle source

Base64 encode string removing newline characters

# File lib/assembla_api/params_hash.rb, line 90
def strict_encode64(key)
  value = self[key]
  encoded = if Base64.respond_to?(:strict_encode64)
    Base64.strict_encode64(value)
  else
    [value].pack("m0")
  end
  self[key] = encoded.delete("\n\r")
end