Sha256: 4ce74da05b7ab687bc09571adada01e1e4112db135c68fbf33a4fc3984f93cb5

Contents?: true

Size: 1.2 KB

Versions: 48

Compression:

Stored size: 1.2 KB

Contents

# frozen_string_literal: true

require 'set'

module Aws
  module S3
    # @api private
    class ExpressCredentials
      include CredentialProvider
      include RefreshingCredentials

      SYNC_EXPIRATION_LENGTH = 60 # 1 minute
      ASYNC_EXPIRATION_LENGTH = 120 # 2 minutes

      def initialize(options = {})
        @client = options[:client]
        @create_session_params = {}
        options.each_pair do |key, value|
          if self.class.create_session_options.include?(key)
            @create_session_params[key] = value
          end
        end
        @async_refresh = true
        super
      end

      # @return [S3::Client]
      attr_reader :client

      private

      def refresh
        c = @client.create_session(@create_session_params).credentials
        @credentials = Credentials.new(
          c.access_key_id,
          c.secret_access_key,
          c.session_token
        )
        @expiration = c.expiration
      end

      class << self

        # @api private
        def create_session_options
          @cso ||= begin
            input = S3::Client.api.operation(:create_session).input
            Set.new(input.shape.member_names)
          end
        end

      end
    end
  end
end

Version data entries

48 entries across 48 versions & 1 rubygems

Version Path
aws-sdk-s3-1.182.0 lib/aws-sdk-s3/express_credentials.rb
aws-sdk-s3-1.181.0 lib/aws-sdk-s3/express_credentials.rb
aws-sdk-s3-1.180.0 lib/aws-sdk-s3/express_credentials.rb
aws-sdk-s3-1.179.0 lib/aws-sdk-s3/express_credentials.rb
aws-sdk-s3-1.178.0 lib/aws-sdk-s3/express_credentials.rb
aws-sdk-s3-1.177.0 lib/aws-sdk-s3/express_credentials.rb
aws-sdk-s3-1.176.1 lib/aws-sdk-s3/express_credentials.rb
aws-sdk-s3-1.176.0 lib/aws-sdk-s3/express_credentials.rb
aws-sdk-s3-1.175.0 lib/aws-sdk-s3/express_credentials.rb
aws-sdk-s3-1.174.0 lib/aws-sdk-s3/express_credentials.rb
aws-sdk-s3-1.173.0 lib/aws-sdk-s3/express_credentials.rb
aws-sdk-s3-1.172.0 lib/aws-sdk-s3/express_credentials.rb
aws-sdk-s3-1.171.0 lib/aws-sdk-s3/express_credentials.rb
aws-sdk-s3-1.170.1 lib/aws-sdk-s3/express_credentials.rb
aws-sdk-s3-1.170.0 lib/aws-sdk-s3/express_credentials.rb
aws-sdk-s3-1.169.0 lib/aws-sdk-s3/express_credentials.rb
aws-sdk-s3-1.168.0 lib/aws-sdk-s3/express_credentials.rb
aws-sdk-s3-1.167.0 lib/aws-sdk-s3/express_credentials.rb
aws-sdk-s3-1.166.0 lib/aws-sdk-s3/express_credentials.rb
aws-sdk-s3-1.165.0 lib/aws-sdk-s3/express_credentials.rb