Class: Koala::Facebook::API::GraphCollection
- Inherits:
-
Array
- Object
- Array
- Koala::Facebook::API::GraphCollection
- Defined in:
- lib/koala/api/graph_collection.rb
Overview
A light wrapper for collections returned from the Graph API. It extends Array to allow you to page backward and forward through result sets, and providing easy access to paging information.
Instance Attribute Summary collapse
-
#api ⇒ Koala::Facebook::GraphAPI
readonly
The api used to make requests.
-
#paging ⇒ Object
readonly
The raw paging information from Facebook (next/previous URLs).
-
#raw_response ⇒ Object
readonly
The entire raw response from Facebook.
Class Method Summary collapse
-
.parse_page_url(url) ⇒ Object
Parse the previous and next page URLs Facebook provides in pageable results.
Instance Method Summary collapse
-
#initialize(response, api) ⇒ Koala::Facebook::GraphCollection
constructor
Initialize the array of results and store various additional paging-related information.
-
#next_page ⇒ Object
Retrieve the next page of results.
-
#next_page_params ⇒ Object
Arguments that can be sent to #graph_call to retrieve the next page of results.
-
#previous_page ⇒ Object
Retrieve the previous page of results.
-
#previous_page_params ⇒ Object
Arguments that can be sent to #graph_call to retrieve the previous page of results.
Constructor Details
#initialize(response, api) ⇒ Koala::Facebook::GraphCollection
Initialize the array of results and store various additional paging-related information.
26 27 28 29 30 31 |
# File 'lib/koala/api/graph_collection.rb', line 26 def initialize(response, api) super response["data"] @paging = response["paging"] @raw_response = response @api = api end |
Instance Attribute Details
#api ⇒ Koala::Facebook::GraphAPI (readonly)
Returns the api used to make requests.
14 15 16 |
# File 'lib/koala/api/graph_collection.rb', line 14 def api @api end |
#paging ⇒ Object (readonly)
The raw paging information from Facebook (next/previous URLs).
12 13 14 |
# File 'lib/koala/api/graph_collection.rb', line 12 def paging @paging end |
#raw_response ⇒ Object (readonly)
The entire raw response from Facebook.
16 17 18 |
# File 'lib/koala/api/graph_collection.rb', line 16 def raw_response @raw_response end |
Class Method Details
.parse_page_url(url) ⇒ Object
Parse the previous and next page URLs Facebook provides in pageable results. You’ll mainly need to use this when using a non-Rails framework (one without url_for); to store paging information between page loads, pass the URL (from GraphCollection#paging) and use parse_page_url to turn it into parameters useful for Koala::Facebook::API#get_page.
91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/koala/api/graph_collection.rb', line 91 def self.parse_page_url(url) uri = Addressable::URI.parse(url) base = uri.path.sub(/^\//, '') params = CGI.parse(uri.query) new_params = {} params.each_pair do |key,value| new_params[key] = value.join "," end [base,new_params] end |
Instance Method Details
#next_page ⇒ Object
Retrieve the next page of results.
45 46 47 48 |
# File 'lib/koala/api/graph_collection.rb', line 45 def next_page base, args = next_page_params base ? @api.get_page([base, args]) : nil end |
#next_page_params ⇒ Object
Arguments that can be sent to Koala::Facebook::API#graph_call to retrieve the next page of results.
64 65 66 |
# File 'lib/koala/api/graph_collection.rb', line 64 def next_page_params @paging && @paging["next"] ? parse_page_url(@paging["next"]) : nil end |
#previous_page ⇒ Object
Retrieve the previous page of results.
53 54 55 56 |
# File 'lib/koala/api/graph_collection.rb', line 53 def previous_page base, args = previous_page_params base ? @api.get_page([base, args]) : nil end |
#previous_page_params ⇒ Object
Arguments that can be sent to Koala::Facebook::API#graph_call to retrieve the previous page of results.
74 75 76 |
# File 'lib/koala/api/graph_collection.rb', line 74 def previous_page_params @paging && @paging["previous"] ? parse_page_url(@paging["previous"]) : nil end |