Sha256: 5608b16ac7b015dec26b912f94539916305877ab2e58364af459fc6295b94cc9

Contents?: true

Size: 1.57 KB

Versions: 209

Compression:

Stored size: 1.57 KB

Contents

module Aws
  module Plugins

    class S3IADRegionalEndpoint < Seahorse::Client::Plugin

      option(:s3_us_east_1_regional_endpoint,
        default: 'legacy',
        doc_type: String,
        docstring: <<-DOCS) do |cfg|
Passing in `regional` to enable regional endpoint for S3's `us-east-1`
region. Defaults to `legacy` mode using global endpoint.
        DOCS
        resolve_iad_regional_endpoint(cfg)
      end

      def add_handlers(handlers, config)
        if config.region == 'us-east-1'
          handlers.add(Handler)
        end
      end

      # @api private
      class Handler < Seahorse::Client::Handler

        def call(context)
          # keep legacy global endpoint pattern by default
          if context.config.s3_us_east_1_regional_endpoint == 'legacy'
            context.http_request.endpoint.host = S3IADRegionalEndpoint.legacy_host(
              context.http_request.endpoint.host)
          end
          @handler.call(context)
        end

      end

      def self.legacy_host(host)
        host.sub(".us-east-1", '')
      end

      private

      def self.resolve_iad_regional_endpoint(cfg)
        mode = ENV['AWS_S3_US_EAST_1_REGIONAL_ENDPOINT'] ||
          Aws.shared_config.s3_us_east_1_regional_endpoint(profile: cfg.profile) ||
          'legacy'
        mode.downcase!
        unless %w(legacy regional).include?(mode)
          raise ArgumentError, "expected :s3_us_east_1_regional_endpoint or"\
            " ENV['AWS_S3_US_EAST_1_REGIONAL_ENDPOINT'] to be `legacy` or"\
            " `regional`."
        end
        mode
      end

    end

  end
end

Version data entries

209 entries across 209 versions & 1 rubygems

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