Sha256: 547871bd0f34ddc8ce4716c4ff4198b3339901ea398989416ad0c9903396ae16

Contents?: true

Size: 1.31 KB

Versions: 14

Compression:

Stored size: 1.31 KB

Contents

require 'oauth2'
require 'bootic_client/strategies/strategy'

module BooticClient
  module Strategies

    class Oauth2Strategy < Strategy

      def inspect
        %(#<#{self.class.name} cid: #{config.client_id} root: #{config.api_root} auth: #{config.auth_host}>)
      end

      protected

      def validate!
        raise ArgumentError, "MUST include client_id" unless config.client_id
        raise ArgumentError, "MUST include client_secret" unless config.client_secret
        raise ArgumentError, "MUST include api_root" unless config.api_root
      end

      def pre_flight
        update_token! unless options[:access_token]
      end

      def request_headers
        {
          'Authorization' => "Bearer #{options[:access_token]}"
        }
      end

      def retryable(&block)
        begin
          yield
        rescue AuthorizationError => e
          update_token!
          yield
        end
      end

      def update_token!
        new_token = get_token
        options[:access_token] = new_token
        on_new_token.call new_token
      end

      def get_token
        raise "Implement this in subclasses"
      end

      def auth
        @auth ||= OAuth2::Client.new(
          config.client_id,
          config.client_secret,
          site: config.auth_host
        )
      end

    end

  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
bootic_client-0.0.21 lib/bootic_client/strategies/oauth2_strategy.rb
bootic_client-0.0.20 lib/bootic_client/strategies/oauth2_strategy.rb
bootic_client-0.0.19 lib/bootic_client/strategies/oauth2_strategy.rb
bootic_client-0.0.18 lib/bootic_client/strategies/oauth2_strategy.rb
bootic_client-0.0.17 lib/bootic_client/strategies/oauth2_strategy.rb
bootic_client-0.0.16 lib/bootic_client/strategies/oauth2_strategy.rb
bootic_client-0.0.15 lib/bootic_client/strategies/oauth2_strategy.rb
bootic_client-0.0.14 lib/bootic_client/strategies/oauth2_strategy.rb
bootic_client-0.0.13 lib/bootic_client/strategies/oauth2_strategy.rb
bootic_client-0.0.12 lib/bootic_client/strategies/oauth2_strategy.rb
bootic_client-0.0.11 lib/bootic_client/strategies/oauth2_strategy.rb
bootic_client-0.0.10 lib/bootic_client/strategies/oauth2_strategy.rb
bootic_client-0.0.9 lib/bootic_client/strategies/oauth2_strategy.rb
bootic_client-0.0.8 lib/bootic_client/strategies/oauth2_strategy.rb