buddy 1.1.0 → 2.0.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/buddy.gemspec +3 -3
- data/lib/buddy/middleware.rb +17 -3
- data/lib/buddy/rails/controller.rb +4 -17
- data/lib/buddy/service.rb +2 -2
- data/lib/buddy/session.rb +1 -1
- data/lib/buddy/version.rb +1 -1
- data/lib/buddy.rb +10 -25
- metadata +5 -5
data/buddy.gemspec
CHANGED
@@ -18,8 +18,8 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.require_paths = ["lib"]
|
19
19
|
|
20
20
|
Gem::Specification.new do |s|
|
21
|
-
s.
|
22
|
-
s.
|
23
|
-
s.
|
21
|
+
s.add_runtime_dependency('mini_fb', '>= 0.2.2')
|
22
|
+
s.add_runtime_dependency('yajl-ruby', '>= 0')
|
23
|
+
s.add_runtime_dependency('httparty', '>= 0')
|
24
24
|
end
|
25
25
|
end
|
data/lib/buddy/middleware.rb
CHANGED
@@ -50,10 +50,10 @@ module Buddy
|
|
50
50
|
def call(env)
|
51
51
|
return @app.call(env) unless @condition.nil? || @condition.call(env)
|
52
52
|
|
53
|
-
request = Rack::Request.new(env)
|
53
|
+
@request = Rack::Request.new(env)
|
54
54
|
|
55
55
|
signed_request = env['HTTP_X_SIGNED_REQUEST'].split(',').first if env['HTTP_X_SIGNED_REQUEST']
|
56
|
-
signed_request = request.params["signed_request"] unless signed_request
|
56
|
+
signed_request = @request.params["signed_request"] unless signed_request
|
57
57
|
if signed_request
|
58
58
|
signature, signed_params = signed_request.split('.')
|
59
59
|
|
@@ -62,7 +62,12 @@ module Buddy
|
|
62
62
|
end
|
63
63
|
|
64
64
|
signed_params = Yajl::Parser.new.parse(base64_url_decode(signed_params))
|
65
|
-
request.params[:fb] = signed_params
|
65
|
+
@request.params[:fb] = signed_params
|
66
|
+
set_session(signed_params)
|
67
|
+
elsif @request.cookies["fbs_#{Buddy.current_config['app_id']}"]
|
68
|
+
payload = @request.cookies["fbs_#{Buddy.current_config['app_id']}"].chomp('"')
|
69
|
+
payload.sub!('"', '') if payload.start_with?('"')
|
70
|
+
set_session(payload)
|
66
71
|
end
|
67
72
|
|
68
73
|
@app.call(env)
|
@@ -85,6 +90,15 @@ module Buddy
|
|
85
90
|
str = str + "=" * (6 - str.size % 6) unless str.size % 6 == 0
|
86
91
|
return Base64.decode64(str.tr("-_", "+/"))
|
87
92
|
end
|
93
|
+
|
94
|
+
def set_session(payload)
|
95
|
+
uid = payload['user_id'] || payload['uid']
|
96
|
+
access_token = payload['oauth_token'] || payload['access_token']
|
97
|
+
expires = payload['expires']
|
98
|
+
|
99
|
+
@request.session['facebook_session'] = Buddy::Session.create(Buddy.current_config['app_id'], Buddy.current_config['secret'])
|
100
|
+
@request.session['facebook_session'].secure!(uid.to_i, access_token, expires)
|
101
|
+
end
|
88
102
|
end
|
89
103
|
end
|
90
104
|
end
|
@@ -21,7 +21,7 @@ module Buddy
|
|
21
21
|
|
22
22
|
private
|
23
23
|
def facebook_session
|
24
|
-
|
24
|
+
session[:facebook_session]
|
25
25
|
end
|
26
26
|
|
27
27
|
def request_comes_from_facebook?
|
@@ -29,7 +29,7 @@ module Buddy
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def application_is_installed?
|
32
|
-
|
32
|
+
facebook_session && facebook_session.secured?
|
33
33
|
end
|
34
34
|
|
35
35
|
def request_is_facebook_canvas?
|
@@ -49,22 +49,9 @@ module Buddy
|
|
49
49
|
Buddy::Session.create(Buddy.current_config['app_id'], Buddy.current_config['secret'])
|
50
50
|
end
|
51
51
|
|
52
|
-
def create_facebook_session
|
53
|
-
@facebook_session = new_facebook_session
|
54
|
-
@facebook_session.secure!(params[:fb][:user_id], params[:fb][:oauth_token], params[:fb][:expires])
|
55
|
-
@facebook_session.secured?
|
56
|
-
end
|
57
|
-
|
58
52
|
def set_facebook_session
|
59
|
-
|
60
|
-
|
61
|
-
session_set = create_facebook_session
|
62
|
-
session[:facebook_session] = @facebook_session if session_set
|
63
|
-
end
|
64
|
-
if session_set
|
65
|
-
Session.current = @facebook_session
|
66
|
-
end
|
67
|
-
return session_set
|
53
|
+
Session.current = facebook_session
|
54
|
+
return facebook_session.secured?
|
68
55
|
end
|
69
56
|
|
70
57
|
def ensure_facebook_session
|
data/lib/buddy/service.rb
CHANGED
@@ -23,7 +23,7 @@ module Buddy
|
|
23
23
|
time = Benchmark.realtime do
|
24
24
|
result = GraphApiClient.send(method, resource, :query => params).parsed_response
|
25
25
|
end
|
26
|
-
Buddy.logger.info("GraphAPI: #{method} #{resource} - #{time}")
|
26
|
+
Buddy.logger.info("GraphAPI: #{method} #{resource} - #{time}") if Buddy.config['logging_enabled']
|
27
27
|
|
28
28
|
raise OAuthException.new(result["error"]["message"]) if result["error"]
|
29
29
|
result
|
@@ -70,7 +70,7 @@ module Buddy
|
|
70
70
|
time = Benchmark.realtime do
|
71
71
|
result = fun.call
|
72
72
|
end
|
73
|
-
Buddy.logger.info("RestAPI: #{api_method} (#{params.inspect}) - #{time}")
|
73
|
+
Buddy.logger.info("RestAPI: #{api_method} (#{params.inspect}) - #{time}") if Buddy.config['logging_enabled']
|
74
74
|
result
|
75
75
|
end
|
76
76
|
end
|
data/lib/buddy/session.rb
CHANGED
@@ -43,7 +43,7 @@ module Buddy
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def install_url(options = {})
|
46
|
-
"
|
46
|
+
"https://www.facebook.com/dialog/oauth?client_id=#{Buddy.current_config['app_id']}&redirect_uri=#{options[:next]}#{"&scope="+Buddy.current_config['perms'] if Buddy.current_config['perms']}"
|
47
47
|
end
|
48
48
|
|
49
49
|
def initialize(app_id, secret_key)
|
data/lib/buddy/version.rb
CHANGED
data/lib/buddy.rb
CHANGED
@@ -21,37 +21,22 @@ module Buddy
|
|
21
21
|
def load_configuration(yaml)
|
22
22
|
return false unless File.exist?(yaml)
|
23
23
|
@buddy_config = YAML.load(ERB.new(File.read(yaml)).result)[::Rails.env]
|
24
|
-
self.current_config = buddy_config['default']
|
25
24
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
def buddy_config
|
30
|
-
@buddy_config
|
31
|
-
end
|
32
|
-
|
33
|
-
def set_asset_host_to_callback_url
|
34
|
-
buddy_config[app]['set_asset_host_to_callback_url']
|
35
|
-
end
|
36
|
-
|
37
|
-
def timeout(app = 'default')
|
38
|
-
buddy_config[app]['timeout']
|
39
|
-
end
|
40
|
-
|
41
|
-
def use_application(api_key)
|
42
|
-
buddy_config.each do |c|
|
43
|
-
if c[1]["api_key"] == api_key
|
44
|
-
return self.current_config = c[1]
|
45
|
-
end
|
25
|
+
unless self.config['default'].nil?
|
26
|
+
ActiveSupport::Deprecation.warn('Support for multiple apps has been removed and your config format is deprecated. Please remove your app keys (or just the "default" key)')
|
27
|
+
self.config = self.config['default']
|
46
28
|
end
|
29
|
+
self.config
|
47
30
|
end
|
48
31
|
|
49
|
-
def
|
50
|
-
|
32
|
+
def config
|
33
|
+
@buddy_config
|
51
34
|
end
|
35
|
+
alias :buddy_config :config
|
36
|
+
alias :current_config :config
|
52
37
|
|
53
|
-
def
|
54
|
-
|
38
|
+
def config=(c)
|
39
|
+
@buddy_config = c
|
55
40
|
end
|
56
41
|
end
|
57
42
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: buddy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 15
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
|
-
-
|
8
|
-
- 1
|
7
|
+
- 2
|
9
8
|
- 0
|
10
|
-
|
9
|
+
- 0
|
10
|
+
version: 2.0.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Ole Riesenberg
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-07-01 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|