Sha256: 000d73c1178b4f417a9d1d3ec05e79ca47567b2111f4577c70207e797838e04d

Contents?: true

Size: 908 Bytes

Versions: 7

Compression:

Stored size: 908 Bytes

Contents

require_relative 'auth_strategy'
require_relative './../credential/auth_type'
require 'jwt'
module Twilio
  module REST
    class TokenAuthStrategy < AuthStrategy
      attr_accessor :token_manager, :token, :lock

      def initialize(token_manager)
        super(AuthType::ORGS_TOKEN)
        @token = nil
        @token_manager = token_manager
        @lock = Mutex.new
      end

      def auth_string
        token = fetch_token
        "Bearer #{token}"
      end

      def fetch_token
        @lock.synchronize do
          @token = @token_manager.fetch_access_token if @token.nil? || token_expired? || @token == ''
          return @token
        end
      end

      def token_expired?
        decoded_token = ::JWT.decode(@token, nil, false)
        exp = decoded_token[0]['exp']
        Time.at(exp) < Time.now
      end

      def requires_authentication
        true
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
twilio-ruby-7.5.0 lib/twilio-ruby/auth_strategy/token_auth_strategy.rb
twilio-ruby-7.4.5 lib/twilio-ruby/auth_strategy/token_auth_strategy.rb
twilio-ruby-7.4.4 lib/twilio-ruby/auth_strategy/token_auth_strategy.rb
twilio-ruby-7.4.3 lib/twilio-ruby/auth_strategy/token_auth_strategy.rb
twilio-ruby-7.4.2 lib/twilio-ruby/auth_strategy/token_auth_strategy.rb
twilio-ruby-7.4.1 lib/twilio-ruby/auth_strategy/token_auth_strategy.rb
twilio-ruby-7.4.0 lib/twilio-ruby/auth_strategy/token_auth_strategy.rb