fgraph 0.1.4 → 0.1.5

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/History CHANGED
@@ -1,3 +1,6 @@
1
+ v0.1.5 - May 25, 2010
2
+ * Fix FGraph::Client not passing default :access_token options properly
3
+
1
4
  v0.1.4 - May 22, 2010
2
5
  * Update rdoc, client_id should refer to Application ID instead of
3
6
  API Key (as of OAuth v2)
data/VERSION.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  ---
2
- :patch: 4
2
+ :patch: 5
3
3
  :major: 0
4
4
  :build:
5
5
  :minor: 1
data/lib/fgraph.rb CHANGED
@@ -8,6 +8,14 @@ module FGraph
8
8
  base_uri 'https://graph.facebook.com'
9
9
  format :json
10
10
 
11
+ def self.config
12
+ @@config
13
+ end
14
+
15
+ def self.config=(config)
16
+ @@config = config
17
+ end
18
+
11
19
  # Facebook Error
12
20
  class FacebookError < StandardError
13
21
  attr_reader :data
data/lib/fgraph/client.rb CHANGED
@@ -50,21 +50,15 @@ module FGraph
50
50
  end
51
51
 
52
52
  def objects(*args)
53
- return if args.blank?
54
53
  options = args.last.is_a?(Hash) ? args.pop : {}
55
- options[:access_token] = self.options[:access_token]
56
- args << options
57
-
58
- FGraph.objects(args)
54
+ args << {:access_token => self.options[:access_token]}.merge(options)
55
+ FGraph.objects(*args)
59
56
  end
60
57
 
61
58
  def me(*args)
62
- return if args.blank?
63
59
  options = args.last.is_a?(Hash) ? args.pop : {}
64
- options[:access_token] = self.options[:access_token]
65
- args << options
66
-
67
- FGraph.me(args)
60
+ args << {:access_token => self.options[:access_token]}.merge(options)
61
+ FGraph.me(*args)
68
62
  end
69
63
 
70
64
  def publish(id, options={})
@@ -0,0 +1,75 @@
1
+ module FGraph
2
+ module Rails
3
+ module FGraphHelper
4
+ def fgraph_config
5
+ FGraph.config || {}
6
+ end
7
+
8
+ def fgraph_session(app_id = fgraph_config['app_id'],
9
+ app_secret = fgraph_config['app_secret'])
10
+
11
+ return @fgraph_session if @fgraph_session
12
+ @fgraph_session = fgraph_session_cookies(app_id, app_secret)
13
+ end
14
+
15
+ def fgraph_session_cookies(app_id = fgraph_config['app_id'],
16
+ app_secret = fgraph_config['app_secret'])
17
+
18
+ return @fgraph_session_cookies if @fgraph_session_cookies
19
+ return if @fgraph_session_cookies == false
20
+
21
+ # retrieve session from cookies
22
+ fbs_cookies = request.cookies["fbs_#{app_id}"]
23
+ if app_id.blank? or app_secret.blank? or fbs_cookies.blank?
24
+ return @fgraph_session_cookies = false
25
+ end
26
+
27
+ # Parse facebook cookies
28
+ fbs_cookies = CGI.parse(fbs_cookies.gsub!(/(^\"|\"$)/, ''))
29
+ session_cookies = {}
30
+ fbs_cookies.each do |key, value|
31
+ session_cookies[key] = value[0]
32
+ end
33
+
34
+ # Validate session cookies
35
+ cookie_message = ''
36
+ session_cookies_list = session_cookies.sort
37
+ session_cookies_list.each do |cookie|
38
+ cookie_message += "#{cookie[0]}=#{cookie[1]}" if cookie[0] != 'sig'
39
+ end
40
+
41
+ # Message digest does not match
42
+ if Digest::MD5.hexdigest(cookie_message + app_secret) != session_cookies['sig']
43
+ @fgraph_session_cookies = false
44
+ end
45
+
46
+ @fgraph_session_cookies = session_cookies
47
+ end
48
+
49
+ def fgraph_access_token
50
+ return unless fgraph_session
51
+ fgraph_session['access_token']
52
+ end
53
+
54
+ def fgraph_logged_in?
55
+ return true if fgraph_session and fgraph_access_token
56
+ end
57
+
58
+ def fgraph_current_user
59
+ return @fgraph_current_user if @fgraph_current_user
60
+ @fgraph_current_user = fgraph_client.me
61
+ end
62
+
63
+ def fgraph_client
64
+ return @fgraph_client if @fgraph_client
65
+ session = fgraph_session || {}
66
+
67
+ @fgraph_client = FGraph::Client.new(
68
+ :client_id => fgraph_config['app_id'],
69
+ :client_secret => fgraph_config['app_secret'],
70
+ :access_token => fgraph_access_token
71
+ )
72
+ end
73
+ end
74
+ end
75
+ end
File without changes
@@ -54,10 +54,10 @@ class ClientTest < Test::Unit::TestCase
54
54
 
55
55
  context "FGraph::Client#objects" do
56
56
  should "call FGraph.objects with :access_token option" do
57
- FGraph.expects(:objects).with(['1', '2', {
57
+ FGraph.expects(:objects).with('1', '2', {
58
58
  :access_token => FACEBOOK_OAUTH_ACCESS_TOKEN,
59
59
  :fields => 'publish_stream'
60
- }])
60
+ })
61
61
 
62
62
  fb_client.objects('1', '2', :fields => 'publish_stream')
63
63
  end
@@ -65,10 +65,10 @@ class ClientTest < Test::Unit::TestCase
65
65
 
66
66
  context "FGraph::Client#me" do
67
67
  should "call FGraph.me with :access_token option" do
68
- FGraph.expects(:me).with([{
68
+ FGraph.expects(:me).with({
69
69
  :access_token => FACEBOOK_OAUTH_ACCESS_TOKEN,
70
70
  :fields => 'publish_stream'
71
- }])
71
+ })
72
72
 
73
73
  fb_client.me(:fields => 'publish_stream')
74
74
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 4
9
- version: 0.1.4
8
+ - 5
9
+ version: 0.1.5
10
10
  platform: ruby
11
11
  authors:
12
12
  - Herryanto Siatono
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-05-22 00:00:00 +08:00
17
+ date: 2010-05-25 00:00:00 +08:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -105,7 +105,8 @@ files:
105
105
  - examples/publish_feed.rb
106
106
  - lib/fgraph.rb
107
107
  - lib/fgraph/client.rb
108
- - lib/tasks/fgraph.rake
108
+ - lib/fgraph/rails/fgraph_helper.rb
109
+ - lib/fgraph/rails/fgraph_tag_helper.rb
109
110
  - test/fgraph/client_test.rb
110
111
  - test/fgraph_test.rb
111
112
  - test/fixtures/access_token.txt
@@ -1,14 +0,0 @@
1
- require 'fileutils'
2
-
3
- namespace :fgraph do
4
- desc "Create fgraph.yml configuration file in Rails config folder"
5
- task :setup => :environment do
6
- fgraph_config = File.join(RAILS_ROOT, "config", "fgraph.yml")
7
- unless File.exist?(fgraph_config)
8
-
9
- else
10
- puts "#{RAILS_ROOT}/config/fgraph.yml already exists."
11
- end
12
- end
13
- end
14
- end