Module: GiantBombApi::CollectionResource

Class Method Summary collapse

Instance Method Summary collapse

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