Class: Alpaca::News::Api::Rest::Collection
- Defined in:
- lib/alpaca/news/api/rest/collection.rb
Instance Attribute Summary collapse
-
#endpoint ⇒ String
Endpoint.
-
#headers ⇒ Hash
API headers.
-
#model_class ⇒ Class
Response model class.
-
#objects ⇒ Array
News objects.
-
#page ⇒ Integer
Current page.
-
#page_token ⇒ String
Page token.
-
#params ⇒ Hash
Parameters.
Class Method Summary collapse
-
.get(endpoint, params, headers, model_class) ⇒ Alpaca::News::Api::Rest::Collection
Send GET request to the specific endpoint with parameters and headers.
Instance Method Summary collapse
-
#find_each {|Alpaca::News::Api::Models::News| ... } ⇒ Object
Iterate for all objects and call for the next page (all pages).
-
#find_in_batches {|Array<Alpaca::News::Api::Models::News>| ... } ⇒ Object
Iterate for all objects and call for the next page in batches (all pages).
-
#get(endpoint, params, headers, model_class) ⇒ Alpaca::News::Api::Rest::Collection
Send GET request to the specific endpoint with parameters and headers.
-
#next_page ⇒ Alpaca::News::Api::Rest::Collection
Request for the next page if the page token is not nil.
Methods inherited from Base
Instance Attribute Details
#endpoint ⇒ String
Endpoint
18 19 20 |
# File 'lib/alpaca/news/api/rest/collection.rb', line 18 def endpoint @endpoint end |
#headers ⇒ Hash
API headers
30 31 32 |
# File 'lib/alpaca/news/api/rest/collection.rb', line 30 def headers @headers end |
#model_class ⇒ Class
Response model class
36 37 38 |
# File 'lib/alpaca/news/api/rest/collection.rb', line 36 def model_class @model_class end |
#objects ⇒ Array
News objects
12 13 14 |
# File 'lib/alpaca/news/api/rest/collection.rb', line 12 def objects @objects end |
#page ⇒ Integer
Current page
48 49 50 |
# File 'lib/alpaca/news/api/rest/collection.rb', line 48 def page @page end |
#page_token ⇒ String
Page token
42 43 44 |
# File 'lib/alpaca/news/api/rest/collection.rb', line 42 def page_token @page_token end |
#params ⇒ Hash
Parameters
24 25 26 |
# File 'lib/alpaca/news/api/rest/collection.rb', line 24 def params @params end |
Class Method Details
.get(endpoint, params, headers, model_class) ⇒ Alpaca::News::Api::Rest::Collection
Send GET request to the specific endpoint with parameters and headers
62 63 64 |
# File 'lib/alpaca/news/api/rest/collection.rb', line 62 def get(endpoint, params, headers, model_class) new.get(endpoint, params, headers, model_class) end |
Instance Method Details
#find_each {|Alpaca::News::Api::Models::News| ... } ⇒ Object
Iterate for all objects and call for the next page (all pages)
105 106 107 108 109 110 111 112 113 |
# File 'lib/alpaca/news/api/rest/collection.rb', line 105 def find_each result = self loop do result.objects.each do |object| yield(object) end break unless result = result.next_page end end |
#find_in_batches {|Array<Alpaca::News::Api::Models::News>| ... } ⇒ Object
Iterate for all objects and call for the next page in batches (all pages)
119 120 121 122 123 124 125 |
# File 'lib/alpaca/news/api/rest/collection.rb', line 119 def find_in_batches result = self loop do yield(result.objects) break unless result = result.next_page end end |
#get(endpoint, params, headers, model_class) ⇒ Alpaca::News::Api::Rest::Collection
Send GET request to the specific endpoint with parameters and headers
76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/alpaca/news/api/rest/collection.rb', line 76 def get(endpoint, params, headers, model_class) @page ||= 0 @endpoint = endpoint @params = params @headers = headers @model_class = model_class result = client.get(endpoint, params, headers) @page += 1 @page_token = result[:next_page_token] @objects = result[:news].map do |attributes| model_class.new(attributes) end self end |
#next_page ⇒ Alpaca::News::Api::Rest::Collection
Request for the next page if the page token is not nil
95 96 97 98 99 |
# File 'lib/alpaca/news/api/rest/collection.rb', line 95 def next_page return nil if @page_token.nil? get(@endpoint, @params.merge(page_token: @page_token), @headers, @model_class) end |