doesfacebook 0.5.0.pre3 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -38,7 +38,7 @@ or ssl_callback_url fields of your app. A sample configuration looks like this:
38
38
  my_sweet_facebook_app:
39
39
  app_id: 1234567890
40
40
  secret_key: a1b2c3d4e5f6g7h8i9j0k1l
41
- canvas_name: my_sweet_canvas_name
41
+ namespace: my_sweet_canvas_name
42
42
  callback_url: http://your.server.com/and/path
43
43
  ssl_callback_url: https://your.secure.server.com/and/path
44
44
 
@@ -53,7 +53,7 @@ The typical configuration options are as follows:
53
53
 
54
54
  * app_id: Facebook ID of your application
55
55
  * secret_key: Facebook secret key of your application (used to parse and validate Facebook requests)
56
- * canvas_name: The "myapp" from "http://apps.facebook.com/myapp" used frequently for link generation and redirection
56
+ * namespace: The "myapp" from "http://apps.facebook.com/myapp" used frequently for link generation and redirection (previously, this configuration field was known as "canvas_name", but Facebook has deprecated that name in favor of "namespace")
57
57
  * callback_url: The server callback URL for your app. Used to identify the proper configuration which should be loaded for each request.
58
58
  * ssl_callback_url: The server callback for secure, HTTPS requests. Required for production apps. Can be different from your non-secure callback_url
59
59
 
@@ -86,7 +86,7 @@ against the Facebook platform easier:
86
86
 
87
87
  * app_id: The current application's id, parsed from doesfacebook.yml
88
88
  * app_callback_url: The current application's callback URL, parsed from doesfacebook.yml
