fbauth 1.2.0.1 → 1.2.0.2

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.
@@ -11,11 +11,11 @@ module FacebookAuthFunctions
11
11
  def require_facebook_auth
12
12
  setup_facebook_auth
13
13
  if @facebook_auth.nil?
14
- redirect_to build_auth_url and return
14
+ redirect_to build_auth_url
15
15
  end
16
16
  if signed_params_present? && request.post?
17
17
  # If Facebook POST with signed_params, redirect to original URI using GET
18
- redirect_to request.request_uri and return
18
+ redirect_to request.request_uri
19
19
  end
20
20
  end
21
21
 
data/lib/fbauth.rb CHANGED
@@ -9,9 +9,9 @@
9
9
  end
10
10
  end
11
11
 
12
- require 'facebook_decoder.rb'
13
- require 'facebook_auth.rb'
14
- require 'facebook_config.rb'
15
- require 'facebook_http.rb'
16
- require 'facebook_graph.rb'
17
- require 'facebook_query.rb'
12
+ require 'fbauth/decoder.rb'
13
+ require 'fbauth/auth.rb'
14
+ require 'fbauth/config.rb'
15
+ require 'fbauth/http.rb'
16
+ require 'fbauth/graph.rb'
17
+ require 'fbauth/query.rb'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fbauth
3
3
  version: !ruby/object:Gem::Version
4
- hash: 77
4
+ hash: 75
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
8
  - 2
9
9
  - 0
10
- - 1
11
- version: 1.2.0.1
10
+ - 2
11
+ version: 1.2.0.2
12
12
  platform: ruby
13
13
  authors:
14
14
  - Three Wise Men Inc.
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-03-07 00:00:00 -05:00
19
+ date: 2011-03-09 00:00:00 -05:00
20
20
  default_executable:
21
21
  dependencies: []
22
22
 
@@ -29,12 +29,6 @@ extensions: []
29
29
  extra_rdoc_files:
30
30
  - README.mdown
31
31
  files:
32
- - lib/facebook_auth.rb
33
- - lib/facebook_config.rb
34
- - lib/facebook_decoder.rb
35
- - lib/facebook_graph.rb
36
- - lib/facebook_http.rb
37
- - lib/facebook_query.rb
38
32
  - lib/fbauth.rb
39
33
  - app/controllers/facebook_auth_functions.rb
40
34
  - app/helpers/fbauth_helper.rb
