Class: InstagramConnect::Result
- Inherits:
-
Object
- Object
- InstagramConnect::Result
- 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
-
#data ⇒ Object
readonly
Returns the value of attribute data.
-
#error_code ⇒ Object
readonly
Returns the value of attribute error_code.
-
#error_message ⇒ Object
readonly
Returns the value of attribute error_message.
-
#id ⇒ Object
readonly
Returns the value of attribute id.
-
#retry_after ⇒ Object
readonly
Returns the value of attribute retry_after.
-
#success ⇒ Object
readonly
Returns the value of attribute success.
-
#usage ⇒ Object
readonly
Returns the value of attribute usage.
Class Method Summary collapse
- .error(message, error_code: nil, retry_after: nil, data: {}, usage: nil) ⇒ Object
-
.ok(id: nil, data: {}, usage: nil) ⇒ Object
Convenience builders so call sites read cleanly.
Instance Method Summary collapse
- #failure? ⇒ Boolean
-
#initialize(success:, id: nil, error_code: nil, error_message: nil, retry_after: nil, data: {}, usage: nil) ⇒ Result
constructor
A new instance of Result.
- #more? ⇒ Boolean
-
#next_cursor ⇒ Object
Meta's cursor for the next page, or nil when this is the last one.
-
#records ⇒ Object
The rows of a collection response, or [] for a single-object one.
- #success? ⇒ Boolean
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 = @retry_after = retry_after @data = data || {} @usage = usage end |
Instance Attribute Details
#data ⇒ Object (readonly)
Returns the value of attribute data.
6 7 8 |
# File 'lib/instagram_connect/result.rb', line 6 def data @data end |
#error_code ⇒ Object (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_message ⇒ Object (readonly)
Returns the value of attribute error_message.
6 7 8 |
# File 'lib/instagram_connect/result.rb', line 6 def @error_message end |
#id ⇒ Object (readonly)
Returns the value of attribute id.
6 7 8 |
# File 'lib/instagram_connect/result.rb', line 6 def id @id end |
#retry_after ⇒ Object (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 |
#success ⇒ Object (readonly)
Returns the value of attribute success.
6 7 8 |
# File 'lib/instagram_connect/result.rb', line 6 def success @success end |
#usage ⇒ Object (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(, error_code: nil, retry_after: nil, data: {}, usage: nil) new(success: false, error_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
23 24 25 |
# File 'lib/instagram_connect/result.rb', line 23 def failure? !success? end |
#more? ⇒ 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_cursor ⇒ Object
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 |
#records ⇒ Object
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
19 20 21 |
# File 'lib/instagram_connect/result.rb', line 19 def success? success end |