faceb 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,8 @@
1
+ - 0.1.1 (April 6st, 2010)
2
+ - Added some Rails 2.3.x compatibility
3
+ - Allow to reset the current session via 'reset!' instance method
4
+ - Renamed 'FaceB#current_session' in 'FaceB#session'
5
+ - Allow FaceB::Session to call Facebook API method dynamically.
6
+ eg :
7
+ session.users.getInfo :fields => 'name', :uids => 12345
8
+ => session.call('users.getInfo', :fields => 'name', :uids => 12345)
data/README.md CHANGED
@@ -20,28 +20,46 @@ Or if you call more than once API methods, you can create a persistent session l
20
20
 
21
21
  require 'faceb'
22
22
  FaceB.new('api-key', 'secret-key')
23
- FaceB.current_session.call('method.name1', :param1 => 'value1')
24
- FaceB.current_session.call('method.name2', :param1 => 'value1')
23
+ FaceB.session.call('users.getInfo', :fields => 'name', :uids => 123456)
24
+ FaceB.session.call('users.getInfo', :fields => 'name', :uids => 123456)
25
+
26
+ Or you can even call API method dynamically :
27
+
28
+ require 'faceb'
29
+ FaceB.new('api-key', 'secret-key')
30
+ FaceB.session.users.getInfo(:fields => 'name', :uids => 123456)
31
+
25
32
 
26
33
  ### Rails integration
27
34
 
28
- For now FaceB works only with Rails 3. A version compatible with Rails 2.3.x is in progress.
35
+ #### Rails 3 initialization
29
36
 
30
- First thing to do is to add FaceB as dependency of your new project, add this line to your `Gemfile` :
37
+ First thing to do is to add FaceB as dependency of your new project, add this line at the end of your `Gemfile` file :
31
38
 
32
39
  gem 'faceb'
33
40
 
34
41
  Then call the initialization script like this :
35
42
 
36
- $ ./script/rails generate face_b:config
43
+ $ ./script/rails generate face_b:config --api-key=xxxx --secret-key=xxxx
37
44
 
38
45
  This generator will create a new file named `faceb.yml` in your `config` directory.
39
46
  Edit this new file with your Facebook application properties.
40
47
 
41
48
 
42
- ## Rails 2.3.x
49
+ #### Rails 2.3.x initialization
50
+
51
+ In your `config/environment.rb` add this line :
52
+
53
+ Rails::Initializer.run do |config|
54
+ [...]
55
+ config.gem 'faceb'
56
+ [...]
57
+ end
58
+
59
+ And run the following rake task :
60
+
61
+ rake face_b:config API_KEY=xxxx SECRET_KEY=xxxx
43
62
 
44
- A version compatible with Rails 2.3.x is in progress.
45
63
 
46
64
 
47
65
  ## TODO
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{faceb}
8
- s.version = "0.1.0"
8
+ s.version = "0.1.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Mathieu Fosse"]
12
- s.date = %q{2010-04-05}
12
+ s.date = %q{2010-04-06}
13
13
  s.default_executable = %q{console}
14
14
  s.description = %q{Facebook library}
15
15
  s.email = %q{mathieu@tigerlilyapps.com}
