oa-oauth 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/lib/omniauth/oauth.rb +2 -0
- data/lib/omniauth/strategies/dopplr.rb +22 -0
- data/lib/omniauth/strategies/facebook.rb +8 -10
- data/lib/omniauth/strategies/github.rb +8 -0
- data/lib/omniauth/strategies/google_apps_market.rb +3 -0
- data/lib/omniauth/strategies/gowalla.rb +9 -8
- data/lib/omniauth/strategies/oauth2.rb +19 -2
- data/lib/omniauth/strategies/trip_it.rb +35 -0
- metadata +10 -7
    
        data/lib/omniauth/oauth.rb
    CHANGED
    
    | @@ -13,5 +13,7 @@ module OmniAuth | |
| 13 13 | 
             
                autoload :Foursquare,         'omniauth/strategies/foursquare'
         | 
| 14 14 | 
             
                autoload :Gowalla,            'omniauth/strategies/gowalla'
         | 
| 15 15 | 
             
                autoload :Identica,           'omniauth/strategies/identica'
         | 
| 16 | 
            +
                autoload :TripIt,             'omniauth/strategies/trip_it'
         | 
| 17 | 
            +
                autoload :Dopplr,             'omniauth/strategies/dopplr'
         | 
| 16 18 | 
             
              end
         | 
| 17 19 | 
             
            end
         | 
| @@ -0,0 +1,22 @@ | |
| 1 | 
            +
            require 'omniauth/oauth'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module OmniAuth
         | 
| 4 | 
            +
              module Strategies
         | 
| 5 | 
            +
                #
         | 
| 6 | 
            +
                # Authenticate to Dopplr via OAuth and retrieve an access token for API usage
         | 
| 7 | 
            +
                #
         | 
| 8 | 
            +
                # Usage:
         | 
| 9 | 
            +
                #
         | 
| 10 | 
            +
                #    use OmniAuth::Strategies::Dopplr, 'consumerkey', 'consumersecret'
         | 
| 11 | 
            +
                #
         | 
| 12 | 
            +
                class Dopplr < OmniAuth::Strategies::OAuth
         | 
| 13 | 
            +
                  def initialize(app, consumer_key, consumer_secret)
         | 
| 14 | 
            +
                    super(app, :dopplr, consumer_key, consumer_secret,
         | 
| 15 | 
            +
                            :site => 'https://www.dopplr.com',
         | 
| 16 | 
            +
                            :request_token_path => "/oauth/request_token",
         | 
| 17 | 
            +
                            :access_token_path  => "/oauth/access_token",
         | 
| 18 | 
            +
                            :authorize_path    => "/oauth/authorize")
         | 
| 19 | 
            +
                  end     
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
              end
         | 
| 22 | 
            +
            end
         | 
| @@ -3,25 +3,23 @@ require 'multi_json' | |
| 3 3 |  | 
| 4 4 | 
             
            module OmniAuth
         | 
| 5 5 | 
             
              module Strategies
         | 
| 6 | 
            -
                #
         | 
| 7 6 | 
             
                # Authenticate to Facebook utilizing OAuth 2.0 and retrieve
         | 
| 8 7 | 
             
                # basic user information.
         | 
| 9 8 | 
             
                #
         | 
| 10 | 
            -
                # Usage | 
| 11 | 
            -
                #
         | 
| 12 | 
            -
                #    use OmniAuth::Strategies::Facebook, 'app_id', 'app_secret'
         | 
| 13 | 
            -
                #
         | 
| 14 | 
            -
                # Options:
         | 
| 15 | 
            -
                #
         | 
| 16 | 
            -
                # <tt>:scope</tt> :: Extended permissions such as <tt>email</tt> and <tt>offline_access</tt> (which are the defaults).
         | 
| 9 | 
            +
                # @example Basic Usage
         | 
| 10 | 
            +
                #   use OmniAuth::Strategies::Facebook, 'app_id', 'app_secret'
         | 
| 17 11 | 
             
                class Facebook < OAuth2
         | 
| 12 | 
            +
                  # @param [Rack Application] app standard middleware application parameter
         | 
| 13 | 
            +
                  # @param [String] app_id the application id as [registered on Facebook](http://www.facebook.com/developers/)
         | 
| 14 | 
            +
                  # @param [String] app_secret the application secret as registered on Facebook
         | 
| 15 | 
            +
                  # @option options [String] :scope ('email,offline_access') comma-separated extended permissions such as `email` and `manage_pages`
         | 
| 18 16 | 
             
                  def initialize(app, app_id, app_secret, options = {})
         | 
| 19 17 | 
             
                    options[:site] = 'https://graph.facebook.com/'
         | 
| 20 18 | 
             
                    super(app, :facebook, app_id, app_secret, options)
         | 
| 21 19 | 
             
                  end
         | 
| 22 20 |  | 
| 23 21 | 
             
                  def user_data
         | 
| 24 | 
            -
                    @data ||= MultiJson.decode(@access_token.get('/me'))
         | 
| 22 | 
            +
                    @data ||= MultiJson.decode(@access_token.get('/me', {}, { "Accept-Language" => "en-us,en;"}))
         | 
| 25 23 | 
             
                  end
         | 
| 26 24 |  | 
| 27 25 | 
             
                  def request_phase
         | 
| @@ -51,4 +49,4 @@ module OmniAuth | |
| 51 49 | 
             
                  end
         | 
| 52 50 | 
             
                end
         | 
| 53 51 | 
             
              end
         | 
| 54 | 
            -
            end
         | 
| 52 | 
            +
            end
         | 
| @@ -3,7 +3,13 @@ require 'multi_json' | |
| 3 3 |  | 
| 4 4 | 
             
            module OmniAuth
         | 
| 5 5 | 
             
              module Strategies
         | 
| 6 | 
            +
                # OAuth 2.0 based authentication with GitHub. In order to 
         | 
| 7 | 
            +
                # sign up for an application, you need to [register an application](http://github.com/account/applications/new)
         | 
| 8 | 
            +
                # and provide the proper credentials to this middleware.
         | 
| 6 9 | 
             
                class GitHub < OAuth2
         | 
| 10 | 
            +
                  # @param [Rack Application] app standard middleware application argument
         | 
| 11 | 
            +
                  # @param [String] app_id the application ID for your client
         | 
| 12 | 
            +
                  # @param [String] app_secret the application secret
         | 
| 7 13 | 
             
                  def initialize(app, app_id, app_secret, options = {})
         | 
| 8 14 | 
             
                    options[:site] = 'https://github.com/'
         | 
| 9 15 | 
             
                    options[:authorize_path] = '/login/oauth/authorize'
         | 
| @@ -11,6 +17,8 @@ module OmniAuth | |
| 11 17 | 
             
                    super(app, :github, app_id, app_secret, options)
         | 
| 12 18 | 
             
                  end
         | 
| 13 19 |  | 
| 20 | 
            +
                  protected
         | 
| 21 | 
            +
                  
         | 
| 14 22 | 
             
                  def user_data
         | 
| 15 23 | 
             
                    @data ||= MultiJson.decode(@access_token.get('/api/v2/json/user/show'))['user']
         | 
| 16 24 | 
             
                  end
         | 
| @@ -7,14 +7,13 @@ module OmniAuth | |
| 7 7 | 
             
                # Authenticate to Gowalla utilizing OAuth 2.0 and retrieve
         | 
| 8 8 | 
             
                # basic user information.
         | 
| 9 9 | 
             
                #
         | 
| 10 | 
            -
                # Usage | 
| 11 | 
            -
                #
         | 
| 12 | 
            -
                #    use OmniAuth::Strategies::Gowalla, 'API Key', 'Secret Key'
         | 
| 13 | 
            -
                #
         | 
| 14 | 
            -
                # Options:
         | 
| 15 | 
            -
                #
         | 
| 16 | 
            -
                # <tt>:scope</tt> :: Extended permissions such as <tt>email</tt> and <tt>offline_access</tt> (which are the defaults).
         | 
| 10 | 
            +
                # @example Basic Usage
         | 
| 11 | 
            +
                #     use OmniAuth::Strategies::Gowalla, 'API Key', 'Secret Key'
         | 
| 17 12 | 
             
                class Gowalla < OAuth2
         | 
| 13 | 
            +
                  # @param [Rack Application] app standard middleware application parameter
         | 
| 14 | 
            +
                  # @param [String] api_key the application id as [registered on Gowalla](http://gowalla.com/api/keys)
         | 
| 15 | 
            +
                  # @param [String] secret_key the application secret as [registered on Gowalla](http://gowalla.com/api/keys)
         | 
| 16 | 
            +
                  # @option options ['read','read-write'] :scope ('read') the scope of your authorization request; must be `read` or `read-write`
         | 
| 18 17 | 
             
                  def initialize(app, api_key, secret_key, options = {})
         | 
| 19 18 | 
             
                    options[:site] = 'https://api.gowalla.com/api/oauth'
         | 
| 20 19 | 
             
                    options[:authorize_url] = 'https://gowalla.com/api/oauth/new'
         | 
| @@ -22,12 +21,14 @@ module OmniAuth | |
| 22 21 | 
             
                    super(app, :gowalla, api_key, secret_key, options)
         | 
| 23 22 | 
             
                  end
         | 
| 24 23 |  | 
| 24 | 
            +
                  protected
         | 
| 25 | 
            +
                  
         | 
| 25 26 | 
             
                  def user_data
         | 
| 26 27 | 
             
                    @data ||= MultiJson.decode(@access_token.get("/users/me.json"))
         | 
| 27 28 | 
             
                  end
         | 
| 28 29 |  | 
| 29 30 | 
             
                  def request_phase
         | 
| 30 | 
            -
                    options[:scope] ||= " | 
| 31 | 
            +
                    options[:scope] ||= "read"
         | 
| 31 32 | 
             
                    super
         | 
| 32 33 | 
             
                  end
         | 
| 33 34 |  | 
| @@ -5,11 +5,21 @@ require 'omniauth/oauth' | |
| 5 5 |  | 
| 6 6 | 
             
            module OmniAuth
         | 
| 7 7 | 
             
              module Strategies
         | 
| 8 | 
            +
                # Authentication strategy for connecting with APIs constructed using
         | 
| 9 | 
            +
                # the [OAuth 2.0 Specification](http://tools.ietf.org/html/draft-ietf-oauth-v2-10).
         | 
| 10 | 
            +
                # You must generally register your application with the provider and
         | 
| 11 | 
            +
                # utilize an application id and secret in order to authenticate using
         | 
| 12 | 
            +
                # OAuth 2.0.
         | 
| 8 13 | 
             
                class OAuth2
         | 
| 9 14 | 
             
                  include OmniAuth::Strategy
         | 
| 10 15 |  | 
| 11 | 
            -
                   | 
| 16 | 
            +
                  # The options passed in to the strategy.
         | 
| 17 | 
            +
                  attr_accessor :options
         | 
| 18 | 
            +
                  # The `OAuth2::Client` for this strategy.
         | 
| 19 | 
            +
                  attr_accessor :client
         | 
| 12 20 |  | 
| 21 | 
            +
                  # An error that is indicated in the OAuth 2.0 callback.
         | 
| 22 | 
            +
                  # This could be a `redirect_uri_mismatch` or other 
         | 
| 13 23 | 
             
                  class CallbackError < StandardError
         | 
| 14 24 | 
             
                    attr_accessor :error, :error_reason, :error_uri
         | 
| 15 25 |  | 
| @@ -20,6 +30,13 @@ module OmniAuth | |
| 20 30 | 
             
                    end
         | 
