fbgraph 1.9.0 → 1.10.0

Sign up to get free protection for your applications and to get access to all the features.
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