@@ -21,6 +21,7 @@ Gem::Specification.new do |s|
21
21
  s.files = [
22
22
  ".document",
23
23
  ".gitignore",
24
+ "CHANGELOG",
24
25
  "Gemfile",
25
26
  "LICENSE",
26
27
  "README.md",
@@ -6,7 +6,7 @@ Given /^I have facebook instance configured$/ do
6
6
  end
7
7
 
8
8
  When /^I ask for the current Facebook session$/ do
9
- FaceB.current_session
9
+ FaceB.session
10
10
  end
11
11
 
12
12
  Then /^I should retrieve the current Facebook session$/ do
@@ -4,7 +4,7 @@ module FaceB
4
4
  # Return the current Facebook session
5
5
  #
6
6
  # @return [FaceB::Session] The current facebook session
7
- def current_session
7
+ def session
8
8
  Session.current
9
9
  end
10
10
 
@@ -1,12 +1,13 @@
1
+ require 'faceb/rails/base'
2
+
1
3
  if Rails.version >= "3.0"
2
4
  require 'faceb/rails/railtie'
3
5
  require 'faceb/rails/generators'
6
+ require 'faceb/rails/api'
4
7
  elsif Rails.version >= "2.3"
5
8
  require 'faceb/rails/rails_23_init'
6
9
  else
7
10
  raise "Sorry, but FaceB needs Rails 2.3 or later"
8
11
  end
9
12
 
10
- require 'faceb/rails/base'
11
- require 'faceb/rails/api'
12
13
  require 'faceb/rails/controller'
@@ -1,6 +1,11 @@
1
1
  development: &DEVELOPMENT
2
- api_key: <%= options.api_key %>
3
- secret_key: <%= options.secret_key %>
2
+ api_key: <%= ENV['API_KEY'] || options.api_key %>
3
+ secret_key: <%= ENV['SECRET_KEY'] || options.secret_key %>
4
+ tunnel:
5
+ public_host:
6
+ public_host_username:
7
+ public_port:
8
+ local_port:
4
9
 
5
10
  test:
6
- <<: *DEVELOPMENT
11
+ <<: *DEVELOPMENT
@@ -1,6 +1,13 @@
1
- namespace :faceb do
1
+ require 'erb'
2
+
3
+ namespace :face_b do
2
4
  desc "Configure environment to use FaceB"
3
5
  task :config => :environment do
4
- # Todo config task for Rails 2.3.x
6
+ ENV['API_KEY'] ||= ""
7
+ ENV['SECRET_KEY'] ||= ""
8
+ config_file = File.dirname(__FILE__) + '/../generators/config/templates/faceb.yml'
9
+ File.open(File.join(Rails.root, 'config', 'faceb.yml'), 'w') do |f|
10
+ f.write ERB.new(IO.read(config_file)).result(binding)
11
+ end
5
12
  end
6
13
  end
@@ -1,4 +1,4 @@
1
- namespace :faceb do
1
+ namespace :face_b do
2
2
 
3
3
  tunnel_ns = namespace :tunnel do
4
4
  # Courtesy of Christopher Haupt
@@ -15,6 +15,10 @@ module FaceB
15
15
  @current_session = nil
16
16
  end
17
17
 
18
+ def reset!
19
+ self.class.reset!
20
+ end
21
+
18
22
  def initialize(api_key, secret_key, session_key = nil)
19
23
  @api_key = api_key
20
24
  @secret_key = secret_key
@@ -23,6 +27,7 @@ module FaceB
23
27
  end
24
28
 
25
29
  def call(method, params ={})
30
+ @scope = nil
26
31
  Api.new(self).call(method, params)
27
32
  end
28
33
 
@@ -34,5 +39,15 @@ module FaceB
34
39
  def secured?
35
40
  !!@user_facebook_uid
36
41
  end
42
+
43
+ # Allow session to dynamically call API method
44
+ def method_missing(method_name, args={})
45
+ if !!@scope
46
+ self.call("#{@scope}.#{method_name}", args)
47
+ else
48
+ @scope = method_name
49
+ self
50
+ end
51
+ end
37
52
  end
38
53
  end
@@ -2,12 +2,12 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
2
 
3
3
  describe FaceB do
4
4
 
5
- describe "#current_session" do
5
+ describe "#session" do
6
6
  before(:each) do
7
7
  @session = FaceB.new('api-key', 'secret-key')
8
8
  end
9
9
 
10
- subject { FaceB.current_session }
10
+ subject { FaceB.session }
11
11
 
12
12
  it { should be_an_instance_of(FaceB::Session) }
13
13
  it { should == @session }
@@ -29,7 +29,7 @@ describe FaceB do
29
29
 
30
30
  it "should be able to reset the current session" do
31
31
  FaceB::Session.reset!
32
- FaceB.current_session.should be_nil
32
+ FaceB.session.should be_nil
33
33
  end
34
34
  end
35
35
 
@@ -38,7 +38,7 @@ describe FaceB do
38
38
  it "should be able to call the api without create a session before" do
39
39
  mock.instance_of(FaceB::Session).call('method', :params => 1) { "response" }
40
40
  FaceB.call('api-key', 'secret-key', 'method', :params => 1).should == "response"
41
- FaceB.current_session.should be_nil
41
+ FaceB.session.should be_nil
42
42
  end
43
43
  end
44
44
 
@@ -3,6 +3,25 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
3
3
  module FaceB
4
4
  describe Session do
5
5
 
6
+ # Dynamic API call
7
+ context "When call API" do
8
+ before(:each) do
9
+ @session = FaceB::Session.new('api-key', 'secret-key')
10
+ end
11
+
12
+ it "should be able to call an API method" do
13
+ mock(FaceB::Api).post(FaceB::Api::API_SERVER_URL, is_a(Hash)) { "data" }
14
+ response = @session.call('scope.api_method', :param1 => 'value1')
15
+ response.should be_an_instance_of(FaceB::Api::Response)
16
+ response.data.should == "data"
17
+ end
18
+
19
+ it "should be able to dynamically build an API method" do
20
+ mock(@session).call('scope.api_method', :param1 => 'value1')
21
+ response = @session.scope.api_method(:param1 => 'value1')
22
+ end
23
+ end
24
+
6
25
  # Create session
7
26
  context "When create session" do
8
27
  before(:each) do
@@ -20,10 +39,15 @@ module FaceB
20
39
  FaceB::Session.current.should == @session
21
40
  end
22
41
 
23
- it "should be able to reset the current session" do
42
+ it "should be able to reset the current session by class method" do
24
43
  FaceB::Session.reset!
25
44
  FaceB::Session.current.should be_nil
26
45
  end
46
+
47
+ it "should be able to reset the current session by instance method" do
48
+ FaceB::Session.current.reset!
49
+ FaceB::Session.current.should be_nil
50
+ end
27
51
  end
28
52
 
29
53
  # New session
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 0
9
- version: 0.1.0
8
+ - 1
9
+ version: 0.1.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Mathieu Fosse
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-04-05 00:00:00 +02:00
17
+ date: 2010-04-06 00:00:00 +02:00
18
18
  default_executable: console
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -111,6 +111,7 @@ extra_rdoc_files:
111
111
  files:
112
112
  - .document
113
113
  - .gitignore
114
+ - CHANGELOG
114
115
  - Gemfile
115
116
  - LICENSE
116
117
  - README.md