facebooker2 0.0.1
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/lib/facebooker2/rails/controller.rb +72 -0
 - data/lib/facebooker2/rails/helpers/facebook_connect.rb +45 -0
 - data/lib/facebooker2/rails/helpers/javascript.rb +34 -0
 - data/lib/facebooker2/rails/helpers/user.rb +70 -0
 - data/lib/facebooker2/rails/helpers.rb +9 -0
 - data/lib/facebooker2/rails.rb +4 -0
 - data/lib/facebooker2.rb +50 -0
 - metadata +70 -0
 
| 
         @@ -0,0 +1,72 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require "digest/md5"
         
     | 
| 
      
 2 
     | 
    
         
            +
            require "ruby-debug"
         
     | 
| 
      
 3 
     | 
    
         
            +
            module Facebooker2
         
     | 
| 
      
 4 
     | 
    
         
            +
              module Rails
         
     | 
| 
      
 5 
     | 
    
         
            +
                module Controller
         
     | 
| 
      
 6 
     | 
    
         
            +
                  
         
     | 
| 
      
 7 
     | 
    
         
            +
                  def self.included(controller)
         
     | 
| 
      
 8 
     | 
    
         
            +
                    controller.helper Facebooker2::Rails::Helpers
         
     | 
| 
      
 9 
     | 
    
         
            +
                    controller.helper_method :current_facebook_user
         
     | 
| 
      
 10 
     | 
    
         
            +
                    controller.helper_method :current_facebook_client
         
     | 
| 
      
 11 
     | 
    
         
            +
                  end
         
     | 
| 
      
 12 
     | 
    
         
            +
                  
         
     | 
| 
      
 13 
     | 
    
         
            +
                  def current_facebook_user
         
     | 
| 
      
 14 
     | 
    
         
            +
                    fetch_client_and_user_from_cookie
         
     | 
| 
      
 15 
     | 
    
         
            +
                    @_current_facebook_user
         
     | 
| 
      
 16 
     | 
    
         
            +
                  end
         
     | 
| 
      
 17 
     | 
    
         
            +
                  
         
     | 
| 
      
 18 
     | 
    
         
            +
                  def current_facebook_client
         
     | 
| 
      
 19 
     | 
    
         
            +
                    fetch_client_and_user_from_cookie
         
     | 
| 
      
 20 
     | 
    
         
            +
                    @_current_facebook_client
         
     | 
| 
      
 21 
     | 
    
         
            +
                  end
         
     | 
| 
      
 22 
     | 
    
         
            +
                  
         
     | 
| 
      
 23 
     | 
    
         
            +
                  def fetch_client_and_user_from_cookie
         
     | 
| 
      
 24 
     | 
    
         
            +
                    return if @_fb_user_fetched
         
     | 
| 
      
 25 
     | 
    
         
            +
                    app_id = Facebooker2.app_id
         
     | 
| 
      
 26 
     | 
    
         
            +
                    if (hash_data = fb_cookie_hash_for_app_id(app_id)) and
         
     | 
| 
      
 27 
     | 
    
         
            +
                      fb_cookie_signature_correct?(fb_cookie_hash_for_app_id(app_id),Facebooker2.secret)
         
     | 
| 
      
 28 
     | 
    
         
            +
                      client = Mogli::Client.new(hash_data["access_token"],hash_data["expires"].to_i)
         
     | 
| 
      
 29 
     | 
    
         
            +
                      user = Mogli::User.new(:id=>hash_data["uid"])
         
     | 
| 
      
 30 
     | 
    
         
            +
                      user.client = @_current_facebook_client
         
     | 
| 
      
 31 
     | 
    
         
            +
                      fb_sign_in_user_and_client(user,client)
         
     | 
| 
      
 32 
     | 
    
         
            +
                    end
         
     | 
| 
      
 33 
     | 
    
         
            +
                    @_fb_user_fetched = true
         
     | 
| 
      
 34 
     | 
    
         
            +
                  end
         
     | 
| 
      
 35 
     | 
    
         
            +
                  
         
     | 
| 
      
 36 
     | 
    
         
            +
                  def fb_sign_in_user_and_client(user,client)
         
     | 
| 
      
 37 
     | 
    
         
            +
                    @_current_facebook_user = user
         
     | 
| 
      
 38 
     | 
    
         
            +
                    @_current_facebook_client = client
         
     | 
| 
      
 39 
     | 
    
         
            +
                    @_fb_user_fetched = true
         
     | 
| 
      
 40 
     | 
    
         
            +
                  end
         
     | 
| 
      
 41 
     | 
    
         
            +
                  
         
     | 
| 
      
 42 
     | 
    
         
            +
                  def fb_cookie_hash_for_app_id(app_id)
         
     | 
| 
      
 43 
     | 
    
         
            +
                    return nil unless fb_cookie_for_app_id?(app_id)
         
     | 
| 
      
 44 
     | 
    
         
            +
                    hash={}
         
     | 
| 
      
 45 
     | 
    
         
            +
                    data = fb_cookie_for_app_id(app_id).gsub(/"/,"")
         
     | 
| 
      
 46 
     | 
    
         
            +
                    data.split("&").each do |str|
         
     | 
| 
      
 47 
     | 
    
         
            +
                      parts = str.split("=")
         
     | 
| 
      
 48 
     | 
    
         
            +
                      hash[parts.first] = parts.last
         
     | 
| 
      
 49 
     | 
    
         
            +
                    end
         
     | 
| 
      
 50 
     | 
    
         
            +
                    hash
         
     | 
| 
      
 51 
     | 
    
         
            +
                  end
         
     | 
| 
      
 52 
     | 
    
         
            +
                  
         
     | 
| 
      
 53 
     | 
    
         
            +
                  def fb_cookie_for_app_id?(app_id)
         
     | 
| 
      
 54 
     | 
    
         
            +
                    !fb_cookie_for_app_id(app_id).nil?
         
     | 
| 
      
 55 
     | 
    
         
            +
                  end
         
     | 
| 
      
 56 
     | 
    
         
            +
                  
         
     | 
| 
      
 57 
     | 
    
         
            +
                  def fb_cookie_for_app_id(app_id)
         
     | 
| 
      
 58 
     | 
    
         
            +
                    cookies["fbs_#{app_id}"]
         
     | 
| 
      
 59 
     | 
    
         
            +
                  end
         
     | 
| 
      
 60 
     | 
    
         
            +
                  
         
     | 
| 
      
 61 
     | 
    
         
            +
                  def fb_cookie_signature_correct?(hash,secret)
         
     | 
| 
      
 62 
     | 
    
         
            +
                    sorted_keys = hash.keys.reject {|k| k=="sig"}.sort
         
     | 
| 
      
 63 
     | 
    
         
            +
                    test_string = ""
         
     | 
| 
      
 64 
     | 
    
         
            +
                    sorted_keys.each do |key|
         
     | 
| 
      
 65 
     | 
    
         
            +
                      test_string += "#{key}=#{hash[key]}"
         
     | 
| 
      
 66 
     | 
    
         
            +
                    end
         
     | 
| 
      
 67 
     | 
    
         
            +
                    test_string += secret
         
     | 
| 
      
 68 
     | 
    
         
            +
                    Digest::MD5.hexdigest(test_string) == hash["sig"]
         
     | 
| 
      
 69 
     | 
    
         
            +
                  end
         
     | 
| 
      
 70 
     | 
    
         
            +
                end
         
     | 
| 
      
 71 
     | 
    
         
            +
              end
         
     | 
| 
      
 72 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,45 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Facebooker2
         
     | 
| 
      
 2 
     | 
    
         
            +
              module Rails
         
     | 
| 
      
 3 
     | 
    
         
            +
                module Helpers
         
     | 
| 
      
 4 
     | 
    
         
            +
                  module FacebookConnect 
         
     | 
| 
      
 5 
     | 
    
         
            +
                    #
         
     | 
| 
      
 6 
     | 
    
         
            +
                    # Render an <fb:login-button> element, similar to
         
     | 
| 
      
 7 
     | 
    
         
            +
                    # fb_login_button. Adds a js redirect to the onlogin event via rjs.
         
     | 
| 
      
 8 
     | 
    
         
            +
                    #
         
     | 
| 
      
 9 
     | 
    
         
            +
                    # ==== Examples
         
     | 
| 
      
 10 
     | 
    
         
            +
                    #
         
     | 
| 
      
 11 
     | 
    
         
            +
                    #   fb_login_and_redirect '/other_page'
         
     | 
| 
      
 12 
     | 
    
         
            +
                    #   => <fb:login-button onlogin="window.location.href = "/other_page";"></fb:login-button>
         
     | 
| 
      
 13 
     | 
    
         
            +
                    #
         
     | 
| 
      
 14 
     | 
    
         
            +
                    # Like #fb_login_button, this also supports the :text option
         
     | 
| 
      
 15 
     | 
    
         
            +
                    #
         
     | 
| 
      
 16 
     | 
    
         
            +
                    #   fb_login_and_redirect '/other_page', :text => "Login with Facebook", :v => '2'
         
     | 
| 
      
 17 
     | 
    
         
            +
                    #   => <fb:login-button onlogin="window.location.href = "/other_page";" v="2">Login with Facebook</fb:login-button>
         
     | 
| 
      
 18 
     | 
    
         
            +
                    #
         
     | 
| 
      
 19 
     | 
    
         
            +
                    def fb_login_and_redirect(url, options = {})
         
     | 
| 
      
 20 
     | 
    
         
            +
                      js = update_page do |page|
         
     | 
| 
      
 21 
     | 
    
         
            +
                        page.redirect_to url
         
     | 
| 
      
 22 
     | 
    
         
            +
                      end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                      text = options.delete(:text)
         
     | 
| 
      
 25 
     | 
    
         
            +
                      
         
     | 
| 
      
 26 
     | 
    
         
            +
                      content_tag("fb:login-button",text,options.merge(:onlogin=>js))
         
     | 
| 
      
 27 
     | 
    
         
            +
                    end
         
     | 
| 
      
 28 
     | 
    
         
            +
                    
         
     | 
| 
      
 29 
     | 
    
         
            +
                    #
         
     | 
| 
      
 30 
     | 
    
         
            +
                    # Logs the user out of facebook and redirects to the given URL
         
     | 
| 
      
 31 
     | 
    
         
            +
                    #  args are passed to the call to link_to_function
         
     | 
| 
      
 32 
     | 
    
         
            +
                    def fb_logout_link(text,url,*args)
         
     | 
| 
      
 33 
     | 
    
         
            +
                      function= "FB.logout(function() {window.location.href = '#{url}';})"
         
     | 
| 
      
 34 
     | 
    
         
            +
                      link_to_function text, function, *args
         
     | 
| 
      
 35 
     | 
    
         
            +
                    end
         
     | 
| 
      
 36 
     | 
    
         
            +
                    
         
     | 
| 
      
 37 
     | 
    
         
            +
                    def fb_server_fbml(style=nil,&proc)
         
     | 
| 
      
 38 
     | 
    
         
            +
                      style_string=" style=\"#{style}\"" if style
         
     | 
| 
      
 39 
     | 
    
         
            +
                      content = capture(&proc)
         
     | 
| 
      
 40 
     | 
    
         
            +
                      concat("<fb:serverFbml#{style_string}><script type='text/fbml'>#{content}</script></fb:serverFbml>")
         
     | 
| 
      
 41 
     | 
    
         
            +
                    end
         
     | 
| 
      
 42 
     | 
    
         
            +
                  end
         
     | 
| 
      
 43 
     | 
    
         
            +
                end
         
     | 
| 
      
 44 
     | 
    
         
            +
              end
         
     | 
| 
      
 45 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,34 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Facebooker2
         
     | 
| 
      
 2 
     | 
    
         
            +
              module Rails
         
     | 
| 
      
 3 
     | 
    
         
            +
                module Helpers
         
     | 
| 
      
 4 
     | 
    
         
            +
                  module Javascript
         
     | 
| 
      
 5 
     | 
    
         
            +
                    def fb_connect_async_js(app_id,options={})
         
     | 
| 
      
 6 
     | 
    
         
            +
                      opts = Hash.new(true).merge!(options)
         
     | 
| 
      
 7 
     | 
    
         
            +
                      cookie = opts[:cookie]
         
     | 
| 
      
 8 
     | 
    
         
            +
                      status = opts[:status]
         
     | 
| 
      
 9 
     | 
    
         
            +
                      xfbml = opts[:xfbml]
         
     | 
| 
      
 10 
     | 
    
         
            +
                      js = <<-JAVASCRIPT
         
     | 
| 
      
 11 
     | 
    
         
            +
                      <div id="fb-root"></div>
         
     | 
| 
      
 12 
     | 
    
         
            +
                      <script>
         
     | 
| 
      
 13 
     | 
    
         
            +
                        window.fbAsyncInit = function() {
         
     | 
| 
      
 14 
     | 
    
         
            +
                          FB.init({
         
     | 
| 
      
 15 
     | 
    
         
            +
                            appId  : '#{app_id}',
         
     | 
| 
      
 16 
     | 
    
         
            +
                            status : #{status}, // check login status
         
     | 
| 
      
 17 
     | 
    
         
            +
                            cookie : #{cookie}, // enable cookies to allow the server to access the session
         
     | 
| 
      
 18 
     | 
    
         
            +
                            xfbml  : #{xfbml}  // parse XFBML
         
     | 
| 
      
 19 
     | 
    
         
            +
                          });
         
     | 
| 
      
 20 
     | 
    
         
            +
                        };
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                        (function() {
         
     | 
| 
      
 23 
     | 
    
         
            +
                          var e = document.createElement('script');
         
     | 
| 
      
 24 
     | 
    
         
            +
                          e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
         
     | 
| 
      
 25 
     | 
    
         
            +
                          e.async = true;
         
     | 
| 
      
 26 
     | 
    
         
            +
                          document.getElementById('fb-root').appendChild(e);
         
     | 
| 
      
 27 
     | 
    
         
            +
                        }());
         
     | 
| 
      
 28 
     | 
    
         
            +
                      </script>
         
     | 
| 
      
 29 
     | 
    
         
            +
                    JAVASCRIPT
         
     | 
| 
      
 30 
     | 
    
         
            +
                    end
         
     | 
| 
      
 31 
     | 
    
         
            +
                  end
         
     | 
| 
      
 32 
     | 
    
         
            +
                end
         
     | 
| 
      
 33 
     | 
    
         
            +
              end
         
     | 
| 
      
 34 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,70 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Facebooker2
         
     | 
| 
      
 2 
     | 
    
         
            +
              module Rails
         
     | 
| 
      
 3 
     | 
    
         
            +
                module Helpers
         
     | 
| 
      
 4 
     | 
    
         
            +
                  module User
         
     | 
| 
      
 5 
     | 
    
         
            +
                    # Render an fb:name tag for the given user
         
     | 
| 
      
 6 
     | 
    
         
            +
                    # This renders the name of the user specified.  You can use this tag as both subject and object of 
         
     | 
| 
      
 7 
     | 
    
         
            +
                    # a sentence.  <em> See </em> http://wiki.developers.facebook.com/index.php/Fb:name for full description.  
         
     | 
| 
      
 8 
     | 
    
         
            +
                    # Use this tag on FBML pages instead of retrieving the user's info and rendering the name explicitly.
         
     | 
| 
      
 9 
     | 
    
         
            +
                    #
         
     | 
| 
      
 10 
     | 
    
         
            +
                    def fb_name(user, options={})
         
     | 
| 
      
 11 
     | 
    
         
            +
                      options = fb_transform_keys(options,FB_NAME_OPTION_KEYS_TO_TRANSFORM)
         
     | 
| 
      
 12 
     | 
    
         
            +
                      fb_assert_valid_keys(options, FB_NAME_VALID_OPTION_KEYS)
         
     | 
| 
      
 13 
     | 
    
         
            +
                      options.merge!(:uid => Facebooker2.cast_to_facebook_id(user))
         
     | 
| 
      
 14 
     | 
    
         
            +
                      content_tag("fb:name",nil, fb_stringify_vals(options))
         
     | 
| 
      
 15 
     | 
    
         
            +
                    end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                    FB_NAME_OPTION_KEYS_TO_TRANSFORM = {:first_name_only => :firstnameonly, 
         
     | 
| 
      
 18 
     | 
    
         
            +
                                                        :last_name_only => :lastnameonly,
         
     | 
| 
      
 19 
     | 
    
         
            +
                                                        :show_network => :shownetwork,
         
     | 
| 
      
 20 
     | 
    
         
            +
                                                        :use_you => :useyou,
         
     | 
| 
      
 21 
     | 
    
         
            +
                                                        :if_cant_see => :ifcantsee,
         
     | 
| 
      
 22 
     | 
    
         
            +
                                                        :subject_id => :subjectid}
         
     | 
| 
      
 23 
     | 
    
         
            +
                    FB_NAME_VALID_OPTION_KEYS = [:firstnameonly, :linked, :lastnameonly, :possessive, :reflexive, 
         
     | 
| 
      
 24 
     | 
    
         
            +
                                                 :shownetwork, :useyou, :ifcantsee, :capitalize, :subjectid]
         
     | 
| 
      
 25 
     | 
    
         
            +
                    
         
     | 
| 
      
 26 
     | 
    
         
            +
                    
         
     | 
| 
      
 27 
     | 
    
         
            +
                    def fb_profile_pic(user, options={})
         
     | 
| 
      
 28 
     | 
    
         
            +
                      options = options.dup
         
     | 
| 
      
 29 
     | 
    
         
            +
                      validate_fb_profile_pic_size(options)
         
     | 
| 
      
 30 
     | 
    
         
            +
                      options = fb_transform_keys(options,FB_PROFILE_PIC_OPTION_KEYS_TO_TRANSFORM)
         
     | 
| 
      
 31 
     | 
    
         
            +
                      fb_assert_valid_keys(options,FB_PROFILE_PIC_VALID_OPTION_KEYS)
         
     | 
| 
      
 32 
     | 
    
         
            +
                      options.merge!(:uid => Facebooker2.cast_to_facebook_id(user))
         
     | 
| 
      
 33 
     | 
    
         
            +
                      content_tag("fb:profile-pic", nil,fb_stringify_vals(options))
         
     | 
| 
      
 34 
     | 
    
         
            +
                    end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                    FB_PROFILE_PIC_OPTION_KEYS_TO_TRANSFORM = {:facebook_logo => 'facebook-logo'}
         
     | 
| 
      
 37 
     | 
    
         
            +
                    FB_PROFILE_PIC_VALID_OPTION_KEYS = [:size, :linked, 'facebook-logo', :width, :height]
         
     | 
| 
      
 38 
     | 
    
         
            +
                    VALID_FB_PROFILE_PIC_SIZES = [:thumb, :small, :normal, :square]
         
     | 
| 
      
 39 
     | 
    
         
            +
                    def validate_fb_profile_pic_size(options)
         
     | 
| 
      
 40 
     | 
    
         
            +
                      if options.has_key?(:size) && !VALID_FB_PROFILE_PIC_SIZES.include?(options[:size].to_sym)
         
     | 
| 
      
 41 
     | 
    
         
            +
                        raise(ArgumentError, "Unknown value for size: #{options[:size]}")
         
     | 
| 
      
 42 
     | 
    
         
            +
                      end
         
     | 
| 
      
 43 
     | 
    
         
            +
                    end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
                    def fb_stringify_vals(hash)
         
     | 
| 
      
 46 
     | 
    
         
            +
                     result={}
         
     | 
| 
      
 47 
     | 
    
         
            +
                     hash.each do |key,value|
         
     | 
| 
      
 48 
     | 
    
         
            +
                       result[key]=value.to_s
         
     | 
| 
      
 49 
     | 
    
         
            +
                     end
         
     | 
| 
      
 50 
     | 
    
         
            +
                     result
         
     | 
| 
      
 51 
     | 
    
         
            +
                    end
         
     | 
| 
      
 52 
     | 
    
         
            +
                     def fb_transform_keys(options,transformation_hash)
         
     | 
| 
      
 53 
     | 
    
         
            +
                       new_hash = {}
         
     | 
| 
      
 54 
     | 
    
         
            +
                       options.each do |key,value|
         
     | 
| 
      
 55 
     | 
    
         
            +
                         new_key = transformation_hash[key]||key
         
     | 
| 
      
 56 
     | 
    
         
            +
                         new_hash[new_key]=value
         
     | 
| 
      
 57 
     | 
    
         
            +
                       end
         
     | 
| 
      
 58 
     | 
    
         
            +
                       new_hash
         
     | 
| 
      
 59 
     | 
    
         
            +
                     end
         
     | 
| 
      
 60 
     | 
    
         
            +
                     FB_ALWAYS_VALID_OPTION_KEYS = [:class, :style]
         
     | 
| 
      
 61 
     | 
    
         
            +
                   
         
     | 
| 
      
 62 
     | 
    
         
            +
                   def fb_assert_valid_keys(options,*valid_keys)
         
     | 
| 
      
 63 
     | 
    
         
            +
                     unknown_keys = options.keys - [valid_keys + FB_ALWAYS_VALID_OPTION_KEYS].flatten
         
     | 
| 
      
 64 
     | 
    
         
            +
                     raise(ArgumentError, "Unknown key(s): #{unknown_keys.join(", ")}") unless unknown_keys.empty?
         
     | 
| 
      
 65 
     | 
    
         
            +
                   end    
         
     | 
| 
      
 66 
     | 
    
         
            +
                   
         
     | 
| 
      
 67 
     | 
    
         
            +
                  end
         
     | 
| 
      
 68 
     | 
    
         
            +
                end
         
     | 
| 
      
 69 
     | 
    
         
            +
              end
         
     | 
| 
      
 70 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/facebooker2.rb
    ADDED
    
    | 
         @@ -0,0 +1,50 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Facebooker2
         
     | 
| 
      
 2 
     | 
    
         
            +
            require "mogli"
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            module Facebooker2
         
     | 
| 
      
 5 
     | 
    
         
            +
              class NotConfigured < Exception; end
         
     | 
| 
      
 6 
     | 
    
         
            +
              class << self
         
     | 
| 
      
 7 
     | 
    
         
            +
                attr_accessor :api_key, :secret, :app_id
         
     | 
| 
      
 8 
     | 
    
         
            +
              end
         
     | 
| 
      
 9 
     | 
    
         
            +
                
         
     | 
| 
      
 10 
     | 
    
         
            +
              def self.secret
         
     | 
| 
      
 11 
     | 
    
         
            +
                @secret || raise_unconfigured_exception    
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
              
         
     | 
| 
      
 14 
     | 
    
         
            +
              def self.app_id
         
     | 
| 
      
 15 
     | 
    
         
            +
                @app_id || raise_unconfigured_exception
         
     | 
| 
      
 16 
     | 
    
         
            +
              end
         
     | 
| 
      
 17 
     | 
    
         
            +
              
         
     | 
| 
      
 18 
     | 
    
         
            +
              def self.raise_unconfigured_exception
         
     | 
| 
      
 19 
     | 
    
         
            +
                raise NotConfigured.new("No configuration provided for Facebooker2. Either set the app_id and secret or call Facebooker2.load_facebooker_yaml in an initializer")
         
     | 
| 
      
 20 
     | 
    
         
            +
              end
         
     | 
| 
      
 21 
     | 
    
         
            +
              
         
     | 
| 
      
 22 
     | 
    
         
            +
              def self.configuration=(hash)
         
     | 
| 
      
 23 
     | 
    
         
            +
                self.api_key = hash[:api_key]
         
     | 
| 
      
 24 
     | 
    
         
            +
                self.secret = hash[:secret]
         
     | 
| 
      
 25 
     | 
    
         
            +
                self.app_id = hash[:app_id]
         
     | 
| 
      
 26 
     | 
    
         
            +
              end
         
     | 
| 
      
 27 
     | 
    
         
            +
              
         
     | 
| 
      
 28 
     | 
    
         
            +
              def self.load_facebooker_yaml
         
     | 
| 
      
 29 
     | 
    
         
            +
                config = YAML.load(File.read(File.join(::Rails.root,"config","facebooker.yml")))[::Rails.env]
         
     | 
| 
      
 30 
     | 
    
         
            +
                raise NotConfigured.new("Unable to load configuration for #{::Rails.env} from facebooker.yml. Is it set up?") if config.nil?
         
     | 
| 
      
 31 
     | 
    
         
            +
                self.configuration = config.with_indifferent_access
         
     | 
| 
      
 32 
     | 
    
         
            +
              end
         
     | 
| 
      
 33 
     | 
    
         
            +
              
         
     | 
| 
      
 34 
     | 
    
         
            +
              def self.cast_to_facebook_id(object)
         
     | 
| 
      
 35 
     | 
    
         
            +
                if object.kind_of?(Mogli::Profile)
         
     | 
| 
      
 36 
     | 
    
         
            +
                  object.id
         
     | 
| 
      
 37 
     | 
    
         
            +
                elsif object.respond_to?(:facebook_id)
         
     | 
| 
      
 38 
     | 
    
         
            +
                  object.facebook_id
         
     | 
| 
      
 39 
     | 
    
         
            +
                else
         
     | 
| 
      
 40 
     | 
    
         
            +
                  object
         
     | 
| 
      
 41 
     | 
    
         
            +
                end
         
     | 
| 
      
 42 
     | 
    
         
            +
              end
         
     | 
| 
      
 43 
     | 
    
         
            +
            end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
            require "facebooker2/rails/controller"
         
     | 
| 
      
 47 
     | 
    
         
            +
            require "facebooker2/rails/helpers/facebook_connect"
         
     | 
| 
      
 48 
     | 
    
         
            +
            require "facebooker2/rails/helpers/javascript"
         
     | 
| 
      
 49 
     | 
    
         
            +
            require "facebooker2/rails/helpers/user"
         
     | 
| 
      
 50 
     | 
    
         
            +
            require "facebooker2/rails/helpers"
         
     | 
    
        metadata
    ADDED
    
    | 
         @@ -0,0 +1,70 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            --- !ruby/object:Gem::Specification 
         
     | 
| 
      
 2 
     | 
    
         
            +
            name: facebooker2
         
     | 
| 
      
 3 
     | 
    
         
            +
            version: !ruby/object:Gem::Version 
         
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.0.1
         
     | 
| 
      
 5 
     | 
    
         
            +
            platform: ruby
         
     | 
| 
      
 6 
     | 
    
         
            +
            authors: 
         
     | 
| 
      
 7 
     | 
    
         
            +
            - Mike Mangino
         
     | 
| 
      
 8 
     | 
    
         
            +
            autorequire: 
         
     | 
| 
      
 9 
     | 
    
         
            +
            bindir: bin
         
     | 
| 
      
 10 
     | 
    
         
            +
            cert_chain: []
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2010-05-05 00:00:00 -04:00
         
     | 
| 
      
 13 
     | 
    
         
            +
            default_executable: 
         
     | 
| 
      
 14 
     | 
    
         
            +
            dependencies: 
         
     | 
| 
      
 15 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 16 
     | 
    
         
            +
              name: mogli
         
     | 
| 
      
 17 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 18 
     | 
    
         
            +
              version_requirement: 
         
     | 
| 
      
 19 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 20 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 21 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 22 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 23 
     | 
    
         
            +
                    version: 0.0.4
         
     | 
| 
      
 24 
     | 
    
         
            +
                version: 
         
     | 
| 
      
 25 
     | 
    
         
            +
            description: Facebook Connect integration library for ruby and rails
         
     | 
| 
      
 26 
     | 
    
         
            +
            email: mmangino@elevatedrails.com
         
     | 
| 
      
 27 
     | 
    
         
            +
            executables: []
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
            extensions: []
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            extra_rdoc_files: []
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            files: 
         
     | 
| 
      
 34 
     | 
    
         
            +
            - lib/facebooker2/rails/controller.rb
         
     | 
| 
      
 35 
     | 
    
         
            +
            - lib/facebooker2/rails/helpers/facebook_connect.rb
         
     | 
| 
      
 36 
     | 
    
         
            +
            - lib/facebooker2/rails/helpers/javascript.rb
         
     | 
| 
      
 37 
     | 
    
         
            +
            - lib/facebooker2/rails/helpers/user.rb
         
     | 
| 
      
 38 
     | 
    
         
            +
            - lib/facebooker2/rails/helpers.rb
         
     | 
| 
      
 39 
     | 
    
         
            +
            - lib/facebooker2/rails.rb
         
     | 
| 
      
 40 
     | 
    
         
            +
            - lib/facebooker2.rb
         
     | 
| 
      
 41 
     | 
    
         
            +
            has_rdoc: true
         
     | 
| 
      
 42 
     | 
    
         
            +
            homepage: http://developers.facebook.com/docs/api
         
     | 
| 
      
 43 
     | 
    
         
            +
            licenses: []
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
            post_install_message: 
         
     | 
| 
      
 46 
     | 
    
         
            +
            rdoc_options: []
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
            require_paths: 
         
     | 
| 
      
 49 
     | 
    
         
            +
            - lib
         
     | 
| 
      
 50 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 51 
     | 
    
         
            +
              requirements: 
         
     | 
| 
      
 52 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 53 
     | 
    
         
            +
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 54 
     | 
    
         
            +
                  version: "0"
         
     | 
| 
      
 55 
     | 
    
         
            +
              version: 
         
     | 
| 
      
 56 
     | 
    
         
            +
            required_rubygems_version: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 57 
     | 
    
         
            +
              requirements: 
         
     | 
| 
      
 58 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 59 
     | 
    
         
            +
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 60 
     | 
    
         
            +
                  version: "0"
         
     | 
| 
      
 61 
     | 
    
         
            +
              version: 
         
     | 
| 
      
 62 
     | 
    
         
            +
            requirements: []
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
            rubyforge_project: 
         
     | 
| 
      
 65 
     | 
    
         
            +
            rubygems_version: 1.3.5
         
     | 
| 
      
 66 
     | 
    
         
            +
            signing_key: 
         
     | 
| 
      
 67 
     | 
    
         
            +
            specification_version: 3
         
     | 
| 
      
 68 
     | 
    
         
            +
            summary: Facebook Connect integration library for ruby and rails
         
     | 
| 
      
 69 
     | 
    
         
            +
            test_files: []
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     |