Class: MagicBell::ApiResourceCollection
- Inherits:
-
Object
- Object
- MagicBell::ApiResourceCollection
- Defined in:
- lib/magicbell/api_resource_collection.rb
Direct Known Subclasses
Instance Method Summary collapse
- #authentication_headers ⇒ Object
- #current_page ⇒ Object
- #each(&block) ⇒ Object
- #each_page ⇒ Object
- #first ⇒ Object
-
#initialize(client, query_params = {}) ⇒ ApiResourceCollection
constructor
A new instance of ApiResourceCollection.
- #last_page? ⇒ Boolean
- #next_page ⇒ Object
- #per_page ⇒ Object
- #retrieve ⇒ Object
- #to_a ⇒ Object
- #total_pages ⇒ Object
- #url ⇒ Object
Constructor Details
#initialize(client, query_params = {}) ⇒ ApiResourceCollection
Returns a new instance of ApiResourceCollection.
3 4 5 6 7 |
# File 'lib/magicbell/api_resource_collection.rb', line 3 def initialize(client, query_params = {}) @client = client @query_params = query_params @retrieved = false end |
Instance Method Details
#authentication_headers ⇒ Object
34 35 36 |
# File 'lib/magicbell/api_resource_collection.rb', line 34 def authentication_headers MagicBell.authentication_headers end |
#current_page ⇒ Object
59 60 61 62 |
# File 'lib/magicbell/api_resource_collection.rb', line 59 def current_page retrieve_unless_retrieved response_hash["current_page"] end |
#each(&block) ⇒ Object
38 39 40 |
# File 'lib/magicbell/api_resource_collection.rb', line 38 def each(&block) resources.each(&block) end |
#each_page ⇒ Object
42 43 44 45 46 47 48 49 |
# File 'lib/magicbell/api_resource_collection.rb', line 42 def each_page current_page = self loop do yield(current_page) break if current_page.last_page? current_page = current_page.next_page end end |
#first ⇒ Object
26 27 28 |
# File 'lib/magicbell/api_resource_collection.rb', line 26 def first resources.first end |
#last_page? ⇒ Boolean
51 52 53 |
# File 'lib/magicbell/api_resource_collection.rb', line 51 def last_page? current_page == total_pages end |
#next_page ⇒ Object
55 56 57 |
# File 'lib/magicbell/api_resource_collection.rb', line 55 def next_page self.class.new(@client, page: current_page + 1, per_page: per_page) end |
#per_page ⇒ Object
69 70 71 72 |
# File 'lib/magicbell/api_resource_collection.rb', line 69 def per_page retrieve_unless_retrieved response_hash["per_page"] end |
#retrieve ⇒ Object
TODO:
Add examples
10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/magicbell/api_resource_collection.rb', line 10 def retrieve @response = @client.get( url, query: @query_params ) @response_hash = JSON.parse(response.body) @resources = response_hash[name].map { |resource_attributes| resource_class.new(@client, resource_attributes) } @retrieved = true self end |
#to_a ⇒ Object
22 23 24 |
# File 'lib/magicbell/api_resource_collection.rb', line 22 def to_a resources end |
#total_pages ⇒ Object
64 65 66 67 |
# File 'lib/magicbell/api_resource_collection.rb', line 64 def total_pages retrieve_unless_retrieved response_hash["total_pages"] end |
#url ⇒ Object
30 31 32 |
# File 'lib/magicbell/api_resource_collection.rb', line 30 def url MagicBell.api_host + path end |