| 21 31 | 
             
                  end
         | 
| 22 32 |  | 
| 33 | 
            +
                  # Initialize a new OAuth 2.0 authentication provider.
         | 
| 34 | 
            +
                  
         | 
| 35 | 
            +
                  # @param [Rack Application] app standard middleware application argument
         | 
| 36 | 
            +
                  # @param [String] name the name for this provider to be used in its URL, e.g. `/auth/name`
         | 
| 37 | 
            +
                  # @param [String] client_id the client/application ID of this provider
         | 
| 38 | 
            +
                  # @param [String] client_secret the client/application secret of this provider
         | 
| 39 | 
            +
                  # @param [Hash] options that will be passed through to the OAuth2::Client (see [oauth2 docs](http://rubydoc.info/gems/oauth2))
         | 
| 23 40 | 
             
                  def initialize(app, name, client_id, client_secret, options = {})
         | 
| 24 41 | 
             
                    super(app, name)
         | 
| 25 42 | 
             
                    self.options = options
         | 
| @@ -33,7 +50,7 @@ module OmniAuth | |
| 33 50 | 
             
                  end
         | 
| 34 51 |  | 
| 35 52 | 
             
                  def callback_phase
         | 
| 36 | 
            -
                    if request.params['error']
         | 
| 53 | 
            +
                    if request.params['error'] || request.params['error_reason']
         | 
| 37 54 | 
             
                      raise CallbackError.new(request.params['error'], request.params['error_description'] || request.params['error_reason'], request.params['error_uri'])
         | 
| 38 55 | 
             
                    end
         | 
| 39 56 |  | 
| @@ -0,0 +1,35 @@ | |
| 1 | 
            +
            require 'omniauth/oauth'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module OmniAuth
         | 
| 4 | 
            +
              module Strategies
         | 
| 5 | 
            +
                #
         | 
| 6 | 
            +
                # Authenticate to TripIt via OAuth and retrieve an access token for API usage
         | 
| 7 | 
            +
                #
         | 
| 8 | 
            +
                # Usage:
         | 
| 9 | 
            +
                #
         | 
| 10 | 
            +
                #    use OmniAuth::Strategies::TripIt, 'consumerkey', 'consumersecret'
         | 
| 11 | 
            +
                #
         | 
| 12 | 
            +
                class TripIt < OmniAuth::Strategies::OAuth
         | 
| 13 | 
            +
                  def initialize(app, consumer_key, consumer_secret)
         | 
| 14 | 
            +
                    super(app, :tripit, consumer_key, consumer_secret,
         | 
| 15 | 
            +
                            :site => 'https://api.tripit.com',
         | 
| 16 | 
            +
                            :request_token_path => "/oauth/request_token",
         | 
| 17 | 
            +
                            :access_token_path  => "/oauth/access_token",
         | 
| 18 | 
            +
                            :authorize_url     => "https://www.tripit.com/oauth/authorize")
         | 
| 19 | 
            +
                  end
         | 
| 20 | 
            +
                  
         | 
| 21 | 
            +
                  def request_phase
         | 
| 22 | 
            +
                    request_token = consumer.get_request_token(:oauth_callback => callback_url)
         | 
| 23 | 
            +
                    (session[:oauth]||={})[name.to_sym] = {:callback_confirmed => request_token.callback_confirmed?, :request_token => request_token.token, :request_secret => request_token.secret}
         | 
| 24 | 
            +
                    r = Rack::Response.new
         | 
| 25 | 
            +
                    # For some reason, TripIt NEEDS the &oauth_callback query param or the user receives an error.
         | 
| 26 | 
            +
                    r.redirect request_token.authorize_url + "&oauth_callback=" + urlencode(callback_url)
         | 
| 27 | 
            +
                    r.finish
         | 
| 28 | 
            +
                  end
         | 
| 29 | 
            +
                  
         | 
| 30 | 
            +
                  def urlencode(str)
         | 
