koala 2.2.0rc2 → 2.2.0rc3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/changelog.md +1 -0
- data/lib/koala/api/graph_api.rb +14 -0
- data/lib/koala/version.rb +1 -1
- data/readme.md +1 -1
- data/spec/fixtures/mock_facebook_responses.yml +10 -0
- data/spec/support/graph_api_shared_examples.rb +30 -1
- data/spec/support/koala_test.rb +4 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9d723adaf8f3575e75b06fbb1b71d1736f3dafd1
|
4
|
+
data.tar.gz: ce7831b6eb0075a69fc90ffae8ac9a2a1fb18e2b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7fc6c7a281d7ab3381157254b93daa41c3514354da7a886cf4cc60f40b27f0bd360f55120a724b9a139d855303dac36a985db6de0ab374f8048454973bc02159
|
7
|
+
data.tar.gz: cee4ec7905570dbe9194d49a6fe0a5748ebb5111252281ca70db17c247a26b31333de4a07e9dffaf09b17061e37c2cfba8ed6d09f40584a316ba1687424bd7a3
|
data/changelog.md
CHANGED
@@ -3,6 +3,7 @@ v2.2.0
|
|
3
3
|
|
4
4
|
Updated features:
|
5
5
|
|
6
|
+
* Restore API#search, since Facebook still supports that for certain usecases (thanks, vhoof!)
|
6
7
|
* You can now specify format: :json in http_options to make Content-Type application/json requests (thanks, adparlor!)
|
7
8
|
* Koala now supports uploading videos by URL (thanks, filipegiusti!)
|
8
9
|
* GraphCollections now offer direct access to the collection summary data via #summary (thanks, vhoof!)
|
data/lib/koala/api/graph_api.rb
CHANGED
@@ -312,6 +312,20 @@ module Koala
|
|
312
312
|
graph_call("#{id}/likes", {}, "delete", options, &block)
|
313
313
|
end
|
314
314
|
|
315
|
+
# Search for a given query among visible Facebook objects.
|
316
|
+
# See {http://developers.facebook.com/docs/reference/api/#searching Facebook documentation} for more information.
|
317
|
+
#
|
318
|
+
# @param search_terms the query to search for
|
319
|
+
# @param args additional arguments, such as type, fields, etc.
|
320
|
+
# @param options (see #get_object)
|
321
|
+
# @param block (see Koala::Facebook::API#api)
|
322
|
+
#
|
323
|
+
# @return [Koala::Facebook::API::GraphCollection] an array of search results
|
324
|
+
def search(search_terms, args = {}, options = {}, &block)
|
325
|
+
args.merge!({:q => search_terms}) unless search_terms.nil?
|
326
|
+
graph_call("search", args, "get", options, &block)
|
327
|
+
end
|
328
|
+
|
315
329
|
# Convenience Methods
|
316
330
|
# In general, we're trying to avoid adding convenience methods to Koala
|
317
331
|
# except to support cases where the Facebook API requires non-standard input
|
data/lib/koala/version.rb
CHANGED
data/readme.md
CHANGED
@@ -69,7 +69,7 @@ Koala.config.api_version = "v2.0"
|
|
69
69
|
|
70
70
|
The response of most requests is the JSON data returned from the Facebook servers as a Hash.
|
71
71
|
|
72
|
-
When retrieving data that returns an array of results (for example, when calling `API#get_connections`)
|
72
|
+
When retrieving data that returns an array of results (for example, when calling `API#get_connections` or `API#search`)
|
73
73
|
a GraphCollection object will be returned, which makes it easy to page through the results:
|
74
74
|
|
75
75
|
```ruby
|
@@ -271,6 +271,16 @@ graph_api:
|
|
271
271
|
code: 500
|
272
272
|
body: '{"error": {"type": "Exception","message": "No node specified"}}'
|
273
273
|
|
274
|
+
/search:
|
275
|
+
q=facebook:
|
276
|
+
get:
|
277
|
+
with_token: '{"data": [{"id": "507731521_100412693339488"}], "paging": {"previous": "https:\/\/graph.facebook.com\/7204941866\/photos?limit=25&until=2008-09-15T18%3A30%3A25%2B0000", "next": "https:\/\/graph.facebook.com\/7204941866\/photos?limit=25&until=2008-09-15T18%3A30%3A25%2B0000"}}'
|
278
|
+
no_token: '{"data": [{"id": "507731521_100412693339488"}], "paging": {"previous": "https:\/\/graph.facebook.com\/7204941866\/photos?limit=25&until=2008-09-15T18%3A30%3A25%2B0000", "next": "https:\/\/graph.facebook.com\/7204941866\/photos?limit=25&until=2008-09-15T18%3A30%3A25%2B0000"}}'
|
279
|
+
"limit=25&q=facebook&until=<%= TEST_DATA['search_time'] %>":
|
280
|
+
get:
|
281
|
+
with_token: '{"data": [{"id": "507731521_100412693339488"}], "paging": {"previous": "https:\/\/graph.facebook.com\/7204941866\/photos?limit=25&until=2008-09-15T18%3A30%3A25%2B0000", "next": "https:\/\/graph.facebook.com\/7204941866\/photos?limit=25&until=2008-09-15T18%3A30%3A25%2B0000"}}'
|
282
|
+
no_token: '{"data": [{"id": "507731521_100412693339488"}], "paging": {"previous": "https:\/\/graph.facebook.com\/7204941866\/photos?limit=25&until=2008-09-15T18%3A30%3A25%2B0000", "next": "https:\/\/graph.facebook.com\/7204941866\/photos?limit=25&until=2008-09-15T18%3A30%3A25%2B0000"}}'
|
283
|
+
|
274
284
|
/fql:
|
275
285
|
q=select uid, first_name from user where uid = 2901279:
|
276
286
|
get:
|
@@ -51,6 +51,12 @@ shared_examples_for "Koala GraphAPI" do
|
|
51
51
|
end
|
52
52
|
end
|
53
53
|
|
54
|
+
# SEARCH
|
55
|
+
it "can search" do
|
56
|
+
result = @api.search("facebook")
|
57
|
+
expect(result.length).to be_an(Integer)
|
58
|
+
end
|
59
|
+
|
54
60
|
# DATA
|
55
61
|
# access public info
|
56
62
|
|
@@ -117,6 +123,12 @@ shared_examples_for "Koala GraphAPI" do
|
|
117
123
|
expect(result["http://developers.facebook.com/blog/post/490"] && result["http://developers.facebook.com/blog/post/472"]).to be_truthy
|
118
124
|
end
|
119
125
|
|
126
|
+
# SEARCH
|
127
|
+
it "can search" do
|
128
|
+
result = @api.search("facebook")
|
129
|
+
expect(result.length).to be_an(Integer)
|
130
|
+
end
|
131
|
+
|
120
132
|
# PAGING THROUGH COLLECTIONS
|
121
133
|
# see also graph_collection_tests
|
122
134
|
it "makes a request for a page when provided a specific set of page params" do
|
@@ -534,6 +546,7 @@ shared_examples_for "Koala GraphAPI with an access token" do
|
|
534
546
|
:put_wall_post => 4,
|
535
547
|
:put_comment => 3,
|
536
548
|
:put_like => 2, :delete_like => 2,
|
549
|
+
:search => 3,
|
537
550
|
:set_app_restrictions => 4,
|
538
551
|
:get_page_access_token => 3,
|
539
552
|
:fql_query => 3, :fql_multiquery => 3,
|
@@ -582,10 +595,26 @@ shared_examples_for "Koala GraphAPI with GraphCollection" do
|
|
582
595
|
expect(@api.get_connections(KoalaTest.page, "photos")).to be_nil
|
583
596
|
end
|
584
597
|
|
598
|
+
it "gets a GraphCollection when searching" do
|
599
|
+
result = @api.search("facebook")
|
600
|
+
expect(result).to be_a(Koala::Facebook::GraphCollection)
|
601
|
+
end
|
602
|
+
|
603
|
+
it "returns nil if the search call fails with nil" do
|
604
|
+
# this happens sometimes
|
605
|
+
expect(@api).to receive(:graph_call).and_return(nil)
|
606
|
+
expect(@api.search("facebook")).to be_nil
|
607
|
+
end
|
608
|
+
|
609
|
+
it "gets a GraphCollection when paging through results" do
|
610
|
+
@results = @api.get_page(["search", {"q"=>"facebook", "limit"=>"25", "until"=> KoalaTest.search_time}])
|
611
|
+
expect(@results).to be_a(Koala::Facebook::GraphCollection)
|
612
|
+
end
|
613
|
+
|
585
614
|
it "returns nil if the page call fails with nil" do
|
586
615
|
# this happens sometimes
|
587
616
|
expect(@api).to receive(:graph_call).and_return(nil)
|
588
|
-
expect(@api.
|
617
|
+
expect(@api.get_page(["search", {"q"=>"facebook", "limit"=>"25", "until"=> KoalaTest.search_time}])).to be_nil
|
589
618
|
end
|
590
619
|
end
|
591
620
|
end
|
data/spec/support/koala_test.rb
CHANGED
@@ -3,7 +3,7 @@ module KoalaTest
|
|
3
3
|
|
4
4
|
class << self
|
5
5
|
attr_accessor :oauth_token, :app_id, :secret, :app_access_token, :code, :session_key
|
6
|
-
attr_accessor :oauth_test_data, :subscription_test_data
|
6
|
+
attr_accessor :oauth_test_data, :subscription_test_data, :search_time
|
7
7
|
attr_accessor :test_user_api
|
8
8
|
attr_accessor :vcr_oauth_token
|
9
9
|
end
|
@@ -107,6 +107,9 @@ module KoalaTest
|
|
107
107
|
self.session_key = data["oauth_test_data"]["session_key"]
|
108
108
|
|
109
109
|
self.vcr_oauth_token = data["vcr_data"]["oauth_token"]
|
110
|
+
|
111
|
+
# fix the search time so it can be used in the mock responses
|
112
|
+
self.search_time = data["search_time"] || (Time.now - 3600).to_s
|
110
113
|
end
|
111
114
|
|
112
115
|
def self.testing_permissions
|