data/lib/facebook_auth.rb DELETED
@@ -1,88 +0,0 @@
1
- class FacebookAuth
2
-
3
- attr_accessor :access_token, :expires, :uid
4
- attr_accessor :user_data, :validation_error
5
-
6
- def self.create parms
7
- auth = self.new
8
- # Sense old-style FB auth structure, or new-style
9
- if parms.has_key?('access_token')
10
- auth.access_token = parms['access_token']
11
- auth.uid = parms['uid']
12
- auth.expires_epoch = parms['expires'].to_i unless parms['expires'].nil?
13
- elsif parms.has_key?('oauth_token')
14
- auth.access_token = parms['oauth_token']
15
- auth.uid = parms['user_id']
16
- auth.expires_epoch = parms['expires'].to_i if parms.has_key?('expires')
17
- end
18
- auth
19
- end
20
-
21
- def expires_epoch= epoch
22
- # Need to convolve for SanFran TZ?
23
- self.expires = Time.at(epoch)
24
- end
25
-
26
- def is_expired?
27
- if self.expires.nil?
28
- true
29
- else
30
- self.expires < Time.now
31
- end
32
- end
33
-
34
- def validate
35
- valid = false
36
- msgs = []
37
- unless self.uid.nil? || self.access_token.nil?
38
- begin
39
- self.user_data = FacebookGraph.new(self.access_token).call(self.uid)
40
- rescue => e
41
- msgs << "Error calling FacebookGraph - #{e}"
42
- end
43
- if self.user_data && self.user_data.has_key?('error')
44
- msgs << self.user_data['error'].inspect
45
- self.user_data = nil
46
- elsif self.user_data
47
- valid = true
48
- end
49
- else
50
- msgs << "UID provided is nil" if self.uid.nil?
51
- msgs << "access_token provided is nil" if self.access_token.nil?
52
- end
53
- self.validation_error = msgs.join(", ") unless valid
54
- return valid
55
- end
56
-
57
- def session_data
58
- return {
59
- 'access_token' => self.access_token,
60
- 'uid' => self.uid,
61
- 'expires' => self.expires.to_i
62
- }.to_json
63
- end
64
-
65
- end
66
-
67
- # User data typically looks like this:
68
- #
69
- # {
70
- # "id"=>"849395216",
71
- # "name"=>"Steven Vetzal",
72
- # "first_name"=>"Steven"
73
- # "last_name"=>"Vetzal",
74
- # "gender"=>"male",
75
- # "verified"=>true,
76
- # "link"=>"http://www.facebook.com/svetzal",
77
- # "timezone"=>-5,
78
- # "locale"=>"en_US",
79
- # "location"=>{
80
- # "name"=>"Oshawa, Ontario",
81
- # "id"=>"114418101908145"
82
- # },
83
- # "hometown"=>{
84
- # "name"=>"Oshawa, Ontario",
85
- # "id"=>"114418101908145"
86
- # },
87
- # "updated_time"=>"2010-04-28T12:57:20+0000",
88
- # }
@@ -1,20 +0,0 @@
1
- class FacebookConfig
2
- def self.[](key)
3
- get_environment[key].value
4
- end
5
-
6
- private
7
-
8
- def self.get_environment
9
- read_yaml[ENV["RAILS_ENV"]]
10
- end
11
-
12
- def self.read_yaml
13
- file = File.join(::RAILS_ROOT, 'config', 'facebook.yml')
14
- YAML.parse(ERB.new(IO.read(file)).result)
15
- end
16
-
17
- def self.app_url
18
- "http://apps.facebook.com/#{self['app_context']}/"
19
- end
20
- end
@@ -1,30 +0,0 @@
1
- require 'active_support'
2
- require 'digest/sha2'
3
-
4
- class FacebookDecoder
5
-
6
- def self.decode data
7
- unless data.nil?
8
- sig, b64udata = data.split('.')
9
- unless b64udata.nil?
10
- json = b64udata.tr('-_', '+/').unpack('m')[0]
11
- begin
12
- parms = JSON.parse(json)
13
- rescue => e
14
- begin
15
- parms = JSON.parse(json + '"}')
16
- rescue => e2
17
- begin
18
- parms = JSON.parse(json + '}')
19
- rescue => e3
20
- raise "Unable to parse json structure - '#{json}'"
21
- parms = {}
22
- end
23
- end
24
- end
25
- end
26
- end
27
- parms
28
- end
29
-
30
- end
@@ -1,26 +0,0 @@
1
- require 'net/http'
2
- require 'uri'
3
-
4
- class FacebookGraph
5
- include FacebookHttp
6
-
7
- FB_GRAPH_URL = "https://graph.facebook.com"
8
-
9
- def initialize(access_token = nil, options = {})
10
- @options = options.merge({ :access_token => access_token })
11
- end
12
-
13
- # Generic Graph call to lookup data for any path
14
- def call(path, options = {})
15
- get "#{FB_GRAPH_URL}/#{path}", merged_options(options)
16
- end
17
-
18
- # Post item to member's wall
19
- # Available options: message, picture, link, name, caption, description
20
- def publish_to_member_feed(uid, options)
21
- raise "access_token required" unless has_access_token?(options)
22
- if %w{staging production}.include? Rails.env
23
- post "#{FB_GRAPH_URL}/#{uid}/feed", merged_options(options)
24
- end
25
- end
26
- end
data/lib/facebook_http.rb DELETED
@@ -1,97 +0,0 @@
1
- require 'benchmark'
2
- require 'net/http'
3
- require 'net/https' # Required for Ruby 1.8.7
4
- require 'uri'
5
- require 'cgi'
6
-
7
- module FacebookHttp
8
-
9
- def build_get_url(url, params = {})
10
- q = build_query_string(params)
11
- if q
12
- url + q
13
- else
14
- url
15
- end
16
- end
17
-
18
- def caching_enabled?
19
- ActionController::Base.cache_store.class.name == "ActiveSupport::Cache::MemCacheStore"
20
- end
21
-
22
- def get(url, params = {})
23
- json = nil
24
- uri = URI.parse(build_get_url(url, params))
25
-
26
- json = Rails.cache.read(uri.to_s) if caching_enabled?
27
- if json.nil?
28
- bench = Benchmark.measure do
29
- http = Net::HTTP.new uri.host, uri.port
30
- begin
31
- http.use_ssl = (uri.scheme == "https")
32
- req = Net::HTTP::Get.new(uri.request_uri)
33
- response = http.request(req)
34
- raise "Facebook error response #{response.code} - #{response.body}" unless response.code == '200'
35
- begin
36
- json = JSON.parse(response.body)
37
- rescue => e
38
- raise "Error parsing facebook response: #{response.body}"
39
- end
40
- ensure
41
- http.finish if http.started?
42
- end
43
- end
44
- logger.warn("Facebook GET call to #{uri.to_s} completed in #{bench.real} seconds")
45
- Rails.cache.write(uri.to_s, json, :expires_in => 60) if json && caching_enabled?
46
- end
47
- json
48
- end
49
-
50
- def post(url, params = {})
51
- json = nil
52
- uri = URI.parse(url)
53
- bench = Benchmark.measure do
54
- http = Net::HTTP.new uri.host, uri.port
55
- begin
56
- http.use_ssl = (uri.scheme == "https")
57
- req = Net::HTTP::Post.new(uri.path)
58
- req.set_form_data(params)
59
- response = http.request(req)
60
- raise "Facebook error response #{response.code} - #{response.body}" unless response.code == '200'
61
- begin
62
- json = JSON.parse(response.body)
63
- rescue => e
64
- raise "Error parsing Facebook response: #{response.body}"
65
- end
66
- ensure
67
- http.finish if http.started?
68
- end
69
- end
70
- logger.warn("Facebook POST call to #{uri.to_s} completed in #{bench.real} seconds")
71
- json
72
- end
73
-
74
- def build_query_string options={}
75
- params = []
76
- str_keys = options.keys.collect{ |k| k.to_s }
77
- str_keys.sort.each do |str_key|
78
- key = str_key.to_sym
79
- value = options[key]
80
- params << "#{key.to_s}=#{URI.escape(value.to_s)}" unless value.nil?
81
- end
82
- "?#{params.join('&')}" unless params.empty?
83
- end
84
-
85
- def merged_options(options = {})
86
- options.merge!(@options) if @options
87
- options
88
- end
89
-
90
- def has_access_token?(options = {})
91
- merged_options.has_key? :access_token
92
- end
93
-
94
- def logger
95
- Rails.logger
96
- end
97
- end
@@ -1,16 +0,0 @@
1
- require 'uri'
2
-
3
- class FacebookQuery
4
- include FacebookHttp
5
-
6
- FB_API_URL = "https://api.facebook.com/method/fql.query"
7
-
8
- def initialize(access_token = nil, options = {})
9
- @options = options.merge({ :access_token => access_token })
10
- @options.merge!({ :format => "JSON" }) unless @options.has_key?(:format)
11
- end
12
-
13
- def fql(query, options = {})
14
- get FB_API_URL, merged_options(options.merge({ :query => query }))
15
- end
16
- end