fb_graph 1.9.2 → 1.9.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile.lock +1 -1
- data/VERSION +1 -1
- data/lib/fb_graph/connections/settings.rb +64 -0
- data/lib/fb_graph/connections/tabs.rb +18 -0
- data/lib/fb_graph/node.rb +6 -3
- data/lib/fb_graph/page.rb +2 -0
- data/lib/fb_graph/tab.rb +17 -0
- data/lib/fb_graph.rb +1 -0
- data/spec/fb_graph/connections/settings_spec.rb +62 -0
- data/spec/fb_graph/connections/tabs_spec.rb +25 -0
- data/spec/fb_graph/node_spec.rb +10 -4
- data/spec/fb_graph/page_spec.rb +11 -0
- data/spec/mock_json/pages/settings/all_enabled.json +20 -0
- data/spec/mock_json/pages/settings/sample.json +20 -0
- data/spec/mock_json/pages/tabs/fb_graph.json +28 -0
- data/spec/mock_json/pages/with_token.json +1 -0
- metadata +20 -5
data/Gemfile.lock
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.9.
|
1
|
+
1.9.3
|
@@ -0,0 +1,64 @@
|
|
1
|
+
module FbGraph
|
2
|
+
module Connections
|
3
|
+
module Settings
|
4
|
+
AVAILABLE_SETTINGS = [
|
5
|
+
:users_can_post,
|
6
|
+
:users_can_post_photos,
|
7
|
+
:users_can_tag_photos,
|
8
|
+
:users_can_post_videos
|
9
|
+
]
|
10
|
+
|
11
|
+
def self.included(klass)
|
12
|
+
AVAILABLE_SETTINGS.each do |setting|
|
13
|
+
klass.class_eval <<-SETTING
|
14
|
+
def #{setting}?(options = {})
|
15
|
+
settings(options).include? :#{setting}
|
16
|
+
end
|
17
|
+
|
18
|
+
def #{setting}!(options = {})
|
19
|
+
enable! :#{setting}, options
|
20
|
+
end
|
21
|
+
|
22
|
+
def #{setting.to_s.sub('can', 'cannot')}!(options = {})
|
23
|
+
disable! :#{setting}, options
|
24
|
+
end
|
25
|
+
SETTING
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def settings(options = {})
|
30
|
+
@settings = nil if options[:no_cache]
|
31
|
+
@settings ||= self.connection(:settings, options).inject([]) do |_settings_, _setting_|
|
32
|
+
_settings_ << _setting_[:setting].downcase.to_sym if _setting_[:value]
|
33
|
+
_settings_
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def enable!(setting, options = {})
|
38
|
+
__update_setting__ setting, true, options
|
39
|
+
end
|
40
|
+
|
41
|
+
def disable!(setting, options = {})
|
42
|
+
__update_setting__ setting, false, options
|
43
|
+
end
|
44
|
+
|
45
|
+
private
|
46
|
+
|
47
|
+
def __update_setting__(setting, value, options = {})
|
48
|
+
succeeded = post options.merge(
|
49
|
+
:setting => setting.to_s.upcase,
|
50
|
+
:value => value,
|
51
|
+
:connection => :settings
|
52
|
+
)
|
53
|
+
if succeeded
|
54
|
+
if value
|
55
|
+
@settings << setting.to_sym
|
56
|
+
else
|
57
|
+
@settings.delete_if { |key| key == setting.to_sym }
|
58
|
+
end
|
59
|
+
end
|
60
|
+
succeeded
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module FbGraph
|
2
|
+
module Connections
|
3
|
+
module Tabs
|
4
|
+
def tabs(options = {})
|
5
|
+
tabs = self.connection(:tabs, options)
|
6
|
+
tabs.map! do |tab|
|
7
|
+
Tab.new(tab[:id], tab.merge(
|
8
|
+
:access_token => options[:access_token] || self.access_token
|
9
|
+
))
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def tab!(options = {})
|
14
|
+
post options.merge(:connection => :tabs)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/fb_graph/node.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'tempfile'
|
2
|
+
|
1
3
|
module FbGraph
|
2
4
|
class Node
|
3
5
|
include Comparison
|
@@ -13,7 +15,8 @@ module FbGraph
|
|
13
15
|
def fetch(options = {})
|
14
16
|
options[:access_token] ||= self.access_token if self.access_token
|
15
17
|
_fetched_ = get(options)
|
16
|
-
|
18
|
+
_fetched_[:access_token] ||= options[:access_token]
|
19
|
+
self.class.new(_fetched_[:id], _fetched_)
|
17
20
|
end
|
18
21
|
|
19
22
|
def self.fetch(identifier, options = {})
|
@@ -72,9 +75,9 @@ module FbGraph
|
|
72
75
|
_params_.each do |key, value|
|
73
76
|
next if value.blank?
|
74
77
|
_params_[key] = case value
|
75
|
-
when Symbol, Numeric, Rack::OAuth2::AccessToken::Legacy
|
78
|
+
when String, Symbol, Numeric, Rack::OAuth2::AccessToken::Legacy
|
76
79
|
value.to_s
|
77
|
-
when
|
80
|
+
when IO, Tempfile
|
78
81
|
value
|
79
82
|
when defined?(ActionDispatch::Http::UploadedFile) && ActionDispatch::Http::UploadedFile
|
80
83
|
# NOTE: for Rails 3.0.6+
|
data/lib/fb_graph/page.rb
CHANGED
@@ -11,7 +11,9 @@ module FbGraph
|
|
11
11
|
include Connections::Photos
|
12
12
|
include Connections::Picture
|
13
13
|
include Connections::Posts
|
14
|
+
include Connections::Settings
|
14
15
|
include Connections::Statuses
|
16
|
+
include Connections::Tabs
|
15
17
|
include Connections::Tagged
|
16
18
|
include Connections::Videos
|
17
19
|
extend Searchable
|
data/lib/fb_graph/tab.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
module FbGraph
|
2
|
+
class Tab < Node
|
3
|
+
attr_accessor :link, :application, :custom_name, :is_permanent, :position, :is_non_connection_landing_tab
|
4
|
+
|
5
|
+
def initialize(identifier, attributes = {})
|
6
|
+
super
|
7
|
+
@link = attributes[:link]
|
8
|
+
@application = if attributes[:application]
|
9
|
+
Application.new(attributes[:application][:id], attributes[:application])
|
10
|
+
end
|
11
|
+
@custom_name = attributes[:custom_name]
|
12
|
+
@is_permanent = attributes[:is_permanent]
|
13
|
+
@position = attributes[:position]
|
14
|
+
@is_non_connection_landing_tab = attributes[:is_non_connection_landing_tab]
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/fb_graph.rb
CHANGED
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe FbGraph::Connections::Settings do
|
4
|
+
|
5
|
+
describe '#settings' do
|
6
|
+
subject do
|
7
|
+
mock_graph :get, 'sample/settings', 'pages/settings/sample', :access_token => 'page_token' do
|
8
|
+
FbGraph::Page.new('sample').settings(:access_token => 'page_token')
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
it do
|
13
|
+
should == [
|
14
|
+
:users_can_post,
|
15
|
+
:users_can_post_photos,
|
16
|
+
:users_can_post_videos
|
17
|
+
]
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe 'setting specific methods' do
|
22
|
+
let(:page) { FbGraph::Page.new('page_id', :access_token => 'page_token') }
|
23
|
+
|
24
|
+
before do
|
25
|
+
mock_graph :get, 'page_id/settings', 'pages/settings/all_enabled', :access_token => 'page_token' do
|
26
|
+
page.settings # cache settings
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
FbGraph::Connections::Settings::AVAILABLE_SETTINGS.each do |setting|
|
31
|
+
describe "##{setting}?" do
|
32
|
+
it { page.send(:"#{setting}?").should be_true }
|
33
|
+
|
34
|
+
context 'when no_cache specified' do
|
35
|
+
it 'should request API' do
|
36
|
+
expect { page.send(:"#{setting}?", :no_cache => true) }.should request_to 'page_id/settings'
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe "#{setting}!" do
|
42
|
+
it "should enable it" do
|
43
|
+
mock_graph :post, 'page_id/settings', 'true', :access_token => 'page_token', :params => {
|
44
|
+
:setting => setting.to_s.upcase, :value => 'true'
|
45
|
+
} do
|
46
|
+
page.send(:"#{setting}!").should be_true
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe "#{setting.to_s.sub('can', 'cannot')}!" do
|
52
|
+
it "should disable it" do
|
53
|
+
mock_graph :post, 'page_id/settings', 'true', :access_token => 'page_token', :params => {
|
54
|
+
:setting => setting.to_s.upcase, :value => 'false'
|
55
|
+
} do
|
56
|
+
page.send(:"#{setting.to_s.sub('can', 'cannot')}!").should be_true
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe FbGraph::Connections::Tabs do
|
4
|
+
let(:page) { FbGraph::Page.new('FbGraph', :access_token => 'page_token') }
|
5
|
+
|
6
|
+
describe '#tabs' do
|
7
|
+
it 'should return tabs as FbGraph::Tab' do
|
8
|
+
mock_graph :get, 'FbGraph/tabs', 'pages/tabs/fb_graph', :access_token => 'page_token' do
|
9
|
+
page.tabs.each do |tab|
|
10
|
+
tab.should be_a FbGraph::Tab
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe '#tab!' do
|
17
|
+
it 'should add a tab' do
|
18
|
+
mock_graph :post, 'FbGraph/tabs', 'true', :access_token => 'page_token', :params => {
|
19
|
+
:app_id => '12345'
|
20
|
+
} do
|
21
|
+
page.tab!(:app_id => 12345).should be_true
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/spec/fb_graph/node_spec.rb
CHANGED
@@ -14,6 +14,7 @@ describe FbGraph::Node do
|
|
14
14
|
|
15
15
|
describe '#build_params' do
|
16
16
|
let(:node) { node = FbGraph::Node.new('identifier') }
|
17
|
+
let(:tmpfile) { Tempfile.new('tmp') }
|
17
18
|
|
18
19
|
it 'should make all values to JSON or String' do
|
19
20
|
client = Rack::OAuth2::Client.new(:identifier => 'client_id', :secret => 'client_secret')
|
@@ -23,26 +24,31 @@ describe FbGraph::Node do
|
|
23
24
|
params[:integer].should == '123'
|
24
25
|
end
|
25
26
|
|
26
|
-
it 'should support Rack::OAuth2::AccessToken as self.access_token' do
|
27
|
+
it 'should support Rack::OAuth2::AccessToken::Legacy as self.access_token' do
|
27
28
|
client = Rack::OAuth2::Client.new(:identifier => 'client_id', :secret => 'client_secret')
|
28
29
|
node = FbGraph::Node.new('identifier', :access_token => Rack::OAuth2::AccessToken::Legacy.new(:access_token => 'token'))
|
29
30
|
params = node.send :build_params, {}
|
30
31
|
params[:access_token].should == 'token'
|
31
32
|
end
|
32
33
|
|
33
|
-
it 'should support OAuth2::AccessToken as options[:access_token]' do
|
34
|
+
it 'should support Rack::OAuth2::AccessToken::Legacy as options[:access_token]' do
|
34
35
|
client = Rack::OAuth2::Client.new(:identifier => 'client_id', :secret => 'client_secret')
|
35
36
|
params = node.send :build_params, {:access_token => Rack::OAuth2::AccessToken::Legacy.new(:access_token => 'token')}
|
36
37
|
params[:access_token].should == 'token'
|
37
38
|
end
|
38
39
|
|
40
|
+
it 'should support Tempfile' do
|
41
|
+
params = node.send :build_params, :upload => tmpfile
|
42
|
+
params[:upload].should be_equal tmpfile
|
43
|
+
end
|
44
|
+
|
39
45
|
require 'action_dispatch/http/upload'
|
40
46
|
it 'should support ActionDispatch::Http::UploadedFile' do
|
41
47
|
upload = ActionDispatch::Http::UploadedFile.new(
|
42
|
-
:tempfile =>
|
48
|
+
:tempfile => tmpfile
|
43
49
|
)
|
44
50
|
params = node.send :build_params, :upload => upload
|
45
|
-
params[:upload].should
|
51
|
+
params[:upload].should be_equal tmpfile
|
46
52
|
end
|
47
53
|
end
|
48
54
|
|
data/spec/fb_graph/page_spec.rb
CHANGED
@@ -30,5 +30,16 @@ describe FbGraph::Page do
|
|
30
30
|
its(:name) { should == 'Facebook Platform' }
|
31
31
|
its(:category) { should == 'Technology' }
|
32
32
|
its(:like_count) { should == 578214 }
|
33
|
+
|
34
|
+
context 'when access_token field fetched' do
|
35
|
+
subject do
|
36
|
+
mock_graph :get, 'my_page', 'pages/with_token', :access_token => 'user_token', :params => {
|
37
|
+
:fields => :access_token
|
38
|
+
} do
|
39
|
+
FbGraph::Page.fetch('my_page', :fields => :access_token, :access_token => 'user_token')
|
40
|
+
end
|
41
|
+
end
|
42
|
+
its(:access_token) { should == 'page_token' }
|
43
|
+
end
|
33
44
|
end
|
34
45
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
{
|
2
|
+
"data": [
|
3
|
+
{
|
4
|
+
"setting": "USERS_CAN_POST",
|
5
|
+
"value": true
|
6
|
+
},
|
7
|
+
{
|
8
|
+
"setting": "USERS_CAN_POST_PHOTOS",
|
9
|
+
"value": true
|
10
|
+
},
|
11
|
+
{
|
12
|
+
"setting": "USERS_CAN_TAG_PHOTOS",
|
13
|
+
"value": true
|
14
|
+
},
|
15
|
+
{
|
16
|
+
"setting": "USERS_CAN_POST_VIDEOS",
|
17
|
+
"value": true
|
18
|
+
}
|
19
|
+
]
|
20
|
+
}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
{
|
2
|
+
"data": [
|
3
|
+
{
|
4
|
+
"setting": "USERS_CAN_POST",
|
5
|
+
"value": true
|
6
|
+
},
|
7
|
+
{
|
8
|
+
"setting": "USERS_CAN_POST_PHOTOS",
|
9
|
+
"value": true
|
10
|
+
},
|
11
|
+
{
|
12
|
+
"setting": "USERS_CAN_TAG_PHOTOS",
|
13
|
+
"value": false
|
14
|
+
},
|
15
|
+
{
|
16
|
+
"setting": "USERS_CAN_POST_VIDEOS",
|
17
|
+
"value": true
|
18
|
+
}
|
19
|
+
]
|
20
|
+
}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
{
|
2
|
+
"data": [{
|
3
|
+
"id": "117513961602338/tabs/wall",
|
4
|
+
"name": "Wall",
|
5
|
+
"link": "http://www.facebook.com/FbGraph?sk=wall",
|
6
|
+
"is_permanent": true,
|
7
|
+
"position": 0
|
8
|
+
},
|
9
|
+
{
|
10
|
+
"id": "117513961602338/tabs/info",
|
11
|
+
"name": "Info",
|
12
|
+
"link": "http://www.facebook.com/FbGraph?sk=info",
|
13
|
+
"is_permanent": true,
|
14
|
+
"position": 1
|
15
|
+
},
|
16
|
+
{
|
17
|
+
"id": "117513961602338/tabs/app_134145643294322",
|
18
|
+
"name": "Custom Name",
|
19
|
+
"link": "http://www.facebook.com/FbGraph?sk=app_134145643294322",
|
20
|
+
"application": {
|
21
|
+
"name": "gem sample",
|
22
|
+
"id": "134145643294322"
|
23
|
+
},
|
24
|
+
"custom_name": "Custom Name",
|
25
|
+
"position": 2,
|
26
|
+
"is_non_connection_landing_tab": true
|
27
|
+
}]
|
28
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"access_token":"page_token","id":"117513961602338"}
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fb_graph
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 53
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 9
|
9
|
-
-
|
10
|
-
version: 1.9.
|
9
|
+
- 3
|
10
|
+
version: 1.9.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- nov matake
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-07-
|
18
|
+
date: 2011-07-18 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: httpclient
|
@@ -203,8 +203,10 @@ files:
|
|
203
203
|
- lib/fb_graph/connections/posts.rb
|
204
204
|
- lib/fb_graph/connections/reviews.rb
|
205
205
|
- lib/fb_graph/connections/senders.rb
|
206
|
+
- lib/fb_graph/connections/settings.rb
|
206
207
|
- lib/fb_graph/connections/statuses.rb
|
207
208
|
- lib/fb_graph/connections/subscriptions.rb
|
209
|
+
- lib/fb_graph/connections/tabs.rb
|
208
210
|
- lib/fb_graph/connections/tagged.rb
|
209
211
|
- lib/fb_graph/connections/tags.rb
|
210
212
|
- lib/fb_graph/connections/television.rb
|
@@ -241,6 +243,7 @@ files:
|
|
241
243
|
- lib/fb_graph/serialization.rb
|
242
244
|
- lib/fb_graph/status.rb
|
243
245
|
- lib/fb_graph/subscription.rb
|
246
|
+
- lib/fb_graph/tab.rb
|
244
247
|
- lib/fb_graph/tag.rb
|
245
248
|
- lib/fb_graph/targeting.rb
|
246
249
|
- lib/fb_graph/test_user.rb
|
@@ -299,8 +302,10 @@ files:
|
|
299
302
|
- spec/fb_graph/connections/posts_spec.rb
|
300
303
|
- spec/fb_graph/connections/reviews_spec.rb
|
301
304
|
- spec/fb_graph/connections/senders_spec.rb
|
305
|
+
- spec/fb_graph/connections/settings_spec.rb
|
302
306
|
- spec/fb_graph/connections/statuses_spec.rb
|
303
307
|
- spec/fb_graph/connections/subscriptions_spec.rb
|
308
|
+
- spec/fb_graph/connections/tabs_spec.rb
|
304
309
|
- spec/fb_graph/connections/tagged_spec.rb
|
305
310
|
- spec/fb_graph/connections/tags_spec.rb
|
306
311
|
- spec/fb_graph/connections/television_spec.rb
|
@@ -383,8 +388,12 @@ files:
|
|
383
388
|
- spec/mock_json/pages/platform_public.json
|
384
389
|
- spec/mock_json/pages/search_fb_graph.json
|
385
390
|
- spec/mock_json/pages/search_google.json
|
391
|
+
- spec/mock_json/pages/settings/all_enabled.json
|
392
|
+
- spec/mock_json/pages/settings/sample.json
|
386
393
|
- spec/mock_json/pages/statuses/platform_private.json
|
387
394
|
- spec/mock_json/pages/statuses/platform_public.json
|
395
|
+
- spec/mock_json/pages/tabs/fb_graph.json
|
396
|
+
- spec/mock_json/pages/with_token.json
|
388
397
|
- spec/mock_json/photos/sample.json
|
389
398
|
- spec/mock_json/photos/with_tags.json
|
390
399
|
- spec/mock_json/posts/comments/post_with_invalid_access_token.json
|
@@ -503,7 +512,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
503
512
|
requirements: []
|
504
513
|
|
505
514
|
rubyforge_project:
|
506
|
-
rubygems_version: 1.
|
515
|
+
rubygems_version: 1.8.5
|
507
516
|
signing_key:
|
508
517
|
specification_version: 3
|
509
518
|
summary: A full-stack Facebook Graph API wrapper in Ruby.
|
@@ -558,8 +567,10 @@ test_files:
|
|
558
567
|
- spec/fb_graph/connections/posts_spec.rb
|
559
568
|
- spec/fb_graph/connections/reviews_spec.rb
|
560
569
|
- spec/fb_graph/connections/senders_spec.rb
|
570
|
+
- spec/fb_graph/connections/settings_spec.rb
|
561
571
|
- spec/fb_graph/connections/statuses_spec.rb
|
562
572
|
- spec/fb_graph/connections/subscriptions_spec.rb
|
573
|
+
- spec/fb_graph/connections/tabs_spec.rb
|
563
574
|
- spec/fb_graph/connections/tagged_spec.rb
|
564
575
|
- spec/fb_graph/connections/tags_spec.rb
|
565
576
|
- spec/fb_graph/connections/television_spec.rb
|
@@ -642,8 +653,12 @@ test_files:
|
|
642
653
|
- spec/mock_json/pages/platform_public.json
|
643
654
|
- spec/mock_json/pages/search_fb_graph.json
|
644
655
|
- spec/mock_json/pages/search_google.json
|
656
|
+
- spec/mock_json/pages/settings/all_enabled.json
|
657
|
+
- spec/mock_json/pages/settings/sample.json
|
645
658
|
- spec/mock_json/pages/statuses/platform_private.json
|
646
659
|
- spec/mock_json/pages/statuses/platform_public.json
|
660
|
+
- spec/mock_json/pages/tabs/fb_graph.json
|
661
|
+
- spec/mock_json/pages/with_token.json
|
647
662
|
- spec/mock_json/photos/sample.json
|
648
663
|
- spec/mock_json/photos/with_tags.json
|
649
664
|
- spec/mock_json/posts/comments/post_with_invalid_access_token.json
|