fb_graph 2.4.11 → 2.4.12
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +1 -1
- data/VERSION +1 -1
- data/lib/fb_graph/application.rb +49 -3
- data/lib/fb_graph/comparison.rb +5 -1
- data/lib/fb_graph/connections/invited.rb +4 -1
- data/lib/fb_graph/node.rb +4 -3
- data/lib/fb_graph/page/category_attributes.rb +3 -0
- data/spec/fb_graph/application_spec.rb +134 -2
- data/spec/fb_graph/connections/invited_spec.rb +19 -7
- data/spec/fb_graph/node_spec.rb +5 -0
- data/spec/fb_graph/page_spec.rb +12 -0
- metadata +19 -19
data/Gemfile.lock
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.4.
|
1
|
+
2.4.12
|
data/lib/fb_graph/application.rb
CHANGED
@@ -26,15 +26,52 @@ module FbGraph
|
|
26
26
|
:name,
|
27
27
|
:namespace,
|
28
28
|
:description,
|
29
|
+
:canvas_name,
|
29
30
|
:category,
|
30
|
-
:company,
|
31
|
-
:icon_url,
|
32
31
|
:subcategory,
|
33
32
|
:link,
|
33
|
+
:company,
|
34
|
+
:icon_url,
|
34
35
|
:logo_url,
|
35
36
|
:daily_active_users,
|
36
37
|
:weekly_active_users,
|
37
38
|
:monthly_active_users,
|
39
|
+
:migrations,
|
40
|
+
:namespace,
|
41
|
+
:restrictions,
|
42
|
+
:app_domains,
|
43
|
+
:auth_dialog_data_help_url,
|
44
|
+
:auth_dialog_description,
|
45
|
+
:auth_dialog_headline,
|
46
|
+
:auth_dialog_perms_explanation,
|
47
|
+
:auth_referral_user_perms,
|
48
|
+
:auth_referral_friend_perms,
|
49
|
+
:auth_referral_default_activity_privacy,
|
50
|
+
:auth_referral_enabled,
|
51
|
+
:auth_referral_extended_perms,
|
52
|
+
:auth_referral_response_type,
|
53
|
+
:canvas_fluid_height,
|
54
|
+
:canvas_fluid_width,
|
55
|
+
:canvas_url,
|
56
|
+
:contact_email,
|
57
|
+
:created_time,
|
58
|
+
:creator_uid,
|
59
|
+
:deauth_callback_url,
|
60
|
+
:iphone_app_store_id,
|
61
|
+
:hosting_url,
|
62
|
+
:mobile_web_url,
|
63
|
+
:page_tab_default_name,
|
64
|
+
:page_tab_url,
|
65
|
+
:privacy_policy_url,
|
66
|
+
:secure_canvas_url,
|
67
|
+
:secure_page_tab_url,
|
68
|
+
:server_ip_whitelist,
|
69
|
+
:social_discovery,
|
70
|
+
:terms_of_service_url,
|
71
|
+
:user_support_email,
|
72
|
+
:user_support_url,
|
73
|
+
:website_url,
|
74
|
+
:type,
|
38
75
|
:secret
|
39
76
|
]
|
40
77
|
attr_accessor *@@attributes
|
@@ -46,6 +83,15 @@ module FbGraph
|
|
46
83
|
# For some reason, Graph API returns daily_active_users, weekly_active_users, monthly_active_users as JSON string.
|
47
84
|
value = if [:daily_active_users, :weekly_active_users, :monthly_active_users].include?(key)
|
48
85
|
attributes[key].to_i
|
86
|
+
# Boolean fields may be returned as 1 for true or 0 for false
|
87
|
+
elsif [:auth_referral_enabled, :canvas_fluid_height, :canvas_fluid_width, :social_discovery]
|
88
|
+
if attributes[key] == 1
|
89
|
+
true
|
90
|
+
elsif attributes[key] == 0
|
91
|
+
false
|
92
|
+
else
|
93
|
+
attributes[key]
|
94
|
+
end
|
49
95
|
else
|
50
96
|
attributes[key]
|
51
97
|
end
|
@@ -66,4 +112,4 @@ module FbGraph
|
|
66
112
|
alias_method_chain :access_token, :auto_fetch
|
67
113
|
|
68
114
|
end
|
69
|
-
end
|
115
|
+
end
|
data/lib/fb_graph/comparison.rb
CHANGED
@@ -2,7 +2,11 @@ module FbGraph
|
|
2
2
|
module Comparison
|
3
3
|
def ==(other)
|
4
4
|
instance_variables.all? do |key|
|
5
|
-
|
5
|
+
if key.to_s == '@raw_attributes'
|
6
|
+
:ignore_difference!
|
7
|
+
else
|
8
|
+
instance_variable_get(key) == other.instance_variable_get(key)
|
9
|
+
end
|
6
10
|
end
|
7
11
|
end
|
8
12
|
end
|
data/lib/fb_graph/node.rb
CHANGED
@@ -4,12 +4,13 @@ module FbGraph
|
|
4
4
|
class Node
|
5
5
|
include Comparison
|
6
6
|
|
7
|
-
attr_accessor :identifier, :endpoint, :access_token
|
7
|
+
attr_accessor :identifier, :endpoint, :access_token, :raw_attributes
|
8
8
|
|
9
|
-
def initialize(identifier,
|
9
|
+
def initialize(identifier, attributes = {})
|
10
10
|
@identifier = identifier
|
11
11
|
@endpoint = File.join(ROOT_URL, identifier.to_s)
|
12
|
-
@access_token =
|
12
|
+
@access_token = attributes[:access_token]
|
13
|
+
@raw_attributes = attributes
|
13
14
|
@cached_collections = {}
|
14
15
|
end
|
15
16
|
|
@@ -71,6 +71,9 @@ module FbGraph
|
|
71
71
|
@@attributes[:raw].each do |key|
|
72
72
|
self.send :"#{key}=", attributes[key]
|
73
73
|
end
|
74
|
+
|
75
|
+
self.link ||= "https://www.facebook.com/#{username || identifier}"
|
76
|
+
|
74
77
|
@@attributes[:symbols].each do |key|
|
75
78
|
self.send :"#{key}=", []
|
76
79
|
if attributes[key]
|
@@ -9,19 +9,151 @@ describe FbGraph::Application do
|
|
9
9
|
:id => '12345',
|
10
10
|
:name => 'FbGraph',
|
11
11
|
:description => 'Owsome Facebook Graph Wrapper',
|
12
|
+
:canvas_name => 'fb_graph',
|
12
13
|
:category => 'Programming',
|
14
|
+
:subcategory => 'Ruby',
|
13
15
|
:link => 'http://github.com/nov/fb_graph',
|
16
|
+
:company => 'FbGraph',
|
14
17
|
:secret => 'sec sec',
|
15
|
-
:
|
18
|
+
:icon_url => 'http://example.com/icon.gif',
|
19
|
+
:logo_url => 'http://example.com/logo.gif',
|
20
|
+
:daily_active_users => '10',
|
21
|
+
:weekly_active_users => '5',
|
22
|
+
:monthly_active_users => '1',
|
23
|
+
:migrations => {
|
24
|
+
'secure_stream_urls' => false,
|
25
|
+
'expiring_offline_access_tokens' => true,
|
26
|
+
'december_rollup' => true,
|
27
|
+
'requires_login_secret' => false,
|
28
|
+
'gdp_v2' => true,
|
29
|
+
'page_hours_format' => true,
|
30
|
+
'graph_batch_api_exception_format' => true,
|
31
|
+
'status_checkin_perm_migration' => false
|
32
|
+
},
|
33
|
+
:namespace => 'fb_graph',
|
34
|
+
:restrictions => {
|
35
|
+
'age_distribution' => {
|
36
|
+
'CA,US' => '16-25'
|
37
|
+
}
|
38
|
+
},
|
39
|
+
:app_domains => [
|
40
|
+
'example.com',
|
41
|
+
'example.org'
|
42
|
+
],
|
43
|
+
:auth_dialog_data_help_url => 'http://example.com/help/',
|
44
|
+
:auth_dialog_description => 'Authorize this app',
|
45
|
+
:auth_dialog_headline => "Don't think, just click",
|
46
|
+
:auth_dialog_perms_explanation => 'Trust me',
|
47
|
+
:auth_referral_user_perms => [
|
48
|
+
'user_hometown',
|
49
|
+
'user_activities',
|
50
|
+
'user_online_presence'
|
51
|
+
],
|
52
|
+
:auth_referral_default_activity_privacy => 'NONE',
|
53
|
+
:auth_referral_enabled => 1,
|
54
|
+
:auth_referral_extended_perms => [
|
55
|
+
'status_update',
|
56
|
+
'video_upload',
|
57
|
+
'publish_stream'
|
58
|
+
],
|
59
|
+
:auth_referral_response_type => 'code',
|
60
|
+
:canvas_fluid_height => false,
|
61
|
+
:canvas_fluid_width => 1,
|
62
|
+
:canvas_url => 'http://example.com/canvas/',
|
63
|
+
:contact_email => 'fb_graph@example.com',
|
64
|
+
:created_time => 1328798126,
|
65
|
+
:creator_uid => 98765,
|
66
|
+
:deauth_callback_url => 'http://example.com/death/',
|
67
|
+
:iphone_app_store_id => '4567',
|
68
|
+
:hosting_url => 'http://fb_graph.heroku.com',
|
69
|
+
:mobile_web_url => 'http://m.example.com',
|
70
|
+
:page_tab_default_name => 'fb_graph Page',
|
71
|
+
:page_tab_url => 'http://example.com/page/',
|
72
|
+
:privacy_policy_url => 'http://example.com/privacy/',
|
73
|
+
:secure_canvas_url => 'https://example.com/canvas/',
|
74
|
+
:secure_page_tab_url => 'https://example.com/page/',
|
75
|
+
:server_ip_whitelist => '127.0.0.1',
|
76
|
+
:social_discovery => 0,
|
77
|
+
:terms_of_service_url => 'http://example.com/terms/',
|
78
|
+
:user_support_email => 'fb_graph@example.org',
|
79
|
+
:user_support_url => 'http://example.com/support/',
|
80
|
+
:website_url => 'http://example.com',
|
81
|
+
:type => 'application'
|
16
82
|
}
|
83
|
+
|
17
84
|
app = FbGraph::Application.new(attributes.delete(:id), attributes)
|
18
85
|
app.identifier.should == '12345'
|
19
86
|
app.name.should == 'FbGraph'
|
20
87
|
app.description.should == 'Owsome Facebook Graph Wrapper'
|
88
|
+
app.canvas_name.should == 'fb_graph'
|
21
89
|
app.category.should == 'Programming'
|
90
|
+
app.subcategory.should == 'Ruby'
|
22
91
|
app.link.should == 'http://github.com/nov/fb_graph'
|
92
|
+
app.company.should == 'FbGraph'
|
93
|
+
app.icon_url.should == 'http://example.com/icon.gif'
|
94
|
+
app.logo_url.should == 'http://example.com/logo.gif'
|
23
95
|
app.secret.should == 'sec sec'
|
24
96
|
app.daily_active_users.should == 10
|
97
|
+
app.weekly_active_users.should == 5
|
98
|
+
app.monthly_active_users.should == 1
|
99
|
+
app.migrations.should == {
|
100
|
+
'secure_stream_urls' => false,
|
101
|
+
'expiring_offline_access_tokens' => true,
|
102
|
+
'december_rollup' => true,
|
103
|
+
'requires_login_secret' => false,
|
104
|
+
'gdp_v2' => true,
|
105
|
+
'page_hours_format' => true,
|
106
|
+
'graph_batch_api_exception_format' => true,
|
107
|
+
'status_checkin_perm_migration' => false
|
108
|
+
}
|
109
|
+
app.namespace.should == 'fb_graph'
|
110
|
+
app.restrictions.should == {
|
111
|
+
'age_distribution' => {
|
112
|
+
'CA,US' => '16-25'
|
113
|
+
}
|
114
|
+
}
|
115
|
+
app.app_domains.should == [
|
116
|
+
'example.com',
|
117
|
+
'example.org'
|
118
|
+
]
|
119
|
+
app.auth_dialog_data_help_url.should == 'http://example.com/help/'
|
120
|
+
app.auth_dialog_description.should == 'Authorize this app'
|
121
|
+
app.auth_dialog_headline.should == "Don't think, just click"
|
122
|
+
app.auth_dialog_perms_explanation.should == 'Trust me'
|
123
|
+
app.auth_referral_user_perms.should == [
|
124
|
+
'user_hometown',
|
125
|
+
'user_activities',
|
126
|
+
'user_online_presence'
|
127
|
+
]
|
128
|
+
app.auth_referral_default_activity_privacy.should == 'NONE'
|
129
|
+
app.auth_referral_enabled.should == true
|
130
|
+
app.auth_referral_extended_perms.should == [
|
131
|
+
'status_update',
|
132
|
+
'video_upload',
|
133
|
+
'publish_stream'
|
134
|
+
]
|
135
|
+
app.auth_referral_response_type.should == 'code'
|
136
|
+
app.canvas_fluid_height.should == false
|
137
|
+
app.canvas_fluid_width.should == true
|
138
|
+
app.canvas_url.should == 'http://example.com/canvas/'
|
139
|
+
app.contact_email.should == 'fb_graph@example.com'
|
140
|
+
app.created_time.should == 1328798126
|
141
|
+
app.creator_uid.should == 98765
|
142
|
+
app.deauth_callback_url.should == 'http://example.com/death/'
|
143
|
+
app.iphone_app_store_id.should == '4567'
|
144
|
+
app.hosting_url.should == 'http://fb_graph.heroku.com'
|
145
|
+
app.mobile_web_url.should == 'http://m.example.com'
|
146
|
+
app.page_tab_default_name.should == 'fb_graph Page'
|
147
|
+
app.page_tab_url.should == 'http://example.com/page/'
|
148
|
+
app.privacy_policy_url.should == 'http://example.com/privacy/'
|
149
|
+
app.secure_canvas_url.should == 'https://example.com/canvas/'
|
150
|
+
app.secure_page_tab_url.should == 'https://example.com/page/'
|
151
|
+
app.server_ip_whitelist.should == '127.0.0.1'
|
152
|
+
app.social_discovery.should == false
|
153
|
+
app.user_support_email.should == 'fb_graph@example.org'
|
154
|
+
app.user_support_url.should == 'http://example.com/support/'
|
155
|
+
app.website_url.should == 'http://example.com'
|
156
|
+
app.type.should == 'application'
|
25
157
|
end
|
26
158
|
end
|
27
159
|
|
@@ -63,4 +195,4 @@ describe FbGraph::Application do
|
|
63
195
|
end
|
64
196
|
end
|
65
197
|
end
|
66
|
-
end
|
198
|
+
end
|
@@ -1,12 +1,24 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe FbGraph::Connections::Invited
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
3
|
+
describe FbGraph::Connections::Invited do
|
4
|
+
describe '#invited' do
|
5
|
+
it 'should return invited users as FbGraph::User' do
|
6
|
+
mock_graph :get, 'smartday/invited', 'events/invited/smartday_private', :access_token => 'access_token' do
|
7
|
+
users = FbGraph::Event.new('smartday', :access_token => 'access_token').invited
|
8
|
+
users.each do |user|
|
9
|
+
user.should be_instance_of(FbGraph::User)
|
10
|
+
end
|
9
11
|
end
|
10
12
|
end
|
11
13
|
end
|
12
|
-
|
14
|
+
|
15
|
+
describe '#invite!' do
|
16
|
+
let(:event) { FbGraph::Event.new('smartday', :access_token => 'access_token') }
|
17
|
+
it 'should invite a single user to an event' do
|
18
|
+
mock_graph :post, 'smartday/invited', 'true', :access_token => 'access_token', :params => {
|
19
|
+
:users => "user_id" } do
|
20
|
+
event.invite!(:users => "user_id").should be_true
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/spec/fb_graph/node_spec.rb
CHANGED
@@ -10,6 +10,11 @@ describe FbGraph::Node do
|
|
10
10
|
it 'should support access_token option' do
|
11
11
|
FbGraph::Node.new('matake', :access_token => 'access_token').access_token.should == 'access_token'
|
12
12
|
end
|
13
|
+
|
14
|
+
it 'should store raw attributes' do
|
15
|
+
attributes = {:key => :value}
|
16
|
+
FbGraph::Node.new(12345, attributes).raw_attributes.should == attributes
|
17
|
+
end
|
13
18
|
end
|
14
19
|
|
15
20
|
describe '#build_params' do
|
data/spec/fb_graph/page_spec.rb
CHANGED
@@ -22,6 +22,18 @@ describe FbGraph::Page do
|
|
22
22
|
its(:username) { should == attributes[:username] }
|
23
23
|
its(:talking_about_count) { should == attributes[:talking_about_count] }
|
24
24
|
|
25
|
+
describe 'link' do
|
26
|
+
context 'when username exists' do
|
27
|
+
subject { FbGraph::Page.new(attributes[:id], attributes) }
|
28
|
+
its(:link) { should == "https://www.facebook.com/#{attributes[:username]}" }
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'otherwise' do
|
32
|
+
subject { FbGraph::Page.new(attributes[:id]) }
|
33
|
+
its(:link) { should == "https://www.facebook.com/#{attributes[:id]}" }
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
25
37
|
describe '.fetch' do
|
26
38
|
subject do
|
27
39
|
mock_graph :get, 'platform', 'pages/platform_public' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fb_graph
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.4.
|
4
|
+
version: 2.4.12
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-05-05 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: httpclient
|
16
|
-
requirement: &
|
16
|
+
requirement: &70308890886500 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 2.2.0.2
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70308890886500
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rack-oauth2
|
27
|
-
requirement: &
|
27
|
+
requirement: &70308890885560 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 0.14.4
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70308890885560
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: tzinfo
|
38
|
-
requirement: &
|
38
|
+
requirement: &70308890885020 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70308890885020
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rake
|
49
|
-
requirement: &
|
49
|
+
requirement: &70308890884480 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0.8'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70308890884480
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: cover_me
|
60
|
-
requirement: &
|
60
|
+
requirement: &70308890883820 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 1.2.0
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70308890883820
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rspec
|
71
|
-
requirement: &
|
71
|
+
requirement: &70308890883160 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '2'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70308890883160
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: webmock
|
82
|
-
requirement: &
|
82
|
+
requirement: &70308890882480 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: 1.6.2
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70308890882480
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: actionpack
|
93
|
-
requirement: &
|
93
|
+
requirement: &70308890881760 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ! '>='
|
@@ -98,7 +98,7 @@ dependencies:
|
|
98
98
|
version: 3.0.6
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *70308890881760
|
102
102
|
description: A full-stack Facebook Graph API wrapper in Ruby.
|
103
103
|
email: nov@matake.jp
|
104
104
|
executables: []
|
@@ -641,7 +641,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
641
641
|
version: '0'
|
642
642
|
requirements: []
|
643
643
|
rubyforge_project:
|
644
|
-
rubygems_version: 1.8.
|
644
|
+
rubygems_version: 1.8.12
|
645
645
|
signing_key:
|
646
646
|
specification_version: 3
|
647
647
|
summary: A full-stack Facebook Graph API wrapper in Ruby.
|