Class: Assembla::ParamsHash
- Includes:
- MimeType, Normalizer
- Defined in:
- lib/assembla_api/params_hash.rb
Overview
Class responsible for holding request parameters
Constant Summary
Constants included from MimeType
Class Method Summary collapse
-
.empty ⇒ Object
Create empty hash.
Instance Method Summary collapse
-
#accept ⇒ Object
Return accept header if present.
-
#data ⇒ Object
Extract request data from parameters.
- #encoder ⇒ Object
-
#initialize(hash) ⇒ ParamsHash
constructor
A new instance of ParamsHash.
-
#media ⇒ Object
Extract and parse media type param.
-
#merge_default(defaults) ⇒ Object
Update hash with default parameters for non existing keys.
-
#options ⇒ Object
Any client configuration options.
-
#strict_encode64(key) ⇒ Object
Base64 encode string removing newline characters.
Methods included from MimeType
Methods included from Normalizer
Methods inherited from Hash
#deep_key?, #deep_keys, #deep_merge, #deep_merge!, #except, #except!, #serialize, #symbolize_keys, #symbolize_keys!
Constructor Details
#initialize(hash) ⇒ ParamsHash
Returns a new instance of ParamsHash.
13 14 15 |
# File 'lib/assembla_api/params_hash.rb', line 13 def initialize(hash) super(normalize!(Hash[hash])) end |
Class Method Details
.empty ⇒ Object
Create empty hash
19 20 21 |
# File 'lib/assembla_api/params_hash.rb', line 19 def self.empty new({}) end |
Instance Method Details
#accept ⇒ Object
Return accept header if present
33 34 35 36 37 38 39 40 41 |
# 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 ⇒ Object
Extract request data from parameters
45 46 47 48 49 50 51 |
# 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 ⇒ Object
53 54 55 56 57 58 59 |
# 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 ⇒ Object
Extract and parse media type param
[.version].param[+json]
27 28 29 |
# File 'lib/assembla_api/params_hash.rb', line 27 def media parse(delete('media')) end |
#merge_default(defaults) ⇒ Object
Update hash with default parameters for non existing keys
79 80 81 82 83 84 85 86 |
# 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 ⇒ Object
Any client configuration options
63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/assembla_api/params_hash.rb', line 63 def 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
90 91 92 93 94 95 96 97 98 |
# 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 |