Class: BitBucket::ParamsHash

Inherits:
Hash
  • Object
show all
Includes:
Normalizer
Defined in:
lib/bitbucket_rest_api/params_hash.rb

Overview

Class responsible for holding request parameters

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Normalizer

#normalize!

Methods inherited from Hash

#all_keys, #except, #except!, #has_deep_key?, #serialize, #symbolize_keys, #symbolize_keys!

Constructor Details

#initialize(hash) ⇒ ParamsHash

Returns a new instance of ParamsHash.



12
13
14
# File 'lib/bitbucket_rest_api/params_hash.rb', line 12

def initialize(hash)
  super(normalize!(Hash[hash]))
end

Class Method Details

.emptyObject

Create empty hash



18
19
20
# File 'lib/bitbucket_rest_api/params_hash.rb', line 18

def self.empty
  new({})
end

Instance Method Details

#acceptObject

Return accept header if present



32
33
34
35
36
37
38
39
40
# File 'lib/bitbucket_rest_api/params_hash.rb', line 32

def accept
  if has_key?('accept')
    delete('accept')
  elsif has_key?('media')
    media
  else
    nil
  end
end

#dataObject

Extract request data from parameters



44
45
46
47
48
49
50
# File 'lib/bitbucket_rest_api/params_hash.rb', line 44

def data
  if has_key?('data') && !self['data'].nil?
    return delete('data')
  else
    return to_hash
  end
end

#encoderObject



52
53
54
55
56
57
58
# File 'lib/bitbucket_rest_api/params_hash.rb', line 52

def encoder
  if has_key?('encoder') && self['encoder']
    return delete('encoder')
  else
    return {}
  end
end

#mediaObject

Extract and parse media type param

[.version].param[+json]


26
27
28
# File 'lib/bitbucket_rest_api/params_hash.rb', line 26

def media
  parse(delete('media'))
end

#merge_default(defaults) ⇒ Object

Update hash with default parameters for non existing keys



78
79
80
81
82
83
84
85
# File 'lib/bitbucket_rest_api/params_hash.rb', line 78

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

#optionsObject

Any client configuration options



62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/bitbucket_rest_api/params_hash.rb', line 62

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) ⇒ Object

Base64 encode string removing newline characters



89
90
91
92
93
94
95
96
97
# File 'lib/bitbucket_rest_api/params_hash.rb', line 89

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