mmangino-facebooker 1.0.38 → 1.0.39

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -77,6 +77,9 @@ class CGI
77
77
  end
78
78
  end
79
79
 
80
+ == Other versions
81
+
82
+ A facebooker port for Sinatra is available at http://github.com/jsmestad/frankie/tree/master
80
83
 
81
84
  == LICENSE:
82
85
 
data/facebooker.gemspec CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{facebooker}
5
- s.version = "1.0.38"
5
+ s.version = "1.0.39"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Chad Fowler", "Patrick Ewing", "Mike Mangino", "Shane Vitarana", "Corey Innis"]
9
- s.date = %q{2009-06-23}
9
+ s.date = %q{2009-07-01}
10
10
  s.description = %q{Facebooker is a Ruby wrapper over the Facebook[http://facebook.com] {REST API}[http://wiki.developers.facebook.com/index.php/API]. Its goals are: * Idiomatic Ruby * No dependencies outside of the Ruby standard library (This is true with Rails 2.1. Previous Rails versions require the JSON gem) * Concrete classes and methods modeling the Facebook data, so it's easy for a Rubyist to understand what's available * Well tested}
11
11
  s.email = %q{mmangino@elevatedrails.com}
12
12
  s.extra_rdoc_files = ["Manifest.txt", "CHANGELOG.rdoc", "COPYING.rdoc", "README.rdoc", "TODO.rdoc"]
@@ -31,6 +31,12 @@ module Facebooker
31
31
  secure_with_facebook_params! || secure_with_cookies! || secure_with_token!
32
32
  end
33
33
 
34
+ #this is used to proxy a connection through a rails app so the facebook secret key is not needed
35
+ #iphone apps use this
36
+ def create_facebook_session_with_secret
37
+ secure_with_session_secret!
38
+ end
39
+
34
40
  def set_facebook_session
35
41
  # first, see if we already have a session
36
42
  session_set = session_already_secured?
@@ -148,6 +154,15 @@ module Facebooker
148
154
  @facebook_session
149
155
  end
150
156
  end
157
+
158
+ def secure_with_session_secret!
159
+ if params['auth_token']
160
+ @facebook_session = new_facebook_session
161
+ @facebook_session.auth_token = params['auth_token']
162
+ @facebook_session.secure_with_session_secret!
163
+ @facebook_session
164
+ end
165
+ end
151
166
 
152
167
  def secure_with_facebook_params!
153
168
  return unless request_comes_from_facebook?
@@ -72,6 +72,7 @@ module Facebooker
72
72
 
73
73
  attr_writer :auth_token
74
74
  attr_reader :session_key
75
+ attr_reader :secret_from_session
75
76
 
76
77
  def self.create(api_key=nil, secret_key=nil)
77
78
  api_key ||= self.api_key
@@ -181,10 +182,14 @@ module Facebooker
181
182
  !@session_key.nil? && !expired?
182
183
  end
183
184
 
184
- def secure!
185
- response = post 'facebook.auth.getSession', :auth_token => auth_token
185
+ def secure!(args = {})
186
+ response = post 'facebook.auth.getSession', :auth_token => auth_token, :generate_session_secret => args[:generate_session_secret] ? "1" : "0"
186
187
  secure_with!(response['session_key'], response['uid'], response['expires'], response['secret'])
187
188
  end
189
+
190
+ def secure_with_session_secret!
191
+ self.secure!(:generate_session_secret => true)
192
+ end
188
193
 
189
194
  def secure_with!(session_key, uid = nil, expires = nil, secret_from_session = nil)
190
195
  @session_key = session_key
@@ -413,10 +418,10 @@ module Facebooker
413
418
 
414
419
  ##
415
420
  # Send email to as many as 100 users at a time
416
- def send_email(user_ids, subject, text, fbml = nil)
421
+ def send_email(user_ids, subject, text, fbml = nil)
417
422
  user_ids = Array(user_ids)
418
423
  params = {:fbml => fbml, :recipients => user_ids.map{ |id| User.cast_to_facebook_id(id)}.join(','), :text => text, :subject => subject}
419
- post 'facebook.notifications.sendEmail', params
424
+ post 'facebook.notifications.sendEmail', params, false
420
425
  end
421
426
 
422
427
  # Only serialize the bare minimum to recreate the session.
@@ -2,7 +2,7 @@ module Facebooker #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 1
4
4
  MINOR = 0
5
- TINY = 38
5
+ TINY = 39
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -37,6 +37,13 @@ class FBConnectController < NoisyController
37
37
  end
38
38
  end
39
39
 
40
+ class FBConnectControllerProxy < NoisyController
41
+ before_filter :create_facebook_session_with_secret
42
+ def index
43
+ render :text => 'score!'
44
+ end
45
+ end
46
+
40
47
  class ControllerWhichRequiresFacebookAuthentication < NoisyController
41
48
  ensure_authenticated_to_facebook
42
49
  def index
@@ -372,6 +379,20 @@ class RailsIntegrationTest < Test::Unit::TestCase
372
379
  assert_equal(1111111, @controller.facebook_session.user.id)
373
380
  end
374
381
 
382
+ def test_session_can_be_secured_with_secret
383
+ @controller = FBConnectControllerProxy.new
384
+ auth_token = 'ohaiauthtokenhere111'
385
+ modified_params = facebook_params
386
+ modified_params.delete('fb_sig_session_key')
387
+ modified_params['auth_token'] = auth_token
388
+ modified_params['generate_session_secret'] = true
389
+ session_mock = flexmock(session = Facebooker::Session.create(ENV['FACEBOOK_API_KEY'], ENV['FACEBOOK_SECRET_KEY']))
390
+ session_params = { 'session_key' => '123', 'uid' => '321' }
391
+ session_mock.should_receive(:post).with('facebook.auth.getSession', :auth_token => auth_token, :generate_session_secret => "1").once.and_return(session_params).ordered
392
+ flexmock(@controller).should_receive(:new_facebook_session).once.and_return(session).ordered
393
+ get :index, modified_params
394
+ end
395
+
375
396
  def test_session_can_be_secured_with_auth_token
376
397
  auth_token = 'ohaiauthtokenhere111'
377
398
  modified_params = facebook_params
@@ -379,7 +400,7 @@ class RailsIntegrationTest < Test::Unit::TestCase
379
400
  modified_params['auth_token'] = auth_token
380
401
  session_mock = flexmock(session = Facebooker::Session.create(ENV['FACEBOOK_API_KEY'], ENV['FACEBOOK_SECRET_KEY']))
381
402
  session_params = { 'session_key' => '123', 'uid' => '321' }
382
- session_mock.should_receive(:post).with('facebook.auth.getSession', :auth_token => auth_token).once.and_return(session_params).ordered
403
+ session_mock.should_receive(:post).with('facebook.auth.getSession', :auth_token => auth_token, :generate_session_secret => "0").once.and_return(session_params).ordered
383
404
  flexmock(@controller).should_receive(:new_facebook_session).once.and_return(session).ordered
384
405
  get :index, modified_params
385
406
  end
@@ -391,7 +412,7 @@ class RailsIntegrationTest < Test::Unit::TestCase
391
412
  modified_params['auth_token'] = auth_token
392
413
  session_mock = flexmock(session = Facebooker::Session.create(ENV['FACEBOOK_API_KEY'], ENV['FACEBOOK_SECRET_KEY']))
393
414
  session_params = { 'session_key' => '123', 'uid' => '321' }
394
- session_mock.should_receive(:post).with('facebook.auth.getSession', :auth_token => auth_token).once.and_return(session_params).ordered
415
+ session_mock.should_receive(:post).with('facebook.auth.getSession', :auth_token => auth_token, :generate_session_secret => "0").once.and_return(session_params).ordered
395
416
  flexmock(@controller).should_receive(:new_facebook_session).once.and_return(session).ordered
396
417
  setup_fb_connect_cookies(expired_cookie_hash_for_auth)
397
418
  get :index, modified_params
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mmangino-facebooker
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.38
4
+ version: 1.0.39
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chad Fowler
@@ -13,7 +13,7 @@ autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
15
 
16
- date: 2009-06-23 00:00:00 -07:00
16
+ date: 2009-07-01 00:00:00 -07:00
17
17
  default_executable:
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency