Sha256: 4c5c3aac5808e89235906bc77e77a07e5ca504ce43c10e517935d02cee74670e

Contents?: true

Size: 1.5 KB

Versions: 46

Compression:

Stored size: 1.5 KB

Contents

module AwsAssumeRole::Vendored::Aws
    # Base class used credential classes that can be refreshed. This
    # provides basic refresh logic in a thread-safe manor. Classes mixing in
    # this module are expected to implement a #refresh method that populates
    # the following instance variables:
    #
    # * `@access_key_id`
    # * `@secret_access_key`
    # * `@session_token`
    # * `@expiration`
    #
    # @api private
    module RefreshingCredentials
        def initialize(_options = {})
            @mutex = Mutex.new
            refresh
      end

        # @return [Credentials]
        def credentials
            refresh_if_near_expiration
            @credentials
        end

        # @return [Time,nil]
        def expiration
            refresh_if_near_expiration
            @expiration
        end

        # Refresh credentials.
        # @return [void]
        def refresh!
            @mutex.synchronize { refresh }
        end

        private

        # Refreshes instance metadata credentials if they are within
        # 5 minutes of expiration.
        def refresh_if_near_expiration
            if near_expiration?
                @mutex.synchronize do
                    refresh if near_expiration?
                end
            end
        end

        def near_expiration?
            if @expiration
                # are we within 5 minutes of expiration?
                (Time.now.to_i + 5 * 60) > @expiration.to_i
            else
                true
            end
        end
      end
end

Version data entries

46 entries across 46 versions & 1 rubygems

Version Path
aws_assume_role-1.2.3-universal-freebsd lib/aws_assume_role/vendored/aws/refreshing_credentials.rb
aws_assume_role-1.2.3-universal-darwin lib/aws_assume_role/vendored/aws/refreshing_credentials.rb
aws_assume_role-1.2.3-universal-linux lib/aws_assume_role/vendored/aws/refreshing_credentials.rb
aws_assume_role-1.2.3-universal-openbsd lib/aws_assume_role/vendored/aws/refreshing_credentials.rb
aws_assume_role-1.2.3 lib/aws_assume_role/vendored/aws/refreshing_credentials.rb
aws_assume_role-1.2.3-linux lib/aws_assume_role/vendored/aws/refreshing_credentials.rb
aws_assume_role-1.2.2-universal-darwin lib/aws_assume_role/vendored/aws/refreshing_credentials.rb
aws_assume_role-1.2.2-universal-linux lib/aws_assume_role/vendored/aws/refreshing_credentials.rb
aws_assume_role-1.2.2-linux lib/aws_assume_role/vendored/aws/refreshing_credentials.rb
aws_assume_role-1.2.2-universal-openbsd lib/aws_assume_role/vendored/aws/refreshing_credentials.rb
aws_assume_role-1.2.2-universal-freebsd lib/aws_assume_role/vendored/aws/refreshing_credentials.rb
aws_assume_role-1.2.2 lib/aws_assume_role/vendored/aws/refreshing_credentials.rb
aws_assume_role-1.2.1 lib/aws_assume_role/vendored/aws/refreshing_credentials.rb
aws_assume_role-1.2.1-linux lib/aws_assume_role/vendored/aws/refreshing_credentials.rb
aws_assume_role-1.2.1-universal-openbsd lib/aws_assume_role/vendored/aws/refreshing_credentials.rb
aws_assume_role-1.2.1-universal-darwin lib/aws_assume_role/vendored/aws/refreshing_credentials.rb
aws_assume_role-1.2.1-universal-freebsd lib/aws_assume_role/vendored/aws/refreshing_credentials.rb
aws_assume_role-1.2.1-universal-linux lib/aws_assume_role/vendored/aws/refreshing_credentials.rb
aws_assume_role-1.2.0 lib/aws_assume_role/vendored/aws/refreshing_credentials.rb
aws_assume_role-1.2.0-linux lib/aws_assume_role/vendored/aws/refreshing_credentials.rb