Sha256: 71d9049219e14eb932008ce0ddaa53163f8353e82db484a949a4c5540093a4b2

Contents?: true

Size: 1.64 KB

Versions: 455

Compression:

Stored size: 1.64 KB

Contents

module Aws
  module Plugins
    # @api private
    class S3ControlDualstack < Seahorse::Client::Plugin
      option(:use_dualstack_endpoint, false)

        def add_handlers(handlers, config)
          handlers.add(OptionHandler, step: :initialize)
          handlers.add(DualstackHandler, step: :build, priority: 2)
        end

        # @api private
        class OptionHandler < Seahorse::Client::Handler
          def call(context)
            dualstack = context.params.delete(:use_dualstack_endpoint)
            dualstack = context.config.use_dualstack_endpoint if dualstack.nil?
            context[:use_dualstack_endpoint] = dualstack
            @handler.call(context)
          end
        end

        # @api private
        class DualstackHandler < Seahorse::Client::Handler
          def call(context)
            apply_dualstack_endpoint(context) if use_dualstack_endpoint?(context)
            @handler.call(context)
          end

          private
          def apply_dualstack_endpoint(context)
            bucket_name = context.params[:bucket]
            region = context.config.region
            dns_suffix = EndpointProvider.dns_suffix_for(region)
            host = "s3-control.dualstack.#{region}.#{dns_suffix}"
            endpoint = URI.parse(context.http_request.endpoint.to_s)
            endpoint.scheme = context.http_request.endpoint.scheme
            endpoint.port = context.http_request.endpoint.port
            endpoint.host = host
            context.http_request.endpoint = endpoint.to_s
          end

          def use_dualstack_endpoint?(context)
            context[:use_dualstack_endpoint]
          end
        end
    end
  end
end

Version data entries

455 entries across 455 versions & 1 rubygems

Version Path
aws-sdk-core-2.11.632 lib/aws-sdk-core/plugins/s3_control_dualstack.rb
aws-sdk-core-2.11.631 lib/aws-sdk-core/plugins/s3_control_dualstack.rb
aws-sdk-core-2.11.630 lib/aws-sdk-core/plugins/s3_control_dualstack.rb
aws-sdk-core-2.11.629 lib/aws-sdk-core/plugins/s3_control_dualstack.rb
aws-sdk-core-2.11.628 lib/aws-sdk-core/plugins/s3_control_dualstack.rb
aws-sdk-core-2.11.627 lib/aws-sdk-core/plugins/s3_control_dualstack.rb
aws-sdk-core-2.11.626 lib/aws-sdk-core/plugins/s3_control_dualstack.rb
aws-sdk-core-2.11.625 lib/aws-sdk-core/plugins/s3_control_dualstack.rb
aws-sdk-core-2.11.624 lib/aws-sdk-core/plugins/s3_control_dualstack.rb
aws-sdk-core-2.11.623 lib/aws-sdk-core/plugins/s3_control_dualstack.rb
aws-sdk-core-2.11.622 lib/aws-sdk-core/plugins/s3_control_dualstack.rb
aws-sdk-core-2.11.621 lib/aws-sdk-core/plugins/s3_control_dualstack.rb
aws-sdk-core-2.11.620 lib/aws-sdk-core/plugins/s3_control_dualstack.rb
aws-sdk-core-2.11.619 lib/aws-sdk-core/plugins/s3_control_dualstack.rb
aws-sdk-core-2.11.618 lib/aws-sdk-core/plugins/s3_control_dualstack.rb
aws-sdk-core-2.11.617 lib/aws-sdk-core/plugins/s3_control_dualstack.rb
aws-sdk-core-2.11.616 lib/aws-sdk-core/plugins/s3_control_dualstack.rb
aws-sdk-core-2.11.615 lib/aws-sdk-core/plugins/s3_control_dualstack.rb
aws-sdk-core-2.11.614 lib/aws-sdk-core/plugins/s3_control_dualstack.rb
aws-sdk-core-2.11.613 lib/aws-sdk-core/plugins/s3_control_dualstack.rb