Module: MatrixSdk::Response
- Defined in:
- lib/matrix_sdk/response.rb
Overview
An usability wrapper for API responses as an extended [Hash] All results can be read as both hash keys and as read-only methods on the key
Defined Under Namespace
Modules: Extensions
Instance Attribute Summary collapse
-
#api ⇒ Api
readonly
The API connection that returned the response.
Class Method Summary collapse
Instance Attribute Details
#api ⇒ Api (readonly)
Returns The API connection that returned the response.
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/matrix_sdk/response.rb', line 23 module Response def self.new(api, data) if data.is_a? Array raise ArgumentError, 'Input data was not an array of hashes' unless data.all? { |v| v.is_a? Hash } data.each do |value| Response.new api, value end return data end return data if data.instance_variables.include? :@api raise ArgumentError, 'Input data was not a hash' unless data.is_a? Hash data.extend(Extensions) data.instance_variable_set(:@api, api) data.select { |_k, v| v.is_a? Hash } .each { |_v, v| Response.new api, v } data end module Extensions attr_reader :api def respond_to_missing?(name, *_args) return true if key? name super end def method_missing(name, *args) return fetch(name) if key?(name) && args.empty? super end end end |
Class Method Details
.new(api, data) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/matrix_sdk/response.rb', line 24 def self.new(api, data) if data.is_a? Array raise ArgumentError, 'Input data was not an array of hashes' unless data.all? { |v| v.is_a? Hash } data.each do |value| Response.new api, value end return data end return data if data.instance_variables.include? :@api raise ArgumentError, 'Input data was not a hash' unless data.is_a? Hash data.extend(Extensions) data.instance_variable_set(:@api, api) data.select { |_k, v| v.is_a? Hash } .each { |_v, v| Response.new api, v } data end |