class RegApi2::ResultContract
Contract for API results. Waits for answer field and returns it only by default. @see SymHash
Constants
Attributes
opts[R]
Options of contract. @return [Hash] Options hash.
Public Class Methods
new(opts = {})
click to toggle source
# File lib/reg_api2/result_contract.rb, line 49 def initialize(opts = {}) @opts = opts end
Public Instance Methods
convert(answer)
click to toggle source
Reworks answer to translate {INT_FIELDS}, {FLOAT_FIELDS} and {BOOL_FIELDS}. @param answer API answer field. @return Translated answer.
# File lib/reg_api2/result_contract.rb, line 99 def convert(answer) case answer when Hash convert_hash(answer) when Array convert_array(answer) else answer end end
handle_answer(answer)
click to toggle source
Handles API answer. Take in care ‘:field` option. @param answer API answer field. @return Converted answer by default. @see convert
@see opts
# File lib/reg_api2/result_contract.rb, line 115 def handle_answer(answer) return nil if answer.nil? answer = convert(answer) field = opts[:field] if field answer = answer[field] end answer end
handle_result(result)
click to toggle source
Extracts answer field and returns it wrapped by {#handle_answer}. Result is unified using {SymHash.from}. @param [Hash] result API result. @return Reworked API answer field. @see SymHash
# File lib/reg_api2/result_contract.rb, line 58 def handle_result(result) result = SymHash.from(result) handle_answer(result[:answer]) end
Private Instance Methods
convert_array(answer)
click to toggle source
# File lib/reg_api2/result_contract.rb, line 83 def convert_array(answer) answer.map do |value| case value when Hash convert_hash(value) when Array convert_array(value) else value end end end
convert_hash(answer)
click to toggle source
# File lib/reg_api2/result_contract.rb, line 63 def convert_hash(answer) answer.each_pair do |key, value| case value when String if INT_FIELDS.include?(key.to_s) answer[key] = value.to_i elsif FLOAT_FIELDS.include?(key.to_s) answer[key] = value.to_f elsif BOOL_FIELDS.include?(key.to_s) answer[key] = value.to_i.nonzero? ? true : false end when Hash answer[key] = convert_hash(value) when Array answer[key] = convert_array(value) end end answer end