fbgraph 1.9.0 → 1.10.0

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/.bundle/config CHANGED
@@ -1,3 +1,3 @@
1
- ---
2
- BUNDLE_DISABLE_SHARED_GEMS: "1"
3
- BUNDLE_PATH: vendor/
1
+ ---
2
+ BUNDLE_DISABLE_SHARED_GEMS: '1'
3
+ BUNDLE_PATH: vendor/bundler/
data/README.textile CHANGED
@@ -227,6 +227,18 @@ Examples:
227
227
  notextile. <code> results = client.realtime.user.delete!</code>
228
228
 
229
229
 
230
+ h3. FQL
231
+
232
+ h4. client.fql.query("SELECT name FROM user WHERE uid = me()")
233
+
234
+
235
+ h3. Timeline
236
+
237
+ h4. client.timeline.action('namespace', 'run').param(:location => [location object URL])
238
+
239
+ h4. client.timeline.reads.param(:article => [article object URL] )
240
+
241
+
230
242
  h3. Analytics
231
243
 
232
244
  h4. TODO
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.9.0
1
+ 1.10.0
data/fbgraph.gemspec CHANGED
@@ -4,14 +4,14 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{fbgraph}
8
- s.version = "1.9.0"
7
+ s.name = "fbgraph"
8
+ s.version = "1.10.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = [%q{Nicolas Santa}]
12
- s.date = %q{2011-10-17}
13
- s.description = %q{A Gem for Facebook Open Graph API}
14
- s.email = %q{nicolas55ar@gmail.com}
11
+ s.authors = ["Nicolas Santa"]
12
+ s.date = "2012-04-27"
13
+ s.description = "A Gem for Facebook Open Graph API"
14
+ s.email = "nicolas55ar@gmail.com"
15
15
  s.extra_rdoc_files = [
16
16
  "README",
17
17
  "README.textile"
@@ -32,10 +32,13 @@ Gem::Specification.new do |s|
32
32
  "lib/fbgraph/cacert.pem",
33
33
  "lib/fbgraph/canvas.rb",
34
34
  "lib/fbgraph/client.rb",
35
+ "lib/fbgraph/fql.rb",
36
+ "lib/fbgraph/logger.rb",
35
37
  "lib/fbgraph/realtime.rb",
36
38
  "lib/fbgraph/result.rb",
37
39
  "lib/fbgraph/search.rb",
38
40
  "lib/fbgraph/selection.rb",
41
+ "lib/fbgraph/timeline.rb",
39
42
  "specs/lib/fbauth/authorization_spec.rb",
40
43
  "specs/lib/fbauth/base_spec.rb",
41
44
  "specs/lib/fbauth/canvas_spec.rb",
@@ -45,11 +48,11 @@ Gem::Specification.new do |s|
45
48
  "specs/lib/fbauth/selection_spec.rb",
46
49
  "specs/spec_helper.rb"
47
50
  ]
