Module: GiantBombApi::CollectionResource
- Included in:
- Resource::Accessory, Resource::Character, Resource::Chat, Resource::Company, Resource::Concept, Resource::Franchise, Resource::Game, Resource::GameRating, Resource::Genre, Resource::Location, Resource::Object, Resource::Person, Resource::Platform, Resource::Promo, Resource::RatingBoard, Resource::Region, Resource::Release, Resource::Review, Resource::Theme, Resource::UserReview, Resource::Video, Resource::VideoType
- Defined in:
- lib/giant_bomb_api/collection_resource.rb
Class Method Summary collapse
Instance Method Summary collapse
- #collection_resource_name(collection_resource_name = nil) ⇒ Object
- #each_page(sort: {}, limit: 100, offset: 0, should_rate_limit: false) ⇒ Object
- #find(id, params = {}) ⇒ Object
- #where(params = {}) ⇒ Object
Class Method Details
.extended(base) ⇒ Object
4 5 6 |
# File 'lib/giant_bomb_api/collection_resource.rb', line 4 def self.extended(base) base.extend Resource end |
Instance Method Details
#collection_resource_name(collection_resource_name = nil) ⇒ Object
8 9 10 11 12 13 |
# File 'lib/giant_bomb_api/collection_resource.rb', line 8 def collection_resource_name(collection_resource_name = nil) if collection_resource_name.present? self.instance_variable_set("@collection_resource_name", collection_resource_name) end self.instance_variable_get("@collection_resource_name") || self.resource_name.pluralize end |
#each_page(sort: {}, limit: 100, offset: 0, should_rate_limit: false) ⇒ Object
15 16 17 18 19 20 21 22 |
# File 'lib/giant_bomb_api/collection_resource.rb', line 15 def each_page(sort: {}, limit: 100, offset: 0, should_rate_limit: false) rate_limit(should_rate_limit) do response = where(sort: sort, limit: limit, offset: offset, tries: 5) yield response offset += limit break unless response.has_more_results? end end |
#find(id, params = {}) ⇒ Object
24 25 26 |
# File 'lib/giant_bomb_api/collection_resource.rb', line 24 def find(id, params = {}) GiantBombApi.client.send_request(Request::Detail.new(resource_name, id, params)) end |
#where(params = {}) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/giant_bomb_api/collection_resource.rb', line 28 def where(params = {}) return GiantBombApi.client.send_request(Request::Collection.new(self)) unless params.present? sort = params[:sort] limit = params[:limit] offset = params[:offset] tries ||= (params[:tries] || 0) args = {} args[:filter] = params.reject {|key,value| i(sort limit offset).include?(key) } args[:sort] = sort if sort.present? args[:limit] = limit if limit.present? args[:offset] = offset if offset.present? GiantBombApi.client.send_request(Request::Collection.new(self, args)) rescue Faraday::ConnectionFailed, Faraday::TimeoutError => e if (tries -= 1) > 0 sleep 5 retry end raise e end |