Class: InstagramConnect::Result

Inherits:
Object
  • Object
show all
Defined in:
lib/instagram_connect/result.rb

Overview

Value object returned by every Client call. Client methods never raise for API-level failures — callers branch on success? and read error_code / error_message. Transport/programming errors still raise.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(success:, id: nil, error_code: nil, error_message: nil, retry_after: nil, data: {}, usage: nil) ⇒ Result

Returns a new instance of Result.



8
9
10
11
12
13
14
15
16
17
# File 'lib/instagram_connect/result.rb', line 8

def initialize(success:, id: nil, error_code: nil, error_message: nil, retry_after: nil,
               data: {}, usage: nil)
  @success = success
  @id = id
  @error_code = error_code
  @error_message = error_message
  @retry_after = retry_after
  @data = data || {}
  @usage = usage
end

Instance Attribute Details

#dataObject (readonly)

Returns the value of attribute data.



6
7
8
# File 'lib/instagram_connect/result.rb', line 6

def data
  @data
end

#error_codeObject (readonly)

Returns the value of attribute error_code.



6
7
8
# File 'lib/instagram_connect/result.rb', line 6

def error_code
  @error_code
end

#error_messageObject (readonly)

Returns the value of attribute error_message.



6
7
8
# File 'lib/instagram_connect/result.rb', line 6

def error_message
  @error_message
end

#idObject (readonly)

Returns the value of attribute id.



6
7
8
# File 'lib/instagram_connect/result.rb', line 6

def id
  @id
end

#retry_afterObject (readonly)

Returns the value of attribute retry_after.



6
7
8
# File 'lib/instagram_connect/result.rb', line 6

def retry_after
  @retry_after
end

#successObject (readonly)

Returns the value of attribute success.



6
7
8
# File 'lib/instagram_connect/result.rb', line 6

def success
  @success
end

#usageObject (readonly)

Returns the value of attribute usage.



6
7
8
# File 'lib/instagram_connect/result.rb', line 6

def usage
  @usage
end

Class Method Details

.error(message, error_code: nil, retry_after: nil, data: {}, usage: nil) ⇒ Object



49
50
51
52
# File 'lib/instagram_connect/result.rb', line 49

def self.error(message, error_code: nil, retry_after: nil, data: {}, usage: nil)
  new(success: false, error_message: message, error_code: error_code,
      retry_after: retry_after, data: data, usage: usage)
end

.ok(id: nil, data: {}, usage: nil) ⇒ Object

Convenience builders so call sites read cleanly.



45
46
47
# File 'lib/instagram_connect/result.rb', line 45

def self.ok(id: nil, data: {}, usage: nil)
  new(success: true, id: id, data: data, usage: usage)
end

Instance Method Details

#failure?Boolean

Returns:

  • (Boolean)


23
24
25
# File 'lib/instagram_connect/result.rb', line 23

def failure?
  !success?
end

#more?Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/instagram_connect/result.rb', line 34

def more?
  data.is_a?(Hash) && data.dig("paging", "next").present?
end

#next_cursorObject

Meta's cursor for the next page, or nil when this is the last one. Reading paging.next rather than incrementing an offset is the only correct way through a Graph collection — results shift under you between calls.



30
31
32
# File 'lib/instagram_connect/result.rb', line 30

def next_cursor
  data.dig("paging", "cursors", "after").presence if more?
end

#recordsObject

The rows of a collection response, or [] for a single-object one.



39
40
41
42
# File 'lib/instagram_connect/result.rb', line 39

def records
  list = data["data"]
  list.is_a?(Array) ? list : []
end

#success?Boolean

Returns:

  • (Boolean)


19
20
21
# File 'lib/instagram_connect/result.rb', line 19

def success?
  success
end