fb_graph 2.0.0.alpha → 2.0.0.beta
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +9 -10
- data/README.rdoc +7 -8
- data/VERSION +1 -1
- data/lib/fb_graph/connections/blocked.rb +33 -0
- data/lib/fb_graph/connections/likes.rb +5 -0
- data/lib/fb_graph/page.rb +1 -0
- data/spec/fb_graph/connections/blocked_spec.rb +56 -0
- data/spec/fb_graph/connections/likes_spec.rb +74 -50
- data/spec/mock_json/pages/blocked/create.json +1 -0
- data/spec/mock_json/pages/blocked/index.json +10 -0
- data/spec/mock_json/pages/blocked/show_blocked.json +6 -0
- data/spec/mock_json/pages/blocked/show_non_blocked.json +1 -0
- data/spec/mock_json/users/likes/fb_graph.json +1 -0
- data/spec/mock_json/users/likes/poken.json +1 -0
- metadata +19 -4
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
fb_graph (
|
4
|
+
fb_graph (2.0.0.beta)
|
5
5
|
httpclient (>= 2.2.0.2)
|
6
6
|
rack-oauth2 (>= 0.8.0)
|
7
7
|
|
@@ -9,9 +9,9 @@ GEM
|
|
9
9
|
remote: http://rubygems.org/
|
10
10
|
specs:
|
11
11
|
abstract (1.0.0)
|
12
|
-
actionpack (3.0.
|
13
|
-
activemodel (= 3.0.
|
14
|
-
activesupport (= 3.0.
|
12
|
+
actionpack (3.0.10)
|
13
|
+
activemodel (= 3.0.10)
|
14
|
+
activesupport (= 3.0.10)
|
15
15
|
builder (~> 2.1.2)
|
16
16
|
erubis (~> 2.6.6)
|
17
17
|
i18n (~> 0.5.0)
|
@@ -19,11 +19,11 @@ GEM
|
|
19
19
|
rack-mount (~> 0.6.14)
|
20
20
|
rack-test (~> 0.5.7)
|
21
21
|
tzinfo (~> 0.3.23)
|
22
|
-
activemodel (3.0.
|
23
|
-
activesupport (= 3.0.
|
22
|
+
activemodel (3.0.10)
|
23
|
+
activesupport (= 3.0.10)
|
24
24
|
builder (~> 2.1.2)
|
25
25
|
i18n (~> 0.5.0)
|
26
|
-
activesupport (3.0.
|
26
|
+
activesupport (3.0.10)
|
27
27
|
addressable (2.2.6)
|
28
28
|
attr_required (0.0.3)
|
29
29
|
bouncy-castle-java (1.5.0146.1)
|
@@ -37,11 +37,10 @@ GEM
|
|
37
37
|
jruby-openssl (0.7.4)
|
38
38
|
bouncy-castle-java
|
39
39
|
json (1.5.3)
|
40
|
-
json (1.5.3-java)
|
41
40
|
rack (1.2.3)
|
42
41
|
rack-mount (0.6.14)
|
43
42
|
rack (>= 1.0.0)
|
44
|
-
rack-oauth2 (0.
|
43
|
+
rack-oauth2 (0.9.2)
|
45
44
|
activesupport (>= 2.3)
|
46
45
|
attr_required (>= 0.0.3)
|
47
46
|
httpclient (>= 2.2.0.2)
|
@@ -62,7 +61,7 @@ GEM
|
|
62
61
|
diff-lcs (~> 1.1.2)
|
63
62
|
rspec-mocks (2.6.0)
|
64
63
|
tzinfo (0.3.29)
|
65
|
-
webmock (1.
|
64
|
+
webmock (1.7.4)
|
66
65
|
addressable (> 2.2.5, ~> 2.2)
|
67
66
|
crack (>= 0.1.7)
|
68
67
|
|
data/README.rdoc
CHANGED
@@ -8,11 +8,10 @@ A full-stack Facebook Graph API wrapper in Ruby.
|
|
8
8
|
|
9
9
|
== Resources
|
10
10
|
|
11
|
-
* View
|
12
|
-
*
|
13
|
-
*
|
14
|
-
* Q&A on Google Groups (
|
15
|
-
* Facebook Page (http://www.facebook.com/pages/FbGraph/117513961602338)
|
11
|
+
* View Source on GitHub (https://github.com/nov/fb_graph)
|
12
|
+
* Report Issues on GitHub (https://github.com/nov/fb_graph/issues)
|
13
|
+
* Subscribe Update Info (https://www.facebook.com/FbGraph)
|
14
|
+
* Q&A on Google Groups (http://groups.google.com/group/fb_graph)
|
16
15
|
|
17
16
|
== Examples
|
18
17
|
|
@@ -113,7 +112,7 @@ https://github.com/nov/fb_graph/wiki
|
|
113
112
|
me.feed!(
|
114
113
|
:message => 'Updating via FbGraph',
|
115
114
|
:picture => 'https://graph.facebook.com/matake/picture',
|
116
|
-
:link => '
|
115
|
+
:link => 'https://github.com/nov/fb_graph',
|
117
116
|
:name => 'FbGraph',
|
118
117
|
:description => 'A Ruby wrapper for Facebook Graph API'
|
119
118
|
)
|
@@ -142,7 +141,7 @@ https://github.com/nov/fb_graph/wiki
|
|
142
141
|
|
143
142
|
me = FbGraph::User.me(ACCESS_TOKEN)
|
144
143
|
link = me.link!(
|
145
|
-
:link => '
|
144
|
+
:link => 'https://github.com/nov/fb_graph',
|
146
145
|
:message => 'A Ruby wrapper for Facebook Graph API.'
|
147
146
|
)
|
148
147
|
|
@@ -202,7 +201,7 @@ https://github.com/nov/fb_graph/wiki
|
|
202
201
|
|
203
202
|
Both Facebook JavaScript SDK and normal OAuth2 flow is supported.
|
204
203
|
Below I show simple sample code.
|
205
|
-
You can also see
|
204
|
+
You can also see https://github.com/nov/fb_graph_sample for more details Rails3 sample application.
|
206
205
|
|
207
206
|
==== JavaScript SDK
|
208
207
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.0.0.
|
1
|
+
2.0.0.beta
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module FbGraph
|
2
|
+
module Connections
|
3
|
+
module Blocked
|
4
|
+
def blocked(options = {})
|
5
|
+
blocked = self.connection :blocked, options
|
6
|
+
blocked.map! do |user|
|
7
|
+
User.new(user[:id], user.merge(
|
8
|
+
:access_token => options[:access_token] || self.access_token
|
9
|
+
))
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def blocked?(user, options = {})
|
14
|
+
blocked = self.connection :blocked, options.merge(:connection_scope => user.identifier)
|
15
|
+
blocked.present?
|
16
|
+
end
|
17
|
+
|
18
|
+
def block!(*users)
|
19
|
+
options = users.extract_options!
|
20
|
+
blocked = post options.merge(:connection => :blocked, :uid => Array(users).collect(&:identifier).join(','))
|
21
|
+
blocked.delete_if do |user_id, succeeded|
|
22
|
+
!succeeded
|
23
|
+
end.keys.map! do |user_id|
|
24
|
+
User.new(user_id, :access_token => options[:access_token] || self.access_token)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def unblock!(user, options = {})
|
29
|
+
delete options.merge(:connection => :blocked, :connection_scope => user.identifier)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -19,6 +19,11 @@ module FbGraph
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
+
def like?(page, options = {})
|
23
|
+
like = self.connection :likes, options.merge(:connection_scope => page.identifier)
|
24
|
+
like.present?
|
25
|
+
end
|
26
|
+
|
22
27
|
# NOTE: likes! is defined in fb_graph/connections/comments.rb
|
23
28
|
end
|
24
29
|
end
|
data/lib/fb_graph/page.rb
CHANGED
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe FbGraph::Connections::Blocked do
|
4
|
+
let(:page) { FbGraph::Page.new(117513961602338, :access_token => 'access_token') }
|
5
|
+
let(:user) { FbGraph::User.new(579612276) }
|
6
|
+
|
7
|
+
describe '#blocked' do
|
8
|
+
it 'should return blocked users as FbGraph::User' do
|
9
|
+
mock_graph :get, '117513961602338/blocked', 'pages/blocked/index', :access_token => 'access_token' do
|
10
|
+
users = page.blocked
|
11
|
+
users.each do |user|
|
12
|
+
user.should be_a FbGraph::User
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe '#blocked?' do
|
19
|
+
context 'when blocked' do
|
20
|
+
it 'should retrun true' do
|
21
|
+
mock_graph :get, '117513961602338/blocked/579612276', 'pages/blocked/show_blocked', :access_token => 'access_token' do
|
22
|
+
page.blocked?(user).should be_true
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context 'otherwise' do
|
28
|
+
it 'should retrun false' do
|
29
|
+
mock_graph :get, '117513961602338/blocked/579612276', 'pages/blocked/show_non_blocked', :access_token => 'access_token' do
|
30
|
+
page.blocked?(user).should be_false
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe '#block!' do
|
37
|
+
it 'should return blocked users as FbGraph::User' do
|
38
|
+
mock_graph :post, '117513961602338/blocked', 'pages/blocked/create', :access_token => 'access_token', :params => {
|
39
|
+
:uid => '579612276'
|
40
|
+
} do
|
41
|
+
blocked = page.block! user
|
42
|
+
blocked.each do |user|
|
43
|
+
user.should be_a FbGraph::User
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe '#unblock!' do
|
50
|
+
it 'should return true' do
|
51
|
+
mock_graph :delete, '117513961602338/blocked/579612276', 'true', :access_token => 'access_token' do
|
52
|
+
page.unblock!(user).should be_true
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -1,71 +1,95 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
require 'spec_helper'
|
3
3
|
|
4
|
-
describe FbGraph::Connections::Likes
|
5
|
-
|
6
|
-
context 'when
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
4
|
+
describe FbGraph::Connections::Likes do
|
5
|
+
describe '#likes' do
|
6
|
+
context 'when included by FbGraph::User' do
|
7
|
+
context 'when no access_token given' do
|
8
|
+
it 'should raise FbGraph::Unauthorized' do
|
9
|
+
mock_graph :get, 'arjun/likes', 'users/likes/arjun_public', :status => [401, 'Unauthorized'] do
|
10
|
+
lambda do
|
11
|
+
FbGraph::User.new('arjun').likes
|
12
|
+
end.should raise_exception(FbGraph::Unauthorized)
|
13
|
+
end
|
12
14
|
end
|
13
15
|
end
|
14
|
-
end
|
15
16
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
17
|
+
context 'when access_token is given' do
|
18
|
+
it 'should return liked pages as FbGraph::Page' do
|
19
|
+
mock_graph :get, 'arjun/likes', 'users/likes/arjun_private', :access_token => 'access_token' do
|
20
|
+
likes = FbGraph::User.new('arjun', :access_token => 'access_token').likes
|
21
|
+
likes.first.should == FbGraph::Page.new(
|
22
|
+
'378209722137',
|
23
|
+
:access_token => 'access_token',
|
24
|
+
:name => 'Doing Things at the Last Minute',
|
25
|
+
:category => '活動'
|
26
|
+
)
|
27
|
+
likes.each do |like|
|
28
|
+
like.should be_instance_of(FbGraph::Page)
|
29
|
+
end
|
28
30
|
end
|
29
31
|
end
|
30
32
|
end
|
31
33
|
end
|
32
|
-
end
|
33
34
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
35
|
+
context 'when included by FbGraph::Status' do
|
36
|
+
context 'when cached collection exists' do
|
37
|
+
before do
|
38
|
+
mock_graph :get, 'with_likes', 'statuses/with_likes', :access_token => 'access_token' do
|
39
|
+
@status = FbGraph::Status.new('with_likes').fetch(:access_token => 'access_token')
|
40
|
+
end
|
39
41
|
end
|
40
|
-
end
|
41
42
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
43
|
+
context 'when no options given' do
|
44
|
+
it 'should not access to Graph API' do
|
45
|
+
@status.likes.should == [FbGraph::User.new(
|
46
|
+
'604578140',
|
47
|
+
:access_token => 'access_token',
|
48
|
+
:name => 'K Hiromi'
|
49
|
+
)]
|
50
|
+
@status.likes.next.should == []
|
51
|
+
@status.likes.previous.should == []
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
context 'when any options given' do
|
56
|
+
it 'should access to Graph API' do
|
57
|
+
lambda do
|
58
|
+
@status.likes(:no_cache => true) # :no_cache has no meaning, just putting some value as options
|
59
|
+
end.should request_to('115838235152172/likes?access_token=access_token&no_cache=true')
|
60
|
+
lambda do
|
61
|
+
@status.likes(:limit => 10)
|
62
|
+
end.should request_to('115838235152172/likes?access_token=access_token&limit=10')
|
63
|
+
end
|
64
|
+
|
65
|
+
context 'when next/previous are obviously blank' do
|
66
|
+
it 'should not access to Graph API' do
|
67
|
+
@status.likes.next(:no_cache => true).should == []
|
68
|
+
@status.likes.previous(:no_cache => true).should == []
|
69
|
+
end
|
70
|
+
end
|
51
71
|
end
|
52
72
|
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
describe '#like?' do
|
77
|
+
let(:user) { FbGraph::User.new(579612276, :access_token => 'access_token') }
|
78
|
+
let(:fb_graph) { FbGraph::Page.new(117513961602338) }
|
79
|
+
let(:poken) { FbGraph::Page.new(1234567890) }
|
53
80
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
end.should request_to('115838235152172/likes?access_token=access_token&no_cache=true')
|
59
|
-
lambda do
|
60
|
-
@status.likes(:limit => 10)
|
61
|
-
end.should request_to('115838235152172/likes?access_token=access_token&limit=10')
|
81
|
+
context 'when liked' do
|
82
|
+
it 'should retrun true' do
|
83
|
+
mock_graph :get, '579612276/likes/117513961602338', 'users/likes/fb_graph', :access_token => 'access_token' do
|
84
|
+
user.like?(fb_graph).should be_true
|
62
85
|
end
|
86
|
+
end
|
87
|
+
end
|
63
88
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
end
|
89
|
+
context 'otherwise' do
|
90
|
+
it 'should retrun true' do
|
91
|
+
mock_graph :get, '579612276/likes/1234567890', 'users/likes/poken', :access_token => 'access_token' do
|
92
|
+
user.like?(poken).should be_false
|
69
93
|
end
|
70
94
|
end
|
71
95
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
{"579612276":true}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"data": []}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"data":[{"name":"FbGraph", "category":"Software", "id":"117513961602338", "created_time":"2010-04-30T06:48:21+0000"}]}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"data":[]}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fb_graph
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 31098209
|
5
5
|
prerelease: 6
|
6
6
|
segments:
|
7
7
|
- 2
|
8
8
|
- 0
|
9
9
|
- 0
|
10
|
-
-
|
11
|
-
version: 2.0.0.
|
10
|
+
- beta
|
11
|
+
version: 2.0.0.beta
|
12
12
|
platform: ruby
|
13
13
|
authors:
|
14
14
|
- nov matake
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2011-08-
|
19
|
+
date: 2011-08-22 00:00:00 Z
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
name: httpclient
|
@@ -168,6 +168,7 @@ files:
|
|
168
168
|
- lib/fb_graph/connections/albums.rb
|
169
169
|
- lib/fb_graph/connections/app_requests.rb
|
170
170
|
- lib/fb_graph/connections/attending.rb
|
171
|
+
- lib/fb_graph/connections/blocked.rb
|
171
172
|
- lib/fb_graph/connections/books.rb
|
172
173
|
- lib/fb_graph/connections/checkins.rb
|
173
174
|
- lib/fb_graph/connections/comments.rb
|
@@ -269,6 +270,7 @@ files:
|
|
269
270
|
- spec/fb_graph/connections/albums_spec.rb
|
270
271
|
- spec/fb_graph/connections/app_requests_spec.rb
|
271
272
|
- spec/fb_graph/connections/attending_spec.rb
|
273
|
+
- spec/fb_graph/connections/blocked_spec.rb
|
272
274
|
- spec/fb_graph/connections/books_spec.rb
|
273
275
|
- spec/fb_graph/connections/checkins_spec.rb
|
274
276
|
- spec/fb_graph/connections/comments_spec.rb
|
@@ -377,6 +379,10 @@ files:
|
|
377
379
|
- spec/mock_json/events/noreply/smartday_private.json
|
378
380
|
- spec/mock_json/groups/docs/private.json
|
379
381
|
- spec/mock_json/groups/members/emacs_private.json
|
382
|
+
- spec/mock_json/pages/blocked/create.json
|
383
|
+
- spec/mock_json/pages/blocked/index.json
|
384
|
+
- spec/mock_json/pages/blocked/show_blocked.json
|
385
|
+
- spec/mock_json/pages/blocked/show_non_blocked.json
|
380
386
|
- spec/mock_json/pages/categories/local_business.json
|
381
387
|
- spec/mock_json/pages/categories/movie.json
|
382
388
|
- spec/mock_json/pages/categories/music.json
|
@@ -467,6 +473,8 @@ files:
|
|
467
473
|
- spec/mock_json/users/interests/matake_private.json
|
468
474
|
- spec/mock_json/users/likes/arjun_private.json
|
469
475
|
- spec/mock_json/users/likes/arjun_public.json
|
476
|
+
- spec/mock_json/users/likes/fb_graph.json
|
477
|
+
- spec/mock_json/users/likes/poken.json
|
470
478
|
- spec/mock_json/users/links/matake_private.json
|
471
479
|
- spec/mock_json/users/links/post_with_valid_access_token.json
|
472
480
|
- spec/mock_json/users/me_private.json
|
@@ -539,6 +547,7 @@ test_files:
|
|
539
547
|
- spec/fb_graph/connections/albums_spec.rb
|
540
548
|
- spec/fb_graph/connections/app_requests_spec.rb
|
541
549
|
- spec/fb_graph/connections/attending_spec.rb
|
550
|
+
- spec/fb_graph/connections/blocked_spec.rb
|
542
551
|
- spec/fb_graph/connections/books_spec.rb
|
543
552
|
- spec/fb_graph/connections/checkins_spec.rb
|
544
553
|
- spec/fb_graph/connections/comments_spec.rb
|
@@ -647,6 +656,10 @@ test_files:
|
|
647
656
|
- spec/mock_json/events/noreply/smartday_private.json
|
648
657
|
- spec/mock_json/groups/docs/private.json
|
649
658
|
- spec/mock_json/groups/members/emacs_private.json
|
659
|
+
- spec/mock_json/pages/blocked/create.json
|
660
|
+
- spec/mock_json/pages/blocked/index.json
|
661
|
+
- spec/mock_json/pages/blocked/show_blocked.json
|
662
|
+
- spec/mock_json/pages/blocked/show_non_blocked.json
|
650
663
|
- spec/mock_json/pages/categories/local_business.json
|
651
664
|
- spec/mock_json/pages/categories/movie.json
|
652
665
|
- spec/mock_json/pages/categories/music.json
|
@@ -737,6 +750,8 @@ test_files:
|
|
737
750
|
- spec/mock_json/users/interests/matake_private.json
|
738
751
|
- spec/mock_json/users/likes/arjun_private.json
|
739
752
|
- spec/mock_json/users/likes/arjun_public.json
|
753
|
+
- spec/mock_json/users/likes/fb_graph.json
|
754
|
+
- spec/mock_json/users/likes/poken.json
|
740
755
|
- spec/mock_json/users/links/matake_private.json
|
741
756
|
- spec/mock_json/users/links/post_with_valid_access_token.json
|
742
757
|
- spec/mock_json/users/me_private.json
|