Class: BaseCradle::ItemsResource
- Inherits:
-
Object
- Object
- BaseCradle::ItemsResource
- Includes:
- Enumerable
- Defined in:
- lib/basecradle/items.rb
Overview
The shared cross-timeline pattern: iterate everything you can see (newest first, auto-paginating), narrow with .filter, or fetch one by uuid. Subclasses set PATH / PLURAL / SINGULAR / MODEL.
Direct Known Subclasses
AssetsResource, MessagesResource, TasksResource, WebhookEndpointsResource, WebhookEventsResource
Instance Method Summary collapse
- #each(&block) ⇒ Object
-
#filter(timeline: nil) ⇒ Object
A new lazy resource narrowed to one timeline (a Timeline or a uuid).
-
#get(uuid) ⇒ Object
Fetch one item by its own uuid (you must be a viewer of its timeline).
-
#initialize(client, filters: {}) ⇒ ItemsResource
constructor
A new instance of ItemsResource.
Constructor Details
#initialize(client, filters: {}) ⇒ ItemsResource
Returns a new instance of ItemsResource.
75 76 77 78 |
# File 'lib/basecradle/items.rb', line 75 def initialize(client, filters: {}) @client = client @filters = filters end |
Instance Method Details
#each(&block) ⇒ Object
80 81 82 83 84 85 |
# File 'lib/basecradle/items.rb', line 80 def each(&block) return enum_for(:each) unless block_given? Paginator.new(@client, self.class::PATH, envelope_key: self.class::PLURAL, model: self.class::MODEL, params: @filters).each(&block) end |
#filter(timeline: nil) ⇒ Object
A new lazy resource narrowed to one timeline (a Timeline or a uuid). Filters compose.
88 89 90 |
# File 'lib/basecradle/items.rb', line 88 def filter(timeline: nil) self.class.new(@client, filters: merge_filters(timeline: timeline)) end |
#get(uuid) ⇒ Object
Fetch one item by its own uuid (you must be a viewer of its timeline).
93 94 95 96 |
# File 'lib/basecradle/items.rb', line 93 def get(uuid) response = @client.request("GET", "#{self.class::PATH}/#{uuid}") self.class::MODEL.new(response.fetch(self.class::SINGULAR), client: @client) end |