48
- s.homepage = %q{http://github.com/nsanta/fbgraph}
49
- s.licenses = [%q{MIT}]
50
- s.require_paths = [%q{lib}]
51
- s.rubygems_version = %q{1.8.5}
52
- s.summary = %q{A Gem for Facebook Open Graph API}
51
+ s.homepage = "http://github.com/nsanta/fbgraph"
52
+ s.licenses = ["MIT"]
53
+ s.require_paths = ["lib"]
54
+ s.rubygems_version = "1.8.21"
55
+ s.summary = "A Gem for Facebook Open Graph API"
53
56
 
54
57
  if s.respond_to? :specification_version then
55
58
  s.specification_version = 3
data/lib/fbgraph.rb CHANGED
@@ -17,6 +17,9 @@ require 'fbgraph/selection'
17
17
  require 'fbgraph/search'
18
18
  require 'fbgraph/realtime'
19
19
  require 'fbgraph/canvas'
20
+ require 'fbgraph/logger'
21
+ require 'fbgraph/fql'
22
+ require 'fbgraph/timeline'
20
23
 
21
24
  module FBGraph
22
25
  @config = nil
data/lib/fbgraph/base.rb CHANGED
@@ -47,15 +47,13 @@ module FBGraph
47
47
  @params.merge!(:access_token => @client.access_token) unless @client.access_token.nil?
48
48
  if @objects.is_a? Array
49
49
  @params.merge!({:ids => @objects.join(',')})
50
- path = build_open_graph_path(nil,nil, params)
50
+ path = build_open_graph_path(nil,nil, @params)
51
51
  elsif @objects.is_a? String
52
52
  path = build_open_graph_path(@objects , @connection_type, @params)
53
53
  else
54
54
  raise "No Facebook objects were recognized as selected; unable to build fb graph path."
55
55
  end
56
-
57
- # puts "FBGRAPH [GET]: #{path}"
58
- # puts "ACCESS TOKEN: #{@client.access_token}"
56
+ show_log('GET' , path, @params) if @debug
59
57
  result = @client.consumer[path].get
60
58
  @last_result = ::FBGraph::Result.new(result, @params)
61
59
  end
@@ -65,22 +63,20 @@ module FBGraph
65
63
  @params.merge!(data)
66
64
  self.instance_eval(&block) if block_given?
67
65
  @params.merge!(:fields => sanitized_fields.join(',')) unless sanitized_fields.blank?
68
- params = @params.merge(:access_token => @client.access_token) if (@client.access_token)
69
- path = build_open_graph_path(@objects , @connection_type)
70
- # puts "FBGRAPH [POST]: #{path}"
71
- # puts "PARAMS: #{params.to_a.map{|p| p.join('=')}.join('&')}"
72
- result = @client.consumer[path].post(params)
66
+ @params.merge!(:access_token => @client.access_token) if (@client.access_token)
67
+ @path = build_open_graph_path(@objects , @connection_type)
68
+ show_log('POST' , @path, @params) if @debug
69
+ result = @client.consumer[@path].post(@params)
73
70
  @last_result = ::FBGraph::Result.new(result, @params)
74
71
  end
75
72
 
76
73
  def delete!(parsed = true, &block)
77
74
  self.instance_eval(&block) if block_given?
78
- path = build_open_graph_path(@objects , nil)
79
- params = @params.merge(:access_token => @client.access_token) if (@client.access_token)
80
- params.merge!(:method => :delete)
81
- # puts "FBGRAPH [DELETE]: #{path}"
82
- # puts "PARAMS: #{params.to_a.map{|p| p.join('=')}.join('&')}"
83
- result = @client.consumer[path].post(params)
75
+ @path = build_open_graph_path(@objects , nil)
76
+ @params.merge!(:access_token => @client.access_token) if (@client.access_token)
77
+ @params.merge!(:method => :delete)
78
+ show_log('DELETE' , @path, @params) if @debug
79
+ result = @client.consumer[@path].post(@params)
84
80
  @last_result = ::FBGraph::Result.new(result, @params)
85
81
  end
86
82
 
@@ -93,7 +89,10 @@ module FBGraph
93
89
  PAGING
94
90
  end
95
91
 
96
-
92
+ def debug=(att)
93
+ @debug= att
94
+ end
95
+
97
96
  private
98
97
 
99
98
  def sanitized_fields
@@ -106,5 +105,10 @@ module FBGraph
106
105
  URI.encode(request)
107
106
  end
108
107
 
108
+ def show_log(ver, path, params)
109
+ client.logger.info "FBGRAPH [#{verb}]: #{path}"
110
+ client.logger.info "PARAMS: #{params.to_a.map{|p| p.join('=')}.join('&')}"
111
+ end
112
+
109
113
  end
110
114
  end
@@ -2,7 +2,7 @@ module FBGraph
2
2
 
3
3
  class Client
4
4
 
5
- attr_accessor :client_id , :secret_id , :facebook_uri , :access_token , :consumer , :auth
5
+ attr_accessor :client_id , :secret_id , :facebook_uri , :access_token , :consumer , :auth , :logger
6
6
 
7
7
  def initialize(options = {})
8
8
  @client_id = options[:client_id] || FBGraph.config[:client_id]
@@ -12,6 +12,7 @@ module FBGraph
12
12
  @consumer = RestClient::Resource.new(@facebook_uri, rest_client_ssl_options)
13
13
  @access_token = options.fetch :token, nil
14
14
  @auth = OAuth2::AccessToken.new(oauth_client, @access_token)
15
+ @logger = options[:logger] || FBGraph::Logger
15
16
  return true
16
17
  end
17
18
 
@@ -37,6 +38,14 @@ module FBGraph
37
38
  FBGraph::Realtime.new(self)
38
39
  end
39
40
 
41
+ def fql
42
+ FBGraph::FQL.new(self)
43
+ end
44
+
45
+ def timeline
46
+ FBGraph::Timeline.new(self)
47
+ end
48
+
40
49
  def oauth_client
41
50
  OAuth2::Client.new(client_id, secret_id,
42
51
  :site => { :url => facebook_uri },
@@ -0,0 +1,9 @@
1
+ module FBGraph
2
+ class FQL < Base
3
+
4
+
5
+ def query(q)
6
+ find('fql').param(:q => q).info!
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,16 @@
1
+ module FBGraph
2
+ class Logger
3
+ def self.info(msg)
4
+ puts msg
5
+ end
6
+
7
+ def self.warn(msg)
8
+ puts msg
9
+ end
10
+
11
+ def self.error(msg)
12
+ puts msg
13
+ end
14
+
15
+ end
16
+ end
@@ -26,8 +26,8 @@ module FBGraph
26
26
 
27
27
  CONNECTION_TYPES.each do |object|
28
28
  class_eval <<-METHOD
29
- def #{object}
30
- connection('#{object}')
29
+ def #{object}(connection_id = nil)
30
+ connection(['#{object}', connection_id])
31
31
  self
32
32
  end
33
33
  METHOD
@@ -38,12 +38,6 @@ module FBGraph
38
38
  find('me')
39
39
  end
40
40
 
41
-
42
- def action(namespace,action)
43
- connection([namespace,action].join(':'))
44
- self
45
- end
46
-
47
41
  def metadata
48
42
  @params.merge!({:metadata => '1'})
49
43
  self
@@ -0,0 +1,28 @@
1
+ module FBGraph
2
+ class Timeline < Base
3
+
4
+ BUILT_IN_ACTIONS = {
5
+ :listens => :music,
6
+ :reads => :news,
7
+ :watches => :movie,
8
+ }
9
+
10
+
11
+ def action(namespace,action)
12
+ connection([namespace,action].join(':'))
13
+ self
14
+ end
15
+
16
+ BUILT_IN_ACTIONS.each do |action,obj|
17
+ class_eval <<-METHOD
18
+ def #{action}
19
+ find('me').connection("#{[obj,action].join('.')}")
20
+ self
21
+ end
22
+ METHOD
23
+ end
24
+
25
+
26
+
27
+ end
28
+ end
@@ -21,7 +21,7 @@ describe FBGraph do
21
21
  describe '.authorize_url' do
22
22
  it 'should return the authorization url' do
23
23
  @authorization.authorize_url(:redirect_uri => 'redirect/to/path' ,
24
- :scope => 'email,user_photos,friends_photos').should == "https://graph.facebook.com/oauth/authorize?response_type=code&client_id=client_id&redirect_uri=redirect%2Fto%2Fpath&scope=email%2Cuser_photos%2Cfriends_photos"
24
+ :scope => 'email,user_photos,friends_photos').should =~ /redirect_uri=redirect%2Fto%2Fpath/
25
25
  end
26
26
  end
27
27
  describe "process_callback" do
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fbgraph
3
3
  version: !ruby/object:Gem::Version
4
- hash: 51
4
+ hash: 63
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
- - 9
8
+ - 10
9
9
  - 0
10
- version: 1.9.0
10
+ version: 1.10.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Nicolas Santa
@@ -15,9 +15,11 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-10-17 00:00:00 Z
18
+ date: 2012-04-27 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
+ name: activesupport
22
+ prerelease: false
21
23
  version_requirements: &id001 !ruby/object:Gem::Requirement
22
24
  none: false
23
25
  requirements:
@@ -29,9 +31,9 @@ dependencies:
29
31
  version: "0"
30
32
  type: :runtime
31
33
  requirement: *id001
32
- prerelease: false
33
- name: activesupport
34
34
  - !ruby/object:Gem::Dependency
35
+ name: hashie
36
+ prerelease: false
35
37
  version_requirements: &id002 !ruby/object:Gem::Requirement
36
38
  none: false
37
39
  requirements:
@@ -45,9 +47,9 @@ dependencies:
45
47
  version: 1.0.0
46
48
  type: :runtime
47
49
  requirement: *id002
48
- prerelease: false
49
- name: hashie
50
50
  - !ruby/object:Gem::Dependency
51
+ name: oauth2
52
+ prerelease: false
51
53
  version_requirements: &id003 !ruby/object:Gem::Requirement
52
54
  none: false
53
55
  requirements:
@@ -61,9 +63,9 @@ dependencies:
61
63
  version: 0.5.0
62
64
  type: :runtime
63
65
  requirement: *id003
64
- prerelease: false
65
- name: oauth2
66
66
  - !ruby/object:Gem::Dependency
67
+ name: faraday
68
+ prerelease: false
67
69
  version_requirements: &id004 !ruby/object:Gem::Requirement
68
70
  none: false
69
71
  requirements:
@@ -77,9 +79,9 @@ dependencies:
77
79
  version: 0.7.5
78
80
  type: :runtime
79
81
  requirement: *id004
80
- prerelease: false
81
- name: faraday
82
82
  - !ruby/object:Gem::Dependency
83
+ name: json
84
+ prerelease: false
83
85
  version_requirements: &id005 !ruby/object:Gem::Requirement
84
86
  none: false
85
87
  requirements:
@@ -93,9 +95,9 @@ dependencies:
93
95
  version: 1.0.0
94
96
  type: :runtime
95
97
  requirement: *id005
96
- prerelease: false
97
- name: json
98
98
  - !ruby/object:Gem::Dependency
99
+ name: rest-client
100
+ prerelease: false
99
101
  version_requirements: &id006 !ruby/object:Gem::Requirement
100
102
  none: false
101
103
  requirements:
@@ -107,9 +109,9 @@ dependencies:
107
109
  version: "0"
108
110
  type: :runtime
109
111
  requirement: *id006
110
- prerelease: false
111
- name: rest-client
112
112
  - !ruby/object:Gem::Dependency
113
+ name: i18n
114
+ prerelease: false
113
115
  version_requirements: &id007 !ruby/object:Gem::Requirement
114
116
  none: false
115
117
  requirements:
@@ -121,9 +123,9 @@ dependencies:
121
123
  version: "0"
122
124
  type: :runtime
123
125
  requirement: *id007
124
- prerelease: false
125
- name: i18n
126
126
  - !ruby/object:Gem::Dependency
127
+ name: jeweler
128
+ prerelease: false
127
129
  version_requirements: &id008 !ruby/object:Gem::Requirement
128
130
  none: false
129
131
  requirements:
@@ -137,9 +139,9 @@ dependencies:
137
139
  version: 1.6.0
138
140
  type: :development
139
141
  requirement: *id008
140
- prerelease: false
141
- name: jeweler
142
142
  - !ruby/object:Gem::Dependency
143
+ name: rake
144
+ prerelease: false
143
145
  version_requirements: &id009 !ruby/object:Gem::Requirement
144
146
  none: false
145
147
  requirements:
@@ -153,9 +155,9 @@ dependencies:
153
155
  version: 0.9.2
154
156
  type: :development
155
157
  requirement: *id009
156
- prerelease: false
157
- name: rake
158
158
  - !ruby/object:Gem::Dependency
159
+ name: bundler
160
+ prerelease: false
159
161
  version_requirements: &id010 !ruby/object:Gem::Requirement
160
162
  none: false
161
163
  requirements:
@@ -169,9 +171,9 @@ dependencies:
169
171
  version: 1.0.0
170
172
  type: :development
171
173
  requirement: *id010
172
- prerelease: false
173
- name: bundler
174
174
  - !ruby/object:Gem::Dependency
175
+ name: fakeweb
176
+ prerelease: false
175
177
  version_requirements: &id011 !ruby/object:Gem::Requirement
176
178
  none: false
177
179
  requirements:
@@ -185,9 +187,9 @@ dependencies:
185
187
  version: 1.3.0
186
188
  type: :development
187
189
  requirement: *id011
188
- prerelease: false
189
- name: fakeweb
190
190
  - !ruby/object:Gem::Dependency
191
+ name: rspec
192
+ prerelease: false
191
193
  version_requirements: &id012 !ruby/object:Gem::Requirement
192
194
  none: false
193
195
  requirements:
@@ -201,9 +203,9 @@ dependencies:
201
203
  version: 2.6.0
202
204
  type: :development
203
205
  requirement: *id012
204
- prerelease: false
205
- name: rspec
206
206
  - !ruby/object:Gem::Dependency
207
+ name: rcov
208
+ prerelease: false
207
209
  version_requirements: &id013 !ruby/object:Gem::Requirement
208
210
  none: false
209
211
  requirements:
@@ -215,9 +217,9 @@ dependencies:
215
217
  version: "0"
216
218
  type: :development
217
219
  requirement: *id013
218
- prerelease: false
219
- name: rcov
220
220
  - !ruby/object:Gem::Dependency
221
+ name: rdoc
222
+ prerelease: false
221
223
  version_requirements: &id014 !ruby/object:Gem::Requirement
222
224
  none: false
223
225
  requirements:
@@ -231,9 +233,9 @@ dependencies:
231
233
  version: 3.9.0
232
234
  type: :development
233
235
  requirement: *id014
234
- prerelease: false
235
- name: rdoc
236
236
  - !ruby/object:Gem::Dependency
237
+ name: redgreen
238
+ prerelease: false
237
239
  version_requirements: &id015 !ruby/object:Gem::Requirement
238
240
  none: false
239
241
  requirements:
@@ -247,8 +249,6 @@ dependencies:
247
249
  version: 1.2.2
248
250
  type: :development
249
251
  requirement: *id015
250
- prerelease: false
251
- name: redgreen
252
252
  description: A Gem for Facebook Open Graph API
253
253
  email: nicolas55ar@gmail.com
254
254
  executables: []
@@ -274,10 +274,13 @@ files:
274
274
  - lib/fbgraph/cacert.pem
275
275
  - lib/fbgraph/canvas.rb
276
276
  - lib/fbgraph/client.rb
277
+ - lib/fbgraph/fql.rb
278
+ - lib/fbgraph/logger.rb
277
279
  - lib/fbgraph/realtime.rb
278
280
  - lib/fbgraph/result.rb
279
281
  - lib/fbgraph/search.rb
280
282
  - lib/fbgraph/selection.rb
283
+ - lib/fbgraph/timeline.rb
281
284
  - specs/lib/fbauth/authorization_spec.rb
282
285
  - specs/lib/fbauth/base_spec.rb
283
286
  - specs/lib/fbauth/canvas_spec.rb
@@ -315,7 +318,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
315
318
  requirements: []
316
319
 
317
320
  rubyforge_project:
318
- rubygems_version: 1.8.5
321
+ rubygems_version: 1.8.21
319
322
  signing_key:
320
323
  specification_version: 3
321
324
  summary: A Gem for Facebook Open Graph API