Class: GetStreamRuby::StreamResponse

Inherits:
Object
  • Object
show all
Defined in:
lib/getstream_ruby/stream_response.rb

Instance Method Summary collapse

Constructor Details

#initialize(data) ⇒ StreamResponse

Returns a new instance of StreamResponse.



7
8
9
# File 'lib/getstream_ruby/stream_response.rb', line 7

def initialize(data)
  @data = data
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method_name, *_args) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/getstream_ruby/stream_response.rb', line 11

def method_missing(method_name, *_args)
  key = method_name.to_s

  if @data.is_a?(Hash) && @data.key?(key)
    value = @data[key]
    # Recursively wrap nested hashes
    if value.is_a?(Hash)
      StreamResponse.new(value)
    elsif value.is_a?(Array)
      value.map { |item| item.is_a?(Hash) ? StreamResponse.new(item) : item }
    else
      value
    end
  elsif @data.is_a?(Hash) && @data.key?(key.to_sym)
    value = @data[key.to_sym]
    if value.is_a?(Hash)
      StreamResponse.new(value)
    elsif value.is_a?(Array)
      value.map { |item| item.is_a?(Hash) ? StreamResponse.new(item) : item }
    else
      value
    end
  end
end

Instance Method Details

#inspectObject



49
50
51
# File 'lib/getstream_ruby/stream_response.rb', line 49

def inspect
  "#<GetStreamRuby::StreamResponse:0x#{object_id.to_s(16)} @data=#{@data.inspect}>"
end

#respond_to_missing?(method_name, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


36
37
38
39
# File 'lib/getstream_ruby/stream_response.rb', line 36

def respond_to_missing?(method_name, include_private = false)
  key = method_name.to_s
  (@data.is_a?(Hash) && (@data.key?(key) || @data.key?(key.to_sym))) || super
end

#to_hObject



41
42
43
# File 'lib/getstream_ruby/stream_response.rb', line 41

def to_h
  @data
end

#to_json(*args) ⇒ Object



45
46
47
# File 'lib/getstream_ruby/stream_response.rb', line 45

def to_json(*args)
  @data.to_json(*args)
end