Class: ImpactRadiusAPI::APIResponse

Inherits:
Object
  • Object
show all
Defined in:
lib/impact_radius_api/api_response.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(response, resource) ⇒ APIResponse

Returns a new instance of APIResponse.



5
6
7
8
9
10
11
12
# File 'lib/impact_radius_api/api_response.rb', line 5

def initialize(response, resource)
  @request = response.request
  result = response["ImpactRadiusResponse"]
  @page = result[resource]["page"].to_i
  @num_pages = result[resource]["numpages"].to_i
  @page_size = result[resource]["pagesize"]
  @data = parse(result[resource][resource[0..-2]])
end

Instance Attribute Details

#dataObject (readonly)

Returns the value of attribute data.



3
4
5
# File 'lib/impact_radius_api/api_response.rb', line 3

def data
  @data
end

#num_pagesObject (readonly)

Returns the value of attribute num_pages.



3
4
5
# File 'lib/impact_radius_api/api_response.rb', line 3

def num_pages
  @num_pages
end

#pageObject (readonly)

Returns the value of attribute page.



3
4
5
# File 'lib/impact_radius_api/api_response.rb', line 3

def page
  @page
end

#page_sizeObject (readonly)

Returns the value of attribute page_size.



3
4
5
# File 'lib/impact_radius_api/api_response.rb', line 3

def page_size
  @page_size
end

#requestObject (readonly)

Returns the value of attribute request.



3
4
5
# File 'lib/impact_radius_api/api_response.rb', line 3

def request
  @request
end

Instance Method Details

#allObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/impact_radius_api/api_response.rb', line 14

def all
  page = @page
  num_pages = @num_pages
  
  while num_pages > page
    uri = Addressable::URI.parse(request.uri)
    class_name = uri.path.match(/^\/[a-z]+\//i)[0].gsub("/","")
    params = uri.query_values
    params.merge!({ 'Page' => "#{page.to_i + 1}" })
    next_page_response =  ImpactRadiusAPI.const_get(class_name).new.request( "https://" + uri.authority + uri.path, params )
    page = next_page_response.page
    @data += next_page_response.data
  end
  @data
end