| 31 | 
            +
                    str.gsub(/[^a-zA-Z0-9_\.\-]/n) {|s| sprintf('%%%02x', s[0]) }
         | 
| 32 | 
            +
                  end      
         | 
| 33 | 
            +
                end
         | 
| 34 | 
            +
              end
         | 
| 35 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,13 +1,13 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: oa-oauth
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              hash:  | 
| 4 | 
            +
              hash: 17
         | 
| 5 5 | 
             
              prerelease: false
         | 
| 6 6 | 
             
              segments: 
         | 
| 7 7 | 
             
              - 0
         | 
| 8 8 | 
             
              - 1
         | 
| 9 | 
            -
              -  | 
| 10 | 
            -
              version: 0.1. | 
| 9 | 
            +
              - 5
         | 
| 10 | 
            +
              version: 0.1.5
         | 
| 11 11 | 
             
            platform: ruby
         | 
| 12 12 | 
             
            authors: 
         | 
| 13 13 | 
             
            - Michael Bleigh
         | 
| @@ -15,7 +15,7 @@ autorequire: | |
| 15 15 | 
             
            bindir: bin
         | 
| 16 16 | 
             
            cert_chain: []
         | 
| 17 17 |  | 
| 18 | 
            -
            date: 2010-10- | 
| 18 | 
            +
            date: 2010-10-19 00:00:00 -05:00
         | 
| 19 19 | 
             
            default_executable: 
         | 
| 20 20 | 
             
            dependencies: 
         | 
| 21 21 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| @@ -24,12 +24,12 @@ dependencies: | |
| 24 24 | 
             
                requirements: 
         | 
| 25 25 | 
             
                - - "="
         | 
| 26 26 | 
             
                  - !ruby/object:Gem::Version 
         | 
| 27 | 
            -
                    hash:  | 
| 27 | 
            +
                    hash: 17
         | 
| 28 28 | 
             
                    segments: 
         | 
| 29 29 | 
             
                    - 0
         | 
| 30 30 | 
             
                    - 1
         | 
| 31 | 
            -
                    -  | 
| 32 | 
            -
                    version: 0.1. | 
| 31 | 
            +
                    - 5
         | 
| 32 | 
            +
                    version: 0.1.5
         | 
| 33 33 | 
             
              requirement: *id001
         | 
| 34 34 | 
             
              name: oa-core
         | 
| 35 35 | 
             
              prerelease: false
         | 
| @@ -202,15 +202,18 @@ extra_rdoc_files: [] | |
| 202 202 |  | 
| 203 203 | 
             
            files: 
         | 
| 204 204 | 
             
            - lib/omniauth/oauth.rb
         | 
| 205 | 
            +
            - lib/omniauth/strategies/dopplr.rb
         | 
| 205 206 | 
             
            - lib/omniauth/strategies/facebook.rb
         | 
| 206 207 | 
             
            - lib/omniauth/strategies/foursquare.rb
         | 
| 207 208 | 
             
            - lib/omniauth/strategies/github.rb
         | 
| 209 | 
            +
            - lib/omniauth/strategies/google_apps_market.rb
         | 
| 208 210 | 
             
            - lib/omniauth/strategies/gowalla.rb
         | 
| 209 211 | 
             
            - lib/omniauth/strategies/identica.rb
         | 
| 210 212 | 
             
            - lib/omniauth/strategies/linked_in.rb
         | 
| 211 213 | 
             
            - lib/omniauth/strategies/oauth.rb
         | 
| 212 214 | 
             
            - lib/omniauth/strategies/oauth2.rb
         | 
| 213 215 | 
             
            - lib/omniauth/strategies/thirty_seven_signals.rb
         | 
| 216 | 
            +
            - lib/omniauth/strategies/trip_it.rb
         | 
| 214 217 | 
             
            - lib/omniauth/strategies/twitter.rb
         | 
| 215 218 | 
             
            - README.rdoc
         | 
| 216 219 | 
             
            - LICENSE.rdoc
         |