89
- * app_canvas_name: The current application's canvas shortname, parsed from doesfacebook.yml
89
+ * app_namespace: The current application's canvas shortname, parsed from doesfacebook.yml (aliased as "app_canvas_name" for backwards compatibility)
90
90
  * app_canvas_url: The full URL to the application canvas (e.g., http://apps.facebook.com/myapp)
91
91
  * url_for_canvas(url_opts={}): Like the standard url_for, but ensures the endpoint is in the Facebook canvas
92
92
  * link_to_canvas(text, url_opts={}, html_opts={}): Use as you would the regular link_to helper; generates links to the canvas and properly targets the link to "_top" frame to keep app within canvas and not break into your iframe
@@ -19,20 +19,20 @@ module DoesFacebookHelper
19
19
  end
20
20
  end
21
21
 
22
- # Return the current app canvas name:
23
- def app_canvas_name
24
- controller.send(:facebook_config)[:canvas_name]
22
+ # Return the current app namespace:
23
+ def app_namespace
24
+ controller.send(:facebook_config)[:namespace]
25
25
  end
26
+ alias_method :app_canvas_name, :app_namespace # <= Deprecation of "canvas_name", but still aliased
26
27
 
27
28
  # Return the full canvas URL:
28
29
  def app_canvas_url
29
- request.ssl? ? "https://apps.facebook.com/#{app_canvas_name}" : "http://apps.facebook.com/#{app_canvas_name}"
30
+ "#{request.ssl? ? "https://" : "http://"}apps.facebook.com/#{app_namespace}"
30
31
  end
31
32
 
32
33
  # Generate a URL that points within the Facebook canvas
33
34
  def url_for_canvas(url_opts={})
34
- apps_root = request.ssl? ? "https://apps.facebook.com/" : "http://apps.facebook.com/"
35
- canvas_root = File.join(apps_root, app_canvas_name)
35
+ canvas_root = app_canvas_url
36
36
  if url_opts.is_a?(Hash)
37
37
  return File.join(canvas_root, url_for(url_opts))
38
38
  elsif url_opts.include?("://")
@@ -9,26 +9,25 @@ module DoesFacebook
9
9
  # Load app configuration by Facebook callback path with a fallback to config
10
10
  # defined with name matching our current environment:
11
11
  def facebook_config
12
- app_settings = all_facebook_config.find do |app_name, settings|
13
- (settings["ssl_callback_url"] || settings["callback_url"]).match(/https?:\/\/#{request.host}/)
12
+ @facebook_config ||= nil
13
+ return @facebook_config unless @facebook_config.nil?
14
+ app_name, app_config = all_facebook_config.find do |name, config|
15
+ test_callback = request.ssl? ? config["ssl_callback_url"] : config["callback_url"]
16
+ request.url.match(/^#{test_callback}.*/)
14
17
  end
15
- if app_settings
16
- app_name, app_config = app_settings
17
- if app_config
18
- Rails.logger.debug(" Facebook configuration for app \"#{app_name}\" loaded via request to host #{request.host}")
19
- return @@facebook_config = HashWithIndifferentAccess.new(app_config)
18
+ if app_config
19
+ app_config = HashWithIndifferentAccess.new(app_config)
20
+ if app_config[:canvas_name]
21
+ app_config[:namespace] ||= app_config.delete(:canvas_name)
22
+ Rails.logger.warn(" DoesFacebook Deprecation Warning: \"canvas_name\" field in doesfacebook.yml should be renamed \"namespace\" as per Facebook Roadmap")
20
23
  end
21
- end
22
-
23
- @@facebook_config = HashWithIndifferentAccess.new(all_facebook_config[Rails.env])
24
- unless @@facebook_config.blank?
25
- Rails.logger.debug(" Facebook configuration loaded for app based on environment \"#{Rails.env}\"")
24
+ Rails.logger.info(" Facebook configuration for app \"#{app_name}\" loaded for request URL #{request.url}")
25
+ @facebook_config = app_config
26
26
  else
27
27
  Rails.logger.warn(" Facebook configuration could not be found. doesfacebook.yml has no app for host #{request.host}")
28
28
  Rails.logger.warn(" Facebook configuration can be generated by running \"rails generate does_facebook:config\"")
29
29
  end
30
-
31
- return @@facebook_config
30
+ return @facebook_config
32
31
  end
33
32
 
34
33
 
@@ -15,7 +15,7 @@ module DoesFacebook
15
15
  # Mechanism for redirecting within the Facebook canvas:
16
16
  def redirect_to_canvas_old(opts={})
17
17
  raise MalformedUrlOptions.new("Options passed to `redirect_to_canvas` must be a URL options Hash") unless opts.is_a?(Hash)
18
- dest = File.join("http://apps.facebook.com/", facebook_config[:canvas_name], url_for(opts.merge(:only_path=>true)))
18
+ dest = File.join("http://apps.facebook.com/", facebook_config[:namespace], url_for(opts.merge(:only_path=>true)))
19
19
  logger.warn "DoesFacebook: redirect_to_canvas_old method is deprecated and does not support HTTPS."
20
20
  logger.warn "DoesFacebook: Use redirect_to_canvas for HTTPS-support and JavaScript-based redirection."
21
21
  logger.info "Canvas Redirect to #{opts.inspect}=>#{dest}"
@@ -26,7 +26,7 @@ module DoesFacebook
26
26
  def redirect_to_canvas(opts={})
27
27
  raise MalformedUrlOptions.new("Options passed to `redirect_to_canvas` must be a URL options Hash") unless opts.is_a?(Hash)
28
28
  apps_root = request.ssl? ? "https://apps.facebook.com/" : "http://apps.facebook.com/"
29
- dest = File.join(apps_root, facebook_config[:canvas_name], url_for(opts.merge(:only_path=>true)))
29
+ dest = File.join(apps_root, facebook_config[:namespace], url_for(opts.merge(:only_path=>true)))
30
30
  @facebook_redirect_url = dest
31
31
  logger.info "Canvas Redirect to #{opts.inspect}=>#{dest}"
32
32
  begin
@@ -15,18 +15,18 @@
15
15
  name_of_app:
16
16
  app_id: 1234567890
17
17
  secret_key: 1234567890abcdefghijklmnopqrsttuv
18
- canvas_name: your_canvas_name
18
+ namespace: your_canvas_name
19
19
  callback_url: http://your.dev.server.com/and/path
20
20
 
21
21
  name_of_another_app:
22
22
  app_id: 1234567890
23
23
  secret_key: 1234567890abcdefghijklmnopqrsttuv
24
- canvas_name: your_canvas_name
24
+ namespace: your_canvas_name
25
25
  callback_url: http://your.dev.server.com/and/path
26
26
 
27
27
  name_of_production_app:
28
28
  app_id: 1234567890
29
29
  secret_key: 1234567890abcdefghijklmnopqrsttuv
30
- canvas_name: your_canvas_name
30
+ namespace: your_canvas_name
31
31
  callback_url: http://your.server.com/and/path
32
32
  ssl_callback_url: https://your.secure.server.com/and/path
metadata CHANGED
@@ -1,19 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: doesfacebook
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0.pre3
5
- prerelease: 6
4
+ version: 0.5.0
5
+ prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - mccolin
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-20 00:00:00.000000000Z
12
+ date: 2012-03-28 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
- requirement: &2156557920 !ruby/object:Gem::Requirement
16
+ requirement: &2162612200 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.0.0
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *2156557920
24
+ version_requirements: *2162612200
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: jeweler
27
- requirement: &2156557320 !ruby/object:Gem::Requirement
27
+ requirement: &2162611700 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: 1.5.1
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *2156557320
35
+ version_requirements: *2162611700
36
36
  description: Paper-thin Facebook validation and signed request parsing Rails plugin
37
37
  email: info@awexomelabs.com
38
38
  executables: []
@@ -67,9 +67,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
67
67
  required_rubygems_version: !ruby/object:Gem::Requirement
68
68
  none: false
69
69
  requirements:
70
- - - ! '>'
70
+ - - ! '>='
71
71
  - !ruby/object:Gem::Version
72
- version: 1.3.1
72
+ version: '0'
73
73
  requirements: []
74
74
  rubyforge_project:
75
75
  rubygems_version: 1.8.17