mirror of
https://github.com/GoogleContainerTools/kaniko
synced 2026-10-09 11:06:20 +02:00
chore(deps): bump github.com/aws/aws-sdk-go-v2/feature/s3/manager (#2861)
Bumps [github.com/aws/aws-sdk-go-v2/feature/s3/manager](https://github.com/aws/aws-sdk-go-v2) from 1.13.1 to 1.14.0. - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/v1.14.0/CHANGELOG.md) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.13.1...v1.14.0) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/feature/s3/manager dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This commit is contained in:
+1
-1
@@ -3,4 +3,4 @@
|
||||
package aws
|
||||
|
||||
// goModuleVersion is the tagged release for this module
|
||||
const goModuleVersion = "1.22.2"
|
||||
const goModuleVersion = "1.23.0"
|
||||
|
||||
+13
-1
@@ -65,6 +65,9 @@ func GetServiceID(ctx context.Context) (v string) {
|
||||
//
|
||||
// Scoped to stack values. Use github.com/aws/smithy-go/middleware#ClearStackValues
|
||||
// to clear all stack values.
|
||||
//
|
||||
// Deprecated: This value is unstable. The resolved signing name is available
|
||||
// in the signer properties object passed to the signer.
|
||||
func GetSigningName(ctx context.Context) (v string) {
|
||||
v, _ = middleware.GetStackValue(ctx, signingNameKey{}).(string)
|
||||
return v
|
||||
@@ -74,6 +77,9 @@ func GetSigningName(ctx context.Context) (v string) {
|
||||
//
|
||||
// Scoped to stack values. Use github.com/aws/smithy-go/middleware#ClearStackValues
|
||||
// to clear all stack values.
|
||||
//
|
||||
// Deprecated: This value is unstable. The resolved signing region is available
|
||||
// in the signer properties object passed to the signer.
|
||||
func GetSigningRegion(ctx context.Context) (v string) {
|
||||
v, _ = middleware.GetStackValue(ctx, signingRegionKey{}).(string)
|
||||
return v
|
||||
@@ -125,10 +131,13 @@ func SetRequiresLegacyEndpoints(ctx context.Context, value bool) context.Context
|
||||
return middleware.WithStackValue(ctx, requiresLegacyEndpointsKey{}, value)
|
||||
}
|
||||
|
||||
// SetSigningName set or modifies the signing name on the context.
|
||||
// SetSigningName set or modifies the sigv4 or sigv4a signing name on the context.
|
||||
//
|
||||
// Scoped to stack values. Use github.com/aws/smithy-go/middleware#ClearStackValues
|
||||
// to clear all stack values.
|
||||
//
|
||||
// Deprecated: This value is unstable. Use WithSigV4SigningName client option
|
||||
// funcs instead.
|
||||
func SetSigningName(ctx context.Context, value string) context.Context {
|
||||
return middleware.WithStackValue(ctx, signingNameKey{}, value)
|
||||
}
|
||||
@@ -137,6 +146,9 @@ func SetSigningName(ctx context.Context, value string) context.Context {
|
||||
//
|
||||
// Scoped to stack values. Use github.com/aws/smithy-go/middleware#ClearStackValues
|
||||
// to clear all stack values.
|
||||
//
|
||||
// Deprecated: This value is unstable. Use WithSigV4SigningRegion client option
|
||||
// funcs instead.
|
||||
func SetSigningRegion(ctx context.Context, value string) context.Context {
|
||||
return middleware.WithStackValue(ctx, signingRegionKey{}, value)
|
||||
}
|
||||
|
||||
+4
@@ -1,3 +1,7 @@
|
||||
# v1.5.1 (2023-11-15)
|
||||
|
||||
* No change notes available for this release.
|
||||
|
||||
# v1.5.0 (2023-10-31)
|
||||
|
||||
* **Feature**: **BREAKING CHANGE**: Bump minimum go version to 1.19 per the revised [go version support policy](https://aws.amazon.com/blogs/developer/aws-sdk-for-go-aligns-with-go-release-policy-on-supported-runtimes/).
|
||||
|
||||
Generated
Vendored
+1
-1
@@ -3,4 +3,4 @@
|
||||
package eventstream
|
||||
|
||||
// goModuleVersion is the tagged release for this module
|
||||
const goModuleVersion = "1.5.0"
|
||||
const goModuleVersion = "1.5.1"
|
||||
|
||||
+41
-54
@@ -58,7 +58,7 @@ func (e *SigningError) Unwrap() error {
|
||||
// S3 PutObject API allows unsigned payload signing auth usage when TLS is enabled, and uses this middleware to
|
||||
// dynamically switch between unsigned and signed payload based on TLS state for request.
|
||||
func UseDynamicPayloadSigningMiddleware(stack *middleware.Stack) error {
|
||||
_, err := stack.Build.Swap(computePayloadHashMiddlewareID, &dynamicPayloadSigningMiddleware{})
|
||||
_, err := stack.Finalize.Swap(computePayloadHashMiddlewareID, &dynamicPayloadSigningMiddleware{})
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -71,24 +71,22 @@ func (m *dynamicPayloadSigningMiddleware) ID() string {
|
||||
return computePayloadHashMiddlewareID
|
||||
}
|
||||
|
||||
// HandleBuild sets a resolver that directs to the payload sha256 compute handler.
|
||||
func (m *dynamicPayloadSigningMiddleware) HandleBuild(
|
||||
ctx context.Context, in middleware.BuildInput, next middleware.BuildHandler,
|
||||
// HandleFinalize delegates SHA256 computation according to whether the request
|
||||
// is TLS-enabled.
|
||||
func (m *dynamicPayloadSigningMiddleware) HandleFinalize(
|
||||
ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler,
|
||||
) (
|
||||
out middleware.BuildOutput, metadata middleware.Metadata, err error,
|
||||
out middleware.FinalizeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
// if TLS is enabled, use unsigned payload when supported
|
||||
if req.IsHTTPS() {
|
||||
return (&unsignedPayload{}).HandleBuild(ctx, in, next)
|
||||
return (&unsignedPayload{}).HandleFinalize(ctx, in, next)
|
||||
}
|
||||
|
||||
// else fall back to signed payload
|
||||
return (&computePayloadSHA256{}).HandleBuild(ctx, in, next)
|
||||
return (&computePayloadSHA256{}).HandleFinalize(ctx, in, next)
|
||||
}
|
||||
|
||||
// unsignedPayload sets the SigV4 request payload hash to unsigned.
|
||||
@@ -104,7 +102,7 @@ type unsignedPayload struct{}
|
||||
// AddUnsignedPayloadMiddleware adds unsignedPayload to the operation
|
||||
// middleware stack
|
||||
func AddUnsignedPayloadMiddleware(stack *middleware.Stack) error {
|
||||
return stack.Build.Add(&unsignedPayload{}, middleware.After)
|
||||
return stack.Finalize.Insert(&unsignedPayload{}, "ResolveEndpointV2", middleware.After)
|
||||
}
|
||||
|
||||
// ID returns the unsignedPayload identifier
|
||||
@@ -112,23 +110,16 @@ func (m *unsignedPayload) ID() string {
|
||||
return computePayloadHashMiddlewareID
|
||||
}
|
||||
|
||||
// HandleBuild sets the payload hash to be an unsigned payload
|
||||
func (m *unsignedPayload) HandleBuild(
|
||||
ctx context.Context, in middleware.BuildInput, next middleware.BuildHandler,
|
||||
// HandleFinalize sets the payload hash magic value to the unsigned sentinel.
|
||||
func (m *unsignedPayload) HandleFinalize(
|
||||
ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler,
|
||||
) (
|
||||
out middleware.BuildOutput, metadata middleware.Metadata, err error,
|
||||
out middleware.FinalizeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
// This should not compute the content SHA256 if the value is already
|
||||
// known. (e.g. application pre-computed SHA256 before making API call).
|
||||
// Does not have any tight coupling to the X-Amz-Content-Sha256 header, if
|
||||
// that header is provided a middleware must translate it into the context.
|
||||
contentSHA := GetPayloadHash(ctx)
|
||||
if len(contentSHA) == 0 {
|
||||
contentSHA = v4Internal.UnsignedPayload
|
||||
if GetPayloadHash(ctx) == "" {
|
||||
ctx = SetPayloadHash(ctx, v4Internal.UnsignedPayload)
|
||||
}
|
||||
|
||||
ctx = SetPayloadHash(ctx, contentSHA)
|
||||
return next.HandleBuild(ctx, in)
|
||||
return next.HandleFinalize(ctx, in)
|
||||
}
|
||||
|
||||
// computePayloadSHA256 computes SHA256 payload hash to sign.
|
||||
@@ -144,13 +135,13 @@ type computePayloadSHA256 struct{}
|
||||
// AddComputePayloadSHA256Middleware adds computePayloadSHA256 to the
|
||||
// operation middleware stack
|
||||
func AddComputePayloadSHA256Middleware(stack *middleware.Stack) error {
|
||||
return stack.Build.Add(&computePayloadSHA256{}, middleware.After)
|
||||
return stack.Finalize.Insert(&computePayloadSHA256{}, "ResolveEndpointV2", middleware.After)
|
||||
}
|
||||
|
||||
// RemoveComputePayloadSHA256Middleware removes computePayloadSHA256 from the
|
||||
// operation middleware stack
|
||||
func RemoveComputePayloadSHA256Middleware(stack *middleware.Stack) error {
|
||||
_, err := stack.Build.Remove(computePayloadHashMiddlewareID)
|
||||
_, err := stack.Finalize.Remove(computePayloadHashMiddlewareID)
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -159,12 +150,17 @@ func (m *computePayloadSHA256) ID() string {
|
||||
return computePayloadHashMiddlewareID
|
||||
}
|
||||
|
||||
// HandleBuild compute the payload hash for the request payload
|
||||
func (m *computePayloadSHA256) HandleBuild(
|
||||
ctx context.Context, in middleware.BuildInput, next middleware.BuildHandler,
|
||||
// HandleFinalize computes the payload hash for the request, storing it to the
|
||||
// context. This is a no-op if a caller has previously set that value.
|
||||
func (m *computePayloadSHA256) HandleFinalize(
|
||||
ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler,
|
||||
) (
|
||||
out middleware.BuildOutput, metadata middleware.Metadata, err error,
|
||||
out middleware.FinalizeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if GetPayloadHash(ctx) != "" {
|
||||
return next.HandleFinalize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, &HashComputationError{
|
||||
@@ -172,14 +168,6 @@ func (m *computePayloadSHA256) HandleBuild(
|
||||
}
|
||||
}
|
||||
|
||||
// This should not compute the content SHA256 if the value is already
|
||||
// known. (e.g. application pre-computed SHA256 before making API call)
|
||||
// Does not have any tight coupling to the X-Amz-Content-Sha256 header, if
|
||||
// that header is provided a middleware must translate it into the context.
|
||||
if contentSHA := GetPayloadHash(ctx); len(contentSHA) != 0 {
|
||||
return next.HandleBuild(ctx, in)
|
||||
}
|
||||
|
||||
hash := sha256.New()
|
||||
if stream := req.GetStream(); stream != nil {
|
||||
_, err = io.Copy(hash, stream)
|
||||
@@ -198,7 +186,7 @@ func (m *computePayloadSHA256) HandleBuild(
|
||||
|
||||
ctx = SetPayloadHash(ctx, hex.EncodeToString(hash.Sum(nil)))
|
||||
|
||||
return next.HandleBuild(ctx, in)
|
||||
return next.HandleFinalize(ctx, in)
|
||||
}
|
||||
|
||||
// SwapComputePayloadSHA256ForUnsignedPayloadMiddleware replaces the
|
||||
@@ -207,7 +195,7 @@ func (m *computePayloadSHA256) HandleBuild(
|
||||
// Use this to disable computing the Payload SHA256 checksum and instead use
|
||||
// UNSIGNED-PAYLOAD for the SHA256 value.
|
||||
func SwapComputePayloadSHA256ForUnsignedPayloadMiddleware(stack *middleware.Stack) error {
|
||||
_, err := stack.Build.Swap(computePayloadHashMiddlewareID, &unsignedPayload{})
|
||||
_, err := stack.Finalize.Swap(computePayloadHashMiddlewareID, &unsignedPayload{})
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -218,13 +206,13 @@ type contentSHA256Header struct{}
|
||||
// AddContentSHA256HeaderMiddleware adds ContentSHA256Header to the
|
||||
// operation middleware stack
|
||||
func AddContentSHA256HeaderMiddleware(stack *middleware.Stack) error {
|
||||
return stack.Build.Insert(&contentSHA256Header{}, computePayloadHashMiddlewareID, middleware.After)
|
||||
return stack.Finalize.Insert(&contentSHA256Header{}, computePayloadHashMiddlewareID, middleware.After)
|
||||
}
|
||||
|
||||
// RemoveContentSHA256HeaderMiddleware removes contentSHA256Header middleware
|
||||
// from the operation middleware stack
|
||||
func RemoveContentSHA256HeaderMiddleware(stack *middleware.Stack) error {
|
||||
_, err := stack.Build.Remove((*contentSHA256Header)(nil).ID())
|
||||
_, err := stack.Finalize.Remove((*contentSHA256Header)(nil).ID())
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -233,12 +221,12 @@ func (m *contentSHA256Header) ID() string {
|
||||
return "SigV4ContentSHA256Header"
|
||||
}
|
||||
|
||||
// HandleBuild sets the X-Amz-Content-Sha256 header value to the Payload hash
|
||||
// HandleFinalize sets the X-Amz-Content-Sha256 header value to the Payload hash
|
||||
// stored in the context.
|
||||
func (m *contentSHA256Header) HandleBuild(
|
||||
ctx context.Context, in middleware.BuildInput, next middleware.BuildHandler,
|
||||
func (m *contentSHA256Header) HandleFinalize(
|
||||
ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler,
|
||||
) (
|
||||
out middleware.BuildOutput, metadata middleware.Metadata, err error,
|
||||
out middleware.FinalizeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
@@ -246,8 +234,7 @@ func (m *contentSHA256Header) HandleBuild(
|
||||
}
|
||||
|
||||
req.Header.Set(v4Internal.ContentSHAKey, GetPayloadHash(ctx))
|
||||
|
||||
return next.HandleBuild(ctx, in)
|
||||
return next.HandleFinalize(ctx, in)
|
||||
}
|
||||
|
||||
// SignHTTPRequestMiddlewareOptions is the configuration options for the SignHTTPRequestMiddleware middleware.
|
||||
@@ -332,17 +319,17 @@ type streamingEventsPayload struct{}
|
||||
|
||||
// AddStreamingEventsPayload adds the streamingEventsPayload middleware to the stack.
|
||||
func AddStreamingEventsPayload(stack *middleware.Stack) error {
|
||||
return stack.Build.Add(&streamingEventsPayload{}, middleware.After)
|
||||
return stack.Finalize.Add(&streamingEventsPayload{}, middleware.Before)
|
||||
}
|
||||
|
||||
func (s *streamingEventsPayload) ID() string {
|
||||
return computePayloadHashMiddlewareID
|
||||
}
|
||||
|
||||
func (s *streamingEventsPayload) HandleBuild(
|
||||
ctx context.Context, in middleware.BuildInput, next middleware.BuildHandler,
|
||||
func (s *streamingEventsPayload) HandleFinalize(
|
||||
ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler,
|
||||
) (
|
||||
out middleware.BuildOutput, metadata middleware.Metadata, err error,
|
||||
out middleware.FinalizeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
contentSHA := GetPayloadHash(ctx)
|
||||
if len(contentSHA) == 0 {
|
||||
@@ -351,7 +338,7 @@ func (s *streamingEventsPayload) HandleBuild(
|
||||
|
||||
ctx = SetPayloadHash(ctx, contentSHA)
|
||||
|
||||
return next.HandleBuild(ctx, in)
|
||||
return next.HandleFinalize(ctx, in)
|
||||
}
|
||||
|
||||
// GetSignedRequestSignature attempts to extract the signature of the request.
|
||||
|
||||
+17
@@ -1,3 +1,20 @@
|
||||
# v1.25.3 (2023-11-17)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.25.2 (2023-11-16)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.25.1 (2023-11-15)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.25.0 (2023-11-14)
|
||||
|
||||
* **Feature**: Add support for dynamic auth token from file and EKS container host in absolute/relative URIs in the HTTP credential provider.
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.24.0 (2023-11-13)
|
||||
|
||||
* **Feature**: Replace the legacy config parser with a modern, less-strict implementation. Parsing failures within a section will now simply ignore the invalid line rather than silently drop the entire section.
|
||||
|
||||
+1
-1
@@ -3,4 +3,4 @@
|
||||
package config
|
||||
|
||||
// goModuleVersion is the tagged release for this module
|
||||
const goModuleVersion = "1.24.0"
|
||||
const goModuleVersion = "1.25.3"
|
||||
|
||||
-1
@@ -27,7 +27,6 @@ func resolveDefaultAWSConfig(ctx context.Context, cfg *aws.Config, cfgs configs)
|
||||
}
|
||||
|
||||
*cfg = aws.Config{
|
||||
Credentials: aws.AnonymousCredentials{},
|
||||
Logger: logging.NewStandardLogger(os.Stderr),
|
||||
ConfigSources: sources,
|
||||
}
|
||||
|
||||
+74
-7
@@ -3,7 +3,10 @@ package config
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"net"
|
||||
"net/url"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
@@ -21,11 +24,33 @@ import (
|
||||
|
||||
const (
|
||||
// valid credential source values
|
||||
credSourceEc2Metadata = "Ec2InstanceMetadata"
|
||||
credSourceEnvironment = "Environment"
|
||||
credSourceECSContainer = "EcsContainer"
|
||||
credSourceEc2Metadata = "Ec2InstanceMetadata"
|
||||
credSourceEnvironment = "Environment"
|
||||
credSourceECSContainer = "EcsContainer"
|
||||
httpProviderAuthFileEnvVar = "AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE"
|
||||
)
|
||||
|
||||
// direct representation of the IPv4 address for the ECS container
|
||||
// "169.254.170.2"
|
||||
var ecsContainerIPv4 net.IP = []byte{
|
||||
169, 254, 170, 2,
|
||||
}
|
||||
|
||||
// direct representation of the IPv4 address for the EKS container
|
||||
// "169.254.170.23"
|
||||
var eksContainerIPv4 net.IP = []byte{
|
||||
169, 254, 170, 23,
|
||||
}
|
||||
|
||||
// direct representation of the IPv6 address for the EKS container
|
||||
// "fd00:ec2::23"
|
||||
var eksContainerIPv6 net.IP = []byte{
|
||||
0xFD, 0, 0xE, 0xC2,
|
||||
0, 0, 0, 0,
|
||||
0, 0, 0, 0,
|
||||
0, 0, 0, 0x23,
|
||||
}
|
||||
|
||||
var (
|
||||
ecsContainerEndpoint = "http://169.254.170.2" // not constant to allow for swapping during unit-testing
|
||||
)
|
||||
@@ -222,6 +247,36 @@ func processCredentials(ctx context.Context, cfg *aws.Config, sharedConfig *Shar
|
||||
return nil
|
||||
}
|
||||
|
||||
// isAllowedHost allows host to be loopback or known ECS/EKS container IPs
|
||||
//
|
||||
// host can either be an IP address OR an unresolved hostname - resolution will
|
||||
// be automatically performed in the latter case
|
||||
func isAllowedHost(host string) (bool, error) {
|
||||
if ip := net.ParseIP(host); ip != nil {
|
||||
return isIPAllowed(ip), nil
|
||||
}
|
||||
|
||||
addrs, err := lookupHostFn(host)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
||||
for _, addr := range addrs {
|
||||
if ip := net.ParseIP(addr); ip == nil || !isIPAllowed(ip) {
|
||||
return false, nil
|
||||
}
|
||||
}
|
||||
|
||||
return true, nil
|
||||
}
|
||||
|
||||
func isIPAllowed(ip net.IP) bool {
|
||||
return ip.IsLoopback() ||
|
||||
ip.Equal(ecsContainerIPv4) ||
|
||||
ip.Equal(eksContainerIPv4) ||
|
||||
ip.Equal(eksContainerIPv6)
|
||||
}
|
||||
|
||||
func resolveLocalHTTPCredProvider(ctx context.Context, cfg *aws.Config, endpointURL, authToken string, configs configs) error {
|
||||
var resolveErr error
|
||||
|
||||
@@ -232,10 +287,12 @@ func resolveLocalHTTPCredProvider(ctx context.Context, cfg *aws.Config, endpoint
|
||||
host := parsed.Hostname()
|
||||
if len(host) == 0 {
|
||||
resolveErr = fmt.Errorf("unable to parse host from local HTTP cred provider URL")
|
||||
} else if isLoopback, loopbackErr := isLoopbackHost(host); loopbackErr != nil {
|
||||
resolveErr = fmt.Errorf("failed to resolve host %q, %v", host, loopbackErr)
|
||||
} else if !isLoopback {
|
||||
resolveErr = fmt.Errorf("invalid endpoint host, %q, only loopback hosts are allowed", host)
|
||||
} else if parsed.Scheme == "http" {
|
||||
if isAllowedHost, allowHostErr := isAllowedHost(host); allowHostErr != nil {
|
||||
resolveErr = fmt.Errorf("failed to resolve host %q, %v", host, allowHostErr)
|
||||
} else if !isAllowedHost {
|
||||
resolveErr = fmt.Errorf("invalid endpoint host, %q, only loopback/ecs/eks hosts are allowed", host)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -252,6 +309,16 @@ func resolveHTTPCredProvider(ctx context.Context, cfg *aws.Config, url, authToke
|
||||
if len(authToken) != 0 {
|
||||
options.AuthorizationToken = authToken
|
||||
}
|
||||
if authFilePath := os.Getenv(httpProviderAuthFileEnvVar); authFilePath != "" {
|
||||
options.AuthorizationTokenProvider = endpointcreds.TokenProviderFunc(func() (string, error) {
|
||||
var contents []byte
|
||||
var err error
|
||||
if contents, err = ioutil.ReadFile(authFilePath); err != nil {
|
||||
return "", fmt.Errorf("failed to read authorization token from %v: %v", authFilePath, err)
|
||||
}
|
||||
return string(contents), nil
|
||||
})
|
||||
}
|
||||
options.APIOptions = cfg.APIOptions
|
||||
if cfg.Retryer != nil {
|
||||
options.Retryer = cfg.Retryer()
|
||||
|
||||
+12
@@ -1,3 +1,15 @@
|
||||
# v1.16.2 (2023-11-17)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.16.1 (2023-11-15)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.16.0 (2023-11-14)
|
||||
|
||||
* **Feature**: Add support for dynamic auth token from file and EKS container host in absolute/relative URIs in the HTTP credential provider.
|
||||
|
||||
# v1.15.2 (2023-11-09)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
+57
-1
@@ -36,6 +36,7 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
"github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/internal/client"
|
||||
@@ -81,7 +82,37 @@ type Options struct {
|
||||
|
||||
// Optional authorization token value if set will be used as the value of
|
||||
// the Authorization header of the endpoint credential request.
|
||||
//
|
||||
// When constructed from environment, the provider will use the value of
|
||||
// AWS_CONTAINER_AUTHORIZATION_TOKEN environment variable as the token
|
||||
//
|
||||
// Will be overridden if AuthorizationTokenProvider is configured
|
||||
AuthorizationToken string
|
||||
|
||||
// Optional auth provider func to dynamically load the auth token from a file
|
||||
// everytime a credential is retrieved
|
||||
//
|
||||
// When constructed from environment, the provider will read and use the content
|
||||
// of the file pointed to by AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE environment variable
|
||||
// as the auth token everytime credentials are retrieved
|
||||
//
|
||||
// Will override AuthorizationToken if configured
|
||||
AuthorizationTokenProvider AuthTokenProvider
|
||||
}
|
||||
|
||||
// AuthTokenProvider defines an interface to dynamically load a value to be passed
|
||||
// for the Authorization header of a credentials request.
|
||||
type AuthTokenProvider interface {
|
||||
GetToken() (string, error)
|
||||
}
|
||||
|
||||
// TokenProviderFunc is a func type implementing AuthTokenProvider interface
|
||||
// and enables customizing token provider behavior
|
||||
type TokenProviderFunc func() (string, error)
|
||||
|
||||
// GetToken func retrieves auth token according to TokenProviderFunc implementation
|
||||
func (p TokenProviderFunc) GetToken() (string, error) {
|
||||
return p()
|
||||
}
|
||||
|
||||
// New returns a credentials Provider for retrieving AWS credentials
|
||||
@@ -132,5 +163,30 @@ func (p *Provider) Retrieve(ctx context.Context) (aws.Credentials, error) {
|
||||
}
|
||||
|
||||
func (p *Provider) getCredentials(ctx context.Context) (*client.GetCredentialsOutput, error) {
|
||||
return p.client.GetCredentials(ctx, &client.GetCredentialsInput{AuthorizationToken: p.options.AuthorizationToken})
|
||||
authToken, err := p.resolveAuthToken()
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("resolve auth token: %v", err)
|
||||
}
|
||||
|
||||
return p.client.GetCredentials(ctx, &client.GetCredentialsInput{
|
||||
AuthorizationToken: authToken,
|
||||
})
|
||||
}
|
||||
|
||||
func (p *Provider) resolveAuthToken() (string, error) {
|
||||
authToken := p.options.AuthorizationToken
|
||||
|
||||
var err error
|
||||
if p.options.AuthorizationTokenProvider != nil {
|
||||
authToken, err = p.options.AuthorizationTokenProvider.GetToken()
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
}
|
||||
|
||||
if strings.ContainsAny(authToken, "\r\n") {
|
||||
return "", fmt.Errorf("authorization token contains invalid newline sequence")
|
||||
}
|
||||
|
||||
return authToken, nil
|
||||
}
|
||||
|
||||
+1
-1
@@ -3,4 +3,4 @@
|
||||
package credentials
|
||||
|
||||
// goModuleVersion is the tagged release for this module
|
||||
const goModuleVersion = "1.15.2"
|
||||
const goModuleVersion = "1.16.2"
|
||||
|
||||
+4
@@ -1,3 +1,7 @@
|
||||
# v1.14.4 (2023-11-15)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.14.3 (2023-11-09)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
+1
-1
@@ -3,4 +3,4 @@
|
||||
package imds
|
||||
|
||||
// goModuleVersion is the tagged release for this module
|
||||
const goModuleVersion = "1.14.3"
|
||||
const goModuleVersion = "1.14.4"
|
||||
|
||||
+37
@@ -1,3 +1,40 @@
|
||||
# v1.14.0 (2023-11-17)
|
||||
|
||||
* **Feature**: **BREAKING CHANGE** Correct nullability of a large number of S3 structure fields. See https://github.com/aws/aws-sdk-go-v2/issues/2162.
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.13.9 (2023-11-16)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.13.8 (2023-11-15)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.13.7 (2023-11-14)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.13.6 (2023-11-13)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.13.5 (2023-11-09.2)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.13.4 (2023-11-09)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.13.3 (2023-11-07)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.13.2 (2023-11-06)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.13.1 (2023-11-02)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
-1
@@ -65,7 +65,6 @@ func GetBucketRegion(ctx context.Context, client HeadBucketAPIClient, bucket str
|
||||
|
||||
clientOptionFns := make([]func(*s3.Options), len(optFns)+1)
|
||||
clientOptionFns[0] = func(options *s3.Options) {
|
||||
options.Credentials = aws.AnonymousCredentials{}
|
||||
options.APIOptions = append(options.APIOptions, captureBucketRegion.RegisterMiddleware)
|
||||
}
|
||||
copy(clientOptionFns[1:], optFns)
|
||||
|
||||
+2
-2
@@ -436,8 +436,8 @@ func (d *downloader) setTotalBytes(resp *s3.GetObjectOutput) {
|
||||
if resp.ContentRange == nil {
|
||||
// ContentRange is nil when the full file contents is provided, and
|
||||
// is not chunked. Use ContentLength instead.
|
||||
if resp.ContentLength > 0 {
|
||||
d.totalBytes = resp.ContentLength
|
||||
if aws.ToInt64(resp.ContentLength) > 0 {
|
||||
d.totalBytes = aws.ToInt64(resp.ContentLength)
|
||||
return
|
||||
}
|
||||
} else {
|
||||
|
||||
+1
-1
@@ -3,4 +3,4 @@
|
||||
package manager
|
||||
|
||||
// goModuleVersion is the tagged release for this module
|
||||
const goModuleVersion = "1.13.1"
|
||||
const goModuleVersion = "1.14.0"
|
||||
|
||||
+9
-7
@@ -501,7 +501,7 @@ func (u *uploader) singlePart(r io.ReadSeeker, cleanup func()) (*UploadOutput, e
|
||||
return &UploadOutput{
|
||||
Location: locationRecorder.location,
|
||||
|
||||
BucketKeyEnabled: out.BucketKeyEnabled,
|
||||
BucketKeyEnabled: aws.ToBool(out.BucketKeyEnabled),
|
||||
ChecksumCRC32: out.ChecksumCRC32,
|
||||
ChecksumCRC32C: out.ChecksumCRC32C,
|
||||
ChecksumSHA1: out.ChecksumSHA1,
|
||||
@@ -568,9 +568,11 @@ type chunk struct {
|
||||
// since S3 required this list to be sent in sorted order.
|
||||
type completedParts []types.CompletedPart
|
||||
|
||||
func (a completedParts) Len() int { return len(a) }
|
||||
func (a completedParts) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
|
||||
func (a completedParts) Less(i, j int) bool { return a[i].PartNumber < a[j].PartNumber }
|
||||
func (a completedParts) Len() int { return len(a) }
|
||||
func (a completedParts) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
|
||||
func (a completedParts) Less(i, j int) bool {
|
||||
return aws.ToInt32(a[i].PartNumber) < aws.ToInt32(a[j].PartNumber)
|
||||
}
|
||||
|
||||
// upload will perform a multipart upload using the firstBuf buffer containing
|
||||
// the first chunk of data.
|
||||
@@ -639,7 +641,7 @@ func (u *multiuploader) upload(firstBuf io.ReadSeeker, cleanup func()) (*UploadO
|
||||
UploadID: u.uploadID,
|
||||
CompletedParts: u.parts,
|
||||
|
||||
BucketKeyEnabled: completeOut.BucketKeyEnabled,
|
||||
BucketKeyEnabled: aws.ToBool(completeOut.BucketKeyEnabled),
|
||||
ChecksumCRC32: completeOut.ChecksumCRC32,
|
||||
ChecksumCRC32C: completeOut.ChecksumCRC32C,
|
||||
ChecksumSHA1: completeOut.ChecksumSHA1,
|
||||
@@ -722,7 +724,7 @@ func (u *multiuploader) send(c chunk) error {
|
||||
// PutObject as they are never valid for individual parts of a
|
||||
// multipart upload.
|
||||
|
||||
PartNumber: c.num,
|
||||
PartNumber: aws.Int32(c.num),
|
||||
UploadId: &u.uploadID,
|
||||
}
|
||||
// TODO should do copy then clear?
|
||||
@@ -734,7 +736,7 @@ func (u *multiuploader) send(c chunk) error {
|
||||
|
||||
var completed types.CompletedPart
|
||||
awsutil.Copy(&completed, resp)
|
||||
completed.PartNumber = c.num
|
||||
completed.PartNumber = aws.Int32(c.num)
|
||||
|
||||
u.m.Lock()
|
||||
u.parts = append(u.parts, completed)
|
||||
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
package auth
|
||||
|
||||
import (
|
||||
"github.com/aws/smithy-go/auth"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
|
||||
// HTTPAuthScheme is the SDK's internal implementation of smithyhttp.AuthScheme
|
||||
// for pre-existing implementations where the signer was added to client
|
||||
// config. SDK clients will key off of this type and ensure per-operation
|
||||
// updates to those signers persist on the scheme itself.
|
||||
type HTTPAuthScheme struct {
|
||||
schemeID string
|
||||
signer smithyhttp.Signer
|
||||
}
|
||||
|
||||
var _ smithyhttp.AuthScheme = (*HTTPAuthScheme)(nil)
|
||||
|
||||
// NewHTTPAuthScheme returns an auth scheme instance with the given config.
|
||||
func NewHTTPAuthScheme(schemeID string, signer smithyhttp.Signer) *HTTPAuthScheme {
|
||||
return &HTTPAuthScheme{
|
||||
schemeID: schemeID,
|
||||
signer: signer,
|
||||
}
|
||||
}
|
||||
|
||||
// SchemeID identifies the auth scheme.
|
||||
func (s *HTTPAuthScheme) SchemeID() string {
|
||||
return s.schemeID
|
||||
}
|
||||
|
||||
// IdentityResolver gets the identity resolver for the auth scheme.
|
||||
func (s *HTTPAuthScheme) IdentityResolver(o auth.IdentityResolverOptions) auth.IdentityResolver {
|
||||
return o.GetIdentityResolver(s.schemeID)
|
||||
}
|
||||
|
||||
// Signer gets the signer for the auth scheme.
|
||||
func (s *HTTPAuthScheme) Signer() smithyhttp.Signer {
|
||||
return s.signer
|
||||
}
|
||||
|
||||
// WithSigner returns a new instance of the auth scheme with the updated signer.
|
||||
func (s *HTTPAuthScheme) WithSigner(signer smithyhttp.Signer) *HTTPAuthScheme {
|
||||
return NewHTTPAuthScheme(s.schemeID, signer)
|
||||
}
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
package smithy
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/aws/smithy-go"
|
||||
"github.com/aws/smithy-go/auth"
|
||||
"github.com/aws/smithy-go/auth/bearer"
|
||||
)
|
||||
|
||||
// BearerTokenAdapter adapts smithy bearer.Token to smithy auth.Identity.
|
||||
type BearerTokenAdapter struct {
|
||||
Token bearer.Token
|
||||
}
|
||||
|
||||
var _ auth.Identity = (*BearerTokenAdapter)(nil)
|
||||
|
||||
// Expiration returns the time of expiration for the token.
|
||||
func (v *BearerTokenAdapter) Expiration() time.Time {
|
||||
return v.Token.Expires
|
||||
}
|
||||
|
||||
// BearerTokenProviderAdapter adapts smithy bearer.TokenProvider to smithy
|
||||
// auth.IdentityResolver.
|
||||
type BearerTokenProviderAdapter struct {
|
||||
Provider bearer.TokenProvider
|
||||
}
|
||||
|
||||
var _ (auth.IdentityResolver) = (*BearerTokenProviderAdapter)(nil)
|
||||
|
||||
// GetIdentity retrieves a bearer token using the underlying provider.
|
||||
func (v *BearerTokenProviderAdapter) GetIdentity(ctx context.Context, _ smithy.Properties) (
|
||||
auth.Identity, error,
|
||||
) {
|
||||
token, err := v.Provider.RetrieveBearerToken(ctx)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("get token: %v", err)
|
||||
}
|
||||
|
||||
return &BearerTokenAdapter{Token: token}, nil
|
||||
}
|
||||
Generated
Vendored
+35
@@ -0,0 +1,35 @@
|
||||
package smithy
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/aws/smithy-go"
|
||||
"github.com/aws/smithy-go/auth"
|
||||
"github.com/aws/smithy-go/auth/bearer"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
|
||||
// BearerTokenSignerAdapter adapts smithy bearer.Signer to smithy http
|
||||
// auth.Signer.
|
||||
type BearerTokenSignerAdapter struct {
|
||||
Signer bearer.Signer
|
||||
}
|
||||
|
||||
var _ (smithyhttp.Signer) = (*BearerTokenSignerAdapter)(nil)
|
||||
|
||||
// SignRequest signs the request with the provided bearer token.
|
||||
func (v *BearerTokenSignerAdapter) SignRequest(ctx context.Context, r *smithyhttp.Request, identity auth.Identity, _ smithy.Properties) error {
|
||||
ca, ok := identity.(*BearerTokenAdapter)
|
||||
if !ok {
|
||||
return fmt.Errorf("unexpected identity type: %T", identity)
|
||||
}
|
||||
|
||||
signed, err := v.Signer.SignWithBearerToken(ctx, ca.Token, r)
|
||||
if err != nil {
|
||||
return fmt.Errorf("sign request: %v", err)
|
||||
}
|
||||
|
||||
*r = *signed.(*smithyhttp.Request)
|
||||
return nil
|
||||
}
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
package smithy
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
"github.com/aws/smithy-go"
|
||||
"github.com/aws/smithy-go/auth"
|
||||
)
|
||||
|
||||
// CredentialsAdapter adapts aws.Credentials to auth.Identity.
|
||||
type CredentialsAdapter struct {
|
||||
Credentials aws.Credentials
|
||||
}
|
||||
|
||||
var _ auth.Identity = (*CredentialsAdapter)(nil)
|
||||
|
||||
// Expiration returns the time of expiration for the credentials.
|
||||
func (v *CredentialsAdapter) Expiration() time.Time {
|
||||
return v.Credentials.Expires
|
||||
}
|
||||
|
||||
// CredentialsProviderAdapter adapts aws.CredentialsProvider to auth.IdentityResolver.
|
||||
type CredentialsProviderAdapter struct {
|
||||
Provider aws.CredentialsProvider
|
||||
}
|
||||
|
||||
var _ (auth.IdentityResolver) = (*CredentialsProviderAdapter)(nil)
|
||||
|
||||
// GetIdentity retrieves AWS credentials using the underlying provider.
|
||||
func (v *CredentialsProviderAdapter) GetIdentity(ctx context.Context, _ smithy.Properties) (
|
||||
auth.Identity, error,
|
||||
) {
|
||||
if v.Provider == nil {
|
||||
return &CredentialsAdapter{Credentials: aws.Credentials{}}, nil
|
||||
}
|
||||
|
||||
creds, err := v.Provider.Retrieve(ctx)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("get credentials: %v", err)
|
||||
}
|
||||
|
||||
return &CredentialsAdapter{Credentials: creds}, nil
|
||||
}
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
// Package smithy adapts concrete AWS auth and signing types to the generic smithy versions.
|
||||
package smithy
|
||||
+53
@@ -0,0 +1,53 @@
|
||||
package smithy
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
v4 "github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/sdk"
|
||||
"github.com/aws/smithy-go"
|
||||
"github.com/aws/smithy-go/auth"
|
||||
"github.com/aws/smithy-go/logging"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
|
||||
// V4SignerAdapter adapts v4.HTTPSigner to smithy http.Signer.
|
||||
type V4SignerAdapter struct {
|
||||
Signer v4.HTTPSigner
|
||||
Logger logging.Logger
|
||||
LogSigning bool
|
||||
}
|
||||
|
||||
var _ (smithyhttp.Signer) = (*V4SignerAdapter)(nil)
|
||||
|
||||
// SignRequest signs the request with the provided identity.
|
||||
func (v *V4SignerAdapter) SignRequest(ctx context.Context, r *smithyhttp.Request, identity auth.Identity, props smithy.Properties) error {
|
||||
ca, ok := identity.(*CredentialsAdapter)
|
||||
if !ok {
|
||||
return fmt.Errorf("unexpected identity type: %T", identity)
|
||||
}
|
||||
|
||||
name, ok := smithyhttp.GetSigV4SigningName(&props)
|
||||
if !ok {
|
||||
return fmt.Errorf("sigv4 signing name is required")
|
||||
}
|
||||
|
||||
region, ok := smithyhttp.GetSigV4SigningRegion(&props)
|
||||
if !ok {
|
||||
return fmt.Errorf("sigv4 signing region is required")
|
||||
}
|
||||
|
||||
hash := v4.GetPayloadHash(ctx)
|
||||
err := v.Signer.SignHTTP(ctx, ca.Credentials, r.Request, hash, name, region, sdk.NowTime(), func(o *v4.SignerOptions) {
|
||||
o.DisableURIPathEscaping, _ = smithyhttp.GetDisableDoubleEncoding(&props)
|
||||
|
||||
o.Logger = v.Logger
|
||||
o.LogSigning = v.LogSigning
|
||||
})
|
||||
if err != nil {
|
||||
return fmt.Errorf("sign http: %v", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
+4
@@ -1,3 +1,7 @@
|
||||
# v1.2.3 (2023-11-15)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.2.2 (2023-11-09)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
+1
-1
@@ -3,4 +3,4 @@
|
||||
package configsources
|
||||
|
||||
// goModuleVersion is the tagged release for this module
|
||||
const goModuleVersion = "1.2.2"
|
||||
const goModuleVersion = "1.2.3"
|
||||
|
||||
+201
@@ -0,0 +1,201 @@
|
||||
package endpoints
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"regexp"
|
||||
"strings"
|
||||
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
)
|
||||
|
||||
const (
|
||||
defaultProtocol = "https"
|
||||
defaultSigner = "v4"
|
||||
)
|
||||
|
||||
var (
|
||||
protocolPriority = []string{"https", "http"}
|
||||
signerPriority = []string{"v4"}
|
||||
)
|
||||
|
||||
// Options provide configuration needed to direct how endpoints are resolved.
|
||||
type Options struct {
|
||||
// Disable usage of HTTPS (TLS / SSL)
|
||||
DisableHTTPS bool
|
||||
}
|
||||
|
||||
// Partitions is a slice of partition
|
||||
type Partitions []Partition
|
||||
|
||||
// ResolveEndpoint resolves a service endpoint for the given region and options.
|
||||
func (ps Partitions) ResolveEndpoint(region string, opts Options) (aws.Endpoint, error) {
|
||||
if len(ps) == 0 {
|
||||
return aws.Endpoint{}, fmt.Errorf("no partitions found")
|
||||
}
|
||||
|
||||
for i := 0; i < len(ps); i++ {
|
||||
if !ps[i].canResolveEndpoint(region) {
|
||||
continue
|
||||
}
|
||||
|
||||
return ps[i].ResolveEndpoint(region, opts)
|
||||
}
|
||||
|
||||
// fallback to first partition format to use when resolving the endpoint.
|
||||
return ps[0].ResolveEndpoint(region, opts)
|
||||
}
|
||||
|
||||
// Partition is an AWS partition description for a service and its' region endpoints.
|
||||
type Partition struct {
|
||||
ID string
|
||||
RegionRegex *regexp.Regexp
|
||||
PartitionEndpoint string
|
||||
IsRegionalized bool
|
||||
Defaults Endpoint
|
||||
Endpoints Endpoints
|
||||
}
|
||||
|
||||
func (p Partition) canResolveEndpoint(region string) bool {
|
||||
_, ok := p.Endpoints[region]
|
||||
return ok || p.RegionRegex.MatchString(region)
|
||||
}
|
||||
|
||||
// ResolveEndpoint resolves and service endpoint for the given region and options.
|
||||
func (p Partition) ResolveEndpoint(region string, options Options) (resolved aws.Endpoint, err error) {
|
||||
if len(region) == 0 && len(p.PartitionEndpoint) != 0 {
|
||||
region = p.PartitionEndpoint
|
||||
}
|
||||
|
||||
e, _ := p.endpointForRegion(region)
|
||||
|
||||
return e.resolve(p.ID, region, p.Defaults, options), nil
|
||||
}
|
||||
|
||||
func (p Partition) endpointForRegion(region string) (Endpoint, bool) {
|
||||
if e, ok := p.Endpoints[region]; ok {
|
||||
return e, true
|
||||
}
|
||||
|
||||
if !p.IsRegionalized {
|
||||
return p.Endpoints[p.PartitionEndpoint], region == p.PartitionEndpoint
|
||||
}
|
||||
|
||||
// Unable to find any matching endpoint, return
|
||||
// blank that will be used for generic endpoint creation.
|
||||
return Endpoint{}, false
|
||||
}
|
||||
|
||||
// Endpoints is a map of service config regions to endpoints
|
||||
type Endpoints map[string]Endpoint
|
||||
|
||||
// CredentialScope is the credential scope of a region and service
|
||||
type CredentialScope struct {
|
||||
Region string
|
||||
Service string
|
||||
}
|
||||
|
||||
// Endpoint is a service endpoint description
|
||||
type Endpoint struct {
|
||||
// True if the endpoint cannot be resolved for this partition/region/service
|
||||
Unresolveable aws.Ternary
|
||||
|
||||
Hostname string
|
||||
Protocols []string
|
||||
|
||||
CredentialScope CredentialScope
|
||||
|
||||
SignatureVersions []string `json:"signatureVersions"`
|
||||
}
|
||||
|
||||
func (e Endpoint) resolve(partition, region string, def Endpoint, options Options) aws.Endpoint {
|
||||
var merged Endpoint
|
||||
merged.mergeIn(def)
|
||||
merged.mergeIn(e)
|
||||
e = merged
|
||||
|
||||
var u string
|
||||
if e.Unresolveable != aws.TrueTernary {
|
||||
// Only attempt to resolve the endpoint if it can be resolved.
|
||||
hostname := strings.Replace(e.Hostname, "{region}", region, 1)
|
||||
|
||||
scheme := getEndpointScheme(e.Protocols, options.DisableHTTPS)
|
||||
u = scheme + "://" + hostname
|
||||
}
|
||||
|
||||
signingRegion := e.CredentialScope.Region
|
||||
if len(signingRegion) == 0 {
|
||||
signingRegion = region
|
||||
}
|
||||
signingName := e.CredentialScope.Service
|
||||
|
||||
return aws.Endpoint{
|
||||
URL: u,
|
||||
PartitionID: partition,
|
||||
SigningRegion: signingRegion,
|
||||
SigningName: signingName,
|
||||
SigningMethod: getByPriority(e.SignatureVersions, signerPriority, defaultSigner),
|
||||
}
|
||||
}
|
||||
|
||||
func (e *Endpoint) mergeIn(other Endpoint) {
|
||||
if other.Unresolveable != aws.UnknownTernary {
|
||||
e.Unresolveable = other.Unresolveable
|
||||
}
|
||||
if len(other.Hostname) > 0 {
|
||||
e.Hostname = other.Hostname
|
||||
}
|
||||
if len(other.Protocols) > 0 {
|
||||
e.Protocols = other.Protocols
|
||||
}
|
||||
if len(other.CredentialScope.Region) > 0 {
|
||||
e.CredentialScope.Region = other.CredentialScope.Region
|
||||
}
|
||||
if len(other.CredentialScope.Service) > 0 {
|
||||
e.CredentialScope.Service = other.CredentialScope.Service
|
||||
}
|
||||
if len(other.SignatureVersions) > 0 {
|
||||
e.SignatureVersions = other.SignatureVersions
|
||||
}
|
||||
}
|
||||
|
||||
func getEndpointScheme(protocols []string, disableHTTPS bool) string {
|
||||
if disableHTTPS {
|
||||
return "http"
|
||||
}
|
||||
|
||||
return getByPriority(protocols, protocolPriority, defaultProtocol)
|
||||
}
|
||||
|
||||
func getByPriority(s []string, p []string, def string) string {
|
||||
if len(s) == 0 {
|
||||
return def
|
||||
}
|
||||
|
||||
for i := 0; i < len(p); i++ {
|
||||
for j := 0; j < len(s); j++ {
|
||||
if s[j] == p[i] {
|
||||
return s[j]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return s[0]
|
||||
}
|
||||
|
||||
// MapFIPSRegion extracts the intrinsic AWS region from one that may have an
|
||||
// embedded FIPS microformat.
|
||||
func MapFIPSRegion(region string) string {
|
||||
const fipsInfix = "-fips-"
|
||||
const fipsPrefix = "fips-"
|
||||
const fipsSuffix = "-fips"
|
||||
|
||||
if strings.Contains(region, fipsInfix) ||
|
||||
strings.Contains(region, fipsPrefix) ||
|
||||
strings.Contains(region, fipsSuffix) {
|
||||
region = strings.ReplaceAll(region, fipsInfix, "-")
|
||||
region = strings.ReplaceAll(region, fipsPrefix, "")
|
||||
region = strings.ReplaceAll(region, fipsSuffix, "")
|
||||
}
|
||||
|
||||
return region
|
||||
}
|
||||
+4
@@ -1,3 +1,7 @@
|
||||
# v2.5.3 (2023-11-15)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.5.2 (2023-11-09)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
+1
-1
@@ -3,4 +3,4 @@
|
||||
package endpoints
|
||||
|
||||
// goModuleVersion is the tagged release for this module
|
||||
const goModuleVersion = "2.5.2"
|
||||
const goModuleVersion = "2.5.3"
|
||||
|
||||
+4
@@ -1,3 +1,7 @@
|
||||
# v1.7.1 (2023-11-16)
|
||||
|
||||
* **Bug Fix**: Fix recognition of trailing comments in shared config properties. # or ; separators that aren't preceded by whitespace at the end of a property value should be considered part of it.
|
||||
|
||||
# v1.7.0 (2023-11-13)
|
||||
|
||||
* **Feature**: Replace the legacy config parser with a modern, less-strict implementation. Parsing failures within a section will now simply ignore the invalid line rather than silently drop the entire section.
|
||||
|
||||
+1
-1
@@ -3,4 +3,4 @@
|
||||
package ini
|
||||
|
||||
// goModuleVersion is the tagged release for this module
|
||||
const goModuleVersion = "1.7.0"
|
||||
const goModuleVersion = "1.7.1"
|
||||
|
||||
+1
-1
@@ -82,7 +82,7 @@ func (p *parser) handleSubProperty(tok *lineTokenSubProperty) {
|
||||
// "promote" this to a normal property.
|
||||
p.handleProperty(&lineTokenProperty{
|
||||
Key: tok.Key,
|
||||
Value: strings.TrimSpace(trimComment(tok.Value)),
|
||||
Value: strings.TrimSpace(trimPropertyComment(tok.Value)),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
+15
-5
@@ -1,11 +1,21 @@
|
||||
package ini
|
||||
|
||||
import "strings"
|
||||
import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
func trimComment(v string) string {
|
||||
rest, _, _ := strings.Cut(v, "#")
|
||||
rest, _, _ = strings.Cut(rest, ";")
|
||||
return rest
|
||||
func trimProfileComment(s string) string {
|
||||
r, _, _ := strings.Cut(s, "#")
|
||||
r, _, _ = strings.Cut(r, ";")
|
||||
return r
|
||||
}
|
||||
|
||||
func trimPropertyComment(s string) string {
|
||||
r, _, _ := strings.Cut(s, " #")
|
||||
r, _, _ = strings.Cut(r, " ;")
|
||||
r, _, _ = strings.Cut(r, "\t#")
|
||||
r, _, _ = strings.Cut(r, "\t;")
|
||||
return r
|
||||
}
|
||||
|
||||
// assumes no surrounding comment
|
||||
|
||||
+3
-2
@@ -30,7 +30,7 @@ func isLineComment(line string) bool {
|
||||
}
|
||||
|
||||
func asProfile(line string) *lineTokenProfile { // " [ type name ] ; comment"
|
||||
trimmed := strings.TrimSpace(trimComment(line)) // "[ type name ]"
|
||||
trimmed := strings.TrimSpace(trimProfileComment(line)) // "[ type name ]"
|
||||
if !isBracketed(trimmed) {
|
||||
return nil
|
||||
}
|
||||
@@ -48,7 +48,8 @@ func asProperty(line string) *lineTokenProperty {
|
||||
return nil
|
||||
}
|
||||
|
||||
trimmed := strings.TrimRight(trimComment(line), " \t")
|
||||
trimmed := trimPropertyComment(line)
|
||||
trimmed = strings.TrimRight(trimmed, " \t")
|
||||
k, v, ok := splitProperty(trimmed)
|
||||
if !ok {
|
||||
return nil
|
||||
|
||||
+4
@@ -1,3 +1,7 @@
|
||||
# v1.2.3 (2023-11-15)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.2.2 (2023-11-09)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
+1
-1
@@ -3,4 +3,4 @@
|
||||
package v4a
|
||||
|
||||
// goModuleVersion is the tagged release for this module
|
||||
const goModuleVersion = "1.2.2"
|
||||
const goModuleVersion = "1.2.3"
|
||||
|
||||
+86
@@ -0,0 +1,86 @@
|
||||
package v4a
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
v4 "github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/sdk"
|
||||
"github.com/aws/smithy-go"
|
||||
"github.com/aws/smithy-go/auth"
|
||||
"github.com/aws/smithy-go/logging"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
|
||||
// CredentialsAdapter adapts v4a.Credentials to smithy auth.Identity.
|
||||
type CredentialsAdapter struct {
|
||||
Credentials Credentials
|
||||
}
|
||||
|
||||
var _ auth.Identity = (*CredentialsAdapter)(nil)
|
||||
|
||||
// Expiration returns the time of expiration for the credentials.
|
||||
func (v *CredentialsAdapter) Expiration() time.Time {
|
||||
return v.Credentials.Expires
|
||||
}
|
||||
|
||||
// CredentialsProviderAdapter adapts v4a.CredentialsProvider to
|
||||
// auth.IdentityResolver.
|
||||
type CredentialsProviderAdapter struct {
|
||||
Provider CredentialsProvider
|
||||
}
|
||||
|
||||
var _ (auth.IdentityResolver) = (*CredentialsProviderAdapter)(nil)
|
||||
|
||||
// GetIdentity retrieves v4a credentials using the underlying provider.
|
||||
func (v *CredentialsProviderAdapter) GetIdentity(ctx context.Context, _ smithy.Properties) (
|
||||
auth.Identity, error,
|
||||
) {
|
||||
creds, err := v.Provider.RetrievePrivateKey(ctx)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("get credentials: %v", err)
|
||||
}
|
||||
|
||||
return &CredentialsAdapter{Credentials: creds}, nil
|
||||
}
|
||||
|
||||
// SignerAdapter adapts v4a.HTTPSigner to smithy http.Signer.
|
||||
type SignerAdapter struct {
|
||||
Signer HTTPSigner
|
||||
Logger logging.Logger
|
||||
LogSigning bool
|
||||
}
|
||||
|
||||
var _ (smithyhttp.Signer) = (*SignerAdapter)(nil)
|
||||
|
||||
// SignRequest signs the request with the provided identity.
|
||||
func (v *SignerAdapter) SignRequest(ctx context.Context, r *smithyhttp.Request, identity auth.Identity, props smithy.Properties) error {
|
||||
ca, ok := identity.(*CredentialsAdapter)
|
||||
if !ok {
|
||||
return fmt.Errorf("unexpected identity type: %T", identity)
|
||||
}
|
||||
|
||||
name, ok := smithyhttp.GetSigV4SigningName(&props)
|
||||
if !ok {
|
||||
return fmt.Errorf("sigv4a signing name is required")
|
||||
}
|
||||
|
||||
regions, ok := smithyhttp.GetSigV4ASigningRegions(&props)
|
||||
if !ok {
|
||||
return fmt.Errorf("sigv4a signing region is required")
|
||||
}
|
||||
|
||||
hash := v4.GetPayloadHash(ctx)
|
||||
err := v.Signer.SignHTTP(ctx, ca.Credentials, r.Request, hash, name, regions, sdk.NowTime(), func(o *SignerOptions) {
|
||||
o.DisableURIPathEscaping, _ = smithyhttp.GetDisableDoubleEncoding(&props)
|
||||
|
||||
o.Logger = v.Logger
|
||||
o.LogSigning = v.LogSigning
|
||||
})
|
||||
if err != nil {
|
||||
return fmt.Errorf("sign http: %v", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
Generated
Vendored
+4
@@ -1,3 +1,7 @@
|
||||
# v1.10.1 (2023-11-15)
|
||||
|
||||
* No change notes available for this release.
|
||||
|
||||
# v1.10.0 (2023-10-31)
|
||||
|
||||
* **Feature**: **BREAKING CHANGE**: Bump minimum go version to 1.19 per the revised [go version support policy](https://aws.amazon.com/blogs/developer/aws-sdk-for-go-aligns-with-go-release-policy-on-supported-runtimes/).
|
||||
|
||||
Generated
Vendored
+1
-1
@@ -3,4 +3,4 @@
|
||||
package acceptencoding
|
||||
|
||||
// goModuleVersion is the tagged release for this module
|
||||
const goModuleVersion = "1.10.0"
|
||||
const goModuleVersion = "1.10.1"
|
||||
|
||||
+4
@@ -1,3 +1,7 @@
|
||||
# v1.2.3 (2023-11-15)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.2.2 (2023-11-09)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
Generated
Vendored
+1
-1
@@ -3,4 +3,4 @@
|
||||
package checksum
|
||||
|
||||
// goModuleVersion is the tagged release for this module
|
||||
const goModuleVersion = "1.2.2"
|
||||
const goModuleVersion = "1.2.3"
|
||||
|
||||
+1
-19
@@ -2,7 +2,6 @@ package checksum
|
||||
|
||||
import (
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
|
||||
// InputMiddlewareOptions provides the options for the request
|
||||
@@ -81,32 +80,16 @@ func AddInputMiddleware(stack *middleware.Stack, options InputMiddlewareOptions)
|
||||
|
||||
stack.Build.Remove("ContentChecksum")
|
||||
|
||||
// Create the compute checksum middleware that will be added as both a
|
||||
// build and finalize handler.
|
||||
inputChecksum := &computeInputPayloadChecksum{
|
||||
RequireChecksum: options.RequireChecksum,
|
||||
EnableTrailingChecksum: options.EnableTrailingChecksum,
|
||||
EnableComputePayloadHash: options.EnableComputeSHA256PayloadHash,
|
||||
EnableDecodedContentLengthHeader: options.EnableDecodedContentLengthHeader,
|
||||
}
|
||||
|
||||
// Insert header checksum after ComputeContentLength middleware, must also
|
||||
// be before the computePayloadHash middleware handlers.
|
||||
err = stack.Build.Insert(inputChecksum,
|
||||
(*smithyhttp.ComputeContentLength)(nil).ID(),
|
||||
middleware.After)
|
||||
if err != nil {
|
||||
if err := stack.Finalize.Insert(inputChecksum, "ResolveEndpointV2", middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// If trailing checksum is not supported no need for finalize handler to be added.
|
||||
if options.EnableTrailingChecksum {
|
||||
err = stack.Finalize.Insert(inputChecksum, "Retry", middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -117,7 +100,6 @@ func RemoveInputMiddleware(stack *middleware.Stack) {
|
||||
stack.Initialize.Remove(id)
|
||||
|
||||
id = (*computeInputPayloadChecksum)(nil).ID()
|
||||
stack.Build.Remove(id)
|
||||
stack.Finalize.Remove(id)
|
||||
}
|
||||
|
||||
|
||||
Generated
Vendored
+34
-31
@@ -9,6 +9,7 @@ import (
|
||||
"strconv"
|
||||
|
||||
v4 "github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
presignedurlcust "github.com/aws/aws-sdk-go-v2/service/internal/presigned-url"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -70,8 +71,7 @@ type computeInputPayloadChecksum struct {
|
||||
// when used with trailing checksums, and aws-chunked content-encoding.
|
||||
EnableDecodedContentLengthHeader bool
|
||||
|
||||
buildHandlerRun bool
|
||||
deferToFinalizeHandler bool
|
||||
useTrailer bool
|
||||
}
|
||||
|
||||
// ID provides the middleware's identifier.
|
||||
@@ -102,13 +102,11 @@ func (e computeInputHeaderChecksumError) Unwrap() error { return e.Err }
|
||||
//
|
||||
// The build handler must be inserted in the stack before ContentPayloadHash
|
||||
// and after ComputeContentLength.
|
||||
func (m *computeInputPayloadChecksum) HandleBuild(
|
||||
ctx context.Context, in middleware.BuildInput, next middleware.BuildHandler,
|
||||
func (m *computeInputPayloadChecksum) HandleFinalize(
|
||||
ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler,
|
||||
) (
|
||||
out middleware.BuildOutput, metadata middleware.Metadata, err error,
|
||||
out middleware.FinalizeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
m.buildHandlerRun = true
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, computeInputHeaderChecksumError{
|
||||
@@ -145,13 +143,13 @@ func (m *computeInputPayloadChecksum) HandleBuild(
|
||||
}
|
||||
algorithm = Algorithm("MD5")
|
||||
}
|
||||
return next.HandleBuild(ctx, in)
|
||||
return next.HandleFinalize(ctx, in)
|
||||
}
|
||||
|
||||
// If the checksum header is already set nothing to do.
|
||||
checksumHeader := AlgorithmHTTPHeader(algorithm)
|
||||
if checksum = req.Header.Get(checksumHeader); checksum != "" {
|
||||
return next.HandleBuild(ctx, in)
|
||||
return next.HandleFinalize(ctx, in)
|
||||
}
|
||||
|
||||
computePayloadHash := m.EnableComputePayloadHash
|
||||
@@ -169,22 +167,25 @@ func (m *computeInputPayloadChecksum) HandleBuild(
|
||||
}
|
||||
|
||||
// If trailing checksums are supported, the request is HTTPS, and the
|
||||
// stream is not nil or empty, there is nothing to do in the build stage.
|
||||
// The checksum will be added to the request as a trailing checksum in the
|
||||
// finalize handler.
|
||||
// stream is not nil or empty, instead switch to a trailing checksum.
|
||||
//
|
||||
// Nil and empty streams will always be handled as a request header,
|
||||
// regardless if the operation supports trailing checksums or not.
|
||||
if req.IsHTTPS() {
|
||||
if req.IsHTTPS() && !presignedurlcust.GetIsPresigning(ctx) {
|
||||
if stream != nil && streamLength != 0 && m.EnableTrailingChecksum {
|
||||
if m.EnableComputePayloadHash {
|
||||
// payload hash is set as header in Build middleware handler,
|
||||
// ContentSHA256Header.
|
||||
// ContentSHA256Header middleware handles the header
|
||||
ctx = v4.SetPayloadHash(ctx, streamingUnsignedPayloadTrailerPayloadHash)
|
||||
}
|
||||
|
||||
m.deferToFinalizeHandler = true
|
||||
return next.HandleBuild(ctx, in)
|
||||
m.useTrailer = true
|
||||
mw := &addInputChecksumTrailer{
|
||||
EnableTrailingChecksum: m.EnableTrailingChecksum,
|
||||
RequireChecksum: m.RequireChecksum,
|
||||
EnableComputePayloadHash: m.EnableComputePayloadHash,
|
||||
EnableDecodedContentLengthHeader: m.EnableDecodedContentLengthHeader,
|
||||
}
|
||||
return mw.HandleFinalize(ctx, in, next)
|
||||
}
|
||||
|
||||
// If trailing checksums are not enabled but protocol is still HTTPS
|
||||
@@ -225,7 +226,7 @@ func (m *computeInputPayloadChecksum) HandleBuild(
|
||||
ctx = v4.SetPayloadHash(ctx, sha256Checksum)
|
||||
}
|
||||
|
||||
return next.HandleBuild(ctx, in)
|
||||
return next.HandleFinalize(ctx, in)
|
||||
}
|
||||
|
||||
type computeInputTrailingChecksumError struct {
|
||||
@@ -244,26 +245,28 @@ func (e computeInputTrailingChecksumError) Error() string {
|
||||
}
|
||||
func (e computeInputTrailingChecksumError) Unwrap() error { return e.Err }
|
||||
|
||||
// HandleFinalize handles computing the payload's checksum, in the following cases:
|
||||
// addInputChecksumTrailer
|
||||
// - Is HTTPS, not HTTP
|
||||
// - A checksum was specified via the Input
|
||||
// - Trailing checksums are supported.
|
||||
//
|
||||
// The finalize handler must be inserted in the stack before Signing, and after Retry.
|
||||
func (m *computeInputPayloadChecksum) HandleFinalize(
|
||||
type addInputChecksumTrailer struct {
|
||||
EnableTrailingChecksum bool
|
||||
RequireChecksum bool
|
||||
EnableComputePayloadHash bool
|
||||
EnableDecodedContentLengthHeader bool
|
||||
}
|
||||
|
||||
// ID identifies this middleware.
|
||||
func (*addInputChecksumTrailer) ID() string {
|
||||
return "addInputChecksumTrailer"
|
||||
}
|
||||
|
||||
// HandleFinalize wraps the request body to write the trailing checksum.
|
||||
func (m *addInputChecksumTrailer) HandleFinalize(
|
||||
ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler,
|
||||
) (
|
||||
out middleware.FinalizeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if !m.deferToFinalizeHandler {
|
||||
if !m.buildHandlerRun {
|
||||
return out, metadata, computeInputTrailingChecksumError{
|
||||
Msg: "build handler was removed without also removing finalize handler",
|
||||
}
|
||||
}
|
||||
return next.HandleFinalize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, computeInputTrailingChecksumError{
|
||||
|
||||
+4
@@ -1,3 +1,7 @@
|
||||
# v1.10.3 (2023-11-15)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.10.2 (2023-11-09)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
Generated
Vendored
+1
-1
@@ -3,4 +3,4 @@
|
||||
package presignedurl
|
||||
|
||||
// goModuleVersion is the tagged release for this module
|
||||
const goModuleVersion = "1.10.2"
|
||||
const goModuleVersion = "1.10.3"
|
||||
|
||||
+4
@@ -1,3 +1,7 @@
|
||||
# v1.16.3 (2023-11-15)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.16.2 (2023-11-09)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
Generated
Vendored
+1
-1
@@ -3,4 +3,4 @@
|
||||
package s3shared
|
||||
|
||||
// goModuleVersion is the tagged release for this module
|
||||
const goModuleVersion = "1.16.2"
|
||||
const goModuleVersion = "1.16.3"
|
||||
|
||||
+9
@@ -1,3 +1,12 @@
|
||||
# v1.43.0 (2023-11-17)
|
||||
|
||||
* **Feature**: **BREAKING CHANGE** Correct nullability of a large number of S3 structure fields. See https://github.com/aws/aws-sdk-go-v2/issues/2162.
|
||||
* **Feature**: Removes all default 0 values for numbers and false values for booleans
|
||||
|
||||
# v1.42.2 (2023-11-15)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.42.1 (2023-11-09)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
+135
-191
@@ -11,6 +11,8 @@ import (
|
||||
"github.com/aws/aws-sdk-go-v2/aws/retry"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
awshttp "github.com/aws/aws-sdk-go-v2/aws/transport/http"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
internalauthsmithy "github.com/aws/aws-sdk-go-v2/internal/auth/smithy"
|
||||
internalConfig "github.com/aws/aws-sdk-go-v2/internal/configsources"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
acceptencodingcust "github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding"
|
||||
@@ -56,187 +58,33 @@ func New(options Options, optFns ...func(*Options)) *Client {
|
||||
|
||||
resolveHTTPSignerV4a(&options)
|
||||
|
||||
resolveEndpointResolverV2(&options)
|
||||
|
||||
resolveAuthSchemeResolver(&options)
|
||||
|
||||
for _, fn := range optFns {
|
||||
fn(&options)
|
||||
}
|
||||
|
||||
resolveCredentialProvider(&options)
|
||||
|
||||
ignoreAnonymousAuth(&options)
|
||||
|
||||
finalizeServiceEndpointAuthResolver(&options)
|
||||
|
||||
resolveAuthSchemes(&options)
|
||||
|
||||
client := &Client{
|
||||
options: options,
|
||||
}
|
||||
|
||||
resolveCredentialProvider(&options)
|
||||
|
||||
return client
|
||||
}
|
||||
|
||||
type Options struct {
|
||||
// Set of options to modify how an operation is invoked. These apply to all
|
||||
// operations invoked for this client. Use functional options on operation call to
|
||||
// modify this list for per operation behavior.
|
||||
APIOptions []func(*middleware.Stack) error
|
||||
|
||||
// The optional application specific identifier appended to the User-Agent header.
|
||||
AppID string
|
||||
|
||||
// This endpoint will be given as input to an EndpointResolverV2. It is used for
|
||||
// providing a custom base endpoint that is subject to modifications by the
|
||||
// processing EndpointResolverV2.
|
||||
BaseEndpoint *string
|
||||
|
||||
// Configures the events that will be sent to the configured logger.
|
||||
ClientLogMode aws.ClientLogMode
|
||||
|
||||
// The threshold ContentLength in bytes for HTTP PUT request to receive {Expect:
|
||||
// 100-continue} header. Setting to -1 will disable adding the Expect header to
|
||||
// requests; setting to 0 will set the threshold to default 2MB
|
||||
ContinueHeaderThresholdBytes int64
|
||||
|
||||
// The credentials object to use when signing requests.
|
||||
Credentials aws.CredentialsProvider
|
||||
|
||||
// The configuration DefaultsMode that the SDK should use when constructing the
|
||||
// clients initial default settings.
|
||||
DefaultsMode aws.DefaultsMode
|
||||
|
||||
// Allows you to disable S3 Multi-Region access points feature.
|
||||
DisableMultiRegionAccessPoints bool
|
||||
|
||||
// The endpoint options to be used when attempting to resolve an endpoint.
|
||||
EndpointOptions EndpointResolverOptions
|
||||
|
||||
// The service endpoint resolver.
|
||||
//
|
||||
// Deprecated: Deprecated: EndpointResolver and WithEndpointResolver. Providing a
|
||||
// value for this field will likely prevent you from using any endpoint-related
|
||||
// service features released after the introduction of EndpointResolverV2 and
|
||||
// BaseEndpoint. To migrate an EndpointResolver implementation that uses a custom
|
||||
// endpoint, set the client option BaseEndpoint instead.
|
||||
EndpointResolver EndpointResolver
|
||||
|
||||
// Resolves the endpoint used for a particular service. This should be used over
|
||||
// the deprecated EndpointResolver
|
||||
EndpointResolverV2 EndpointResolverV2
|
||||
|
||||
// Signature Version 4 (SigV4) Signer
|
||||
HTTPSignerV4 HTTPSignerV4
|
||||
|
||||
// The logger writer interface to write logging messages to.
|
||||
Logger logging.Logger
|
||||
|
||||
// The region to send requests to. (Required)
|
||||
Region string
|
||||
|
||||
// RetryMaxAttempts specifies the maximum number attempts an API client will call
|
||||
// an operation that fails with a retryable error. A value of 0 is ignored, and
|
||||
// will not be used to configure the API client created default retryer, or modify
|
||||
// per operation call's retry max attempts. When creating a new API Clients this
|
||||
// member will only be used if the Retryer Options member is nil. This value will
|
||||
// be ignored if Retryer is not nil. If specified in an operation call's functional
|
||||
// options with a value that is different than the constructed client's Options,
|
||||
// the Client's Retryer will be wrapped to use the operation's specific
|
||||
// RetryMaxAttempts value.
|
||||
RetryMaxAttempts int
|
||||
|
||||
// RetryMode specifies the retry mode the API client will be created with, if
|
||||
// Retryer option is not also specified. When creating a new API Clients this
|
||||
// member will only be used if the Retryer Options member is nil. This value will
|
||||
// be ignored if Retryer is not nil. Currently does not support per operation call
|
||||
// overrides, may in the future.
|
||||
RetryMode aws.RetryMode
|
||||
|
||||
// Retryer guides how HTTP requests should be retried in case of recoverable
|
||||
// failures. When nil the API client will use a default retryer. The kind of
|
||||
// default retry created by the API client can be changed with the RetryMode
|
||||
// option.
|
||||
Retryer aws.Retryer
|
||||
|
||||
// The RuntimeEnvironment configuration, only populated if the DefaultsMode is set
|
||||
// to DefaultsModeAuto and is initialized using config.LoadDefaultConfig . You
|
||||
// should not populate this structure programmatically, or rely on the values here
|
||||
// within your applications.
|
||||
RuntimeEnvironment aws.RuntimeEnvironment
|
||||
|
||||
// Allows you to enable arn region support for the service.
|
||||
UseARNRegion bool
|
||||
|
||||
// Allows you to enable S3 Accelerate feature. All operations compatible with S3
|
||||
// Accelerate will use the accelerate endpoint for requests. Requests not
|
||||
// compatible will fall back to normal S3 requests. The bucket must be enabled for
|
||||
// accelerate to be used with S3 client with accelerate enabled. If the bucket is
|
||||
// not enabled for accelerate an error will be returned. The bucket name must be
|
||||
// DNS compatible to work with accelerate.
|
||||
UseAccelerate bool
|
||||
|
||||
// Allows you to enable dual-stack endpoint support for the service.
|
||||
//
|
||||
// Deprecated: Set dual-stack by setting UseDualStackEndpoint on
|
||||
// EndpointResolverOptions. When EndpointResolverOptions' UseDualStackEndpoint
|
||||
// field is set it overrides this field value.
|
||||
UseDualstack bool
|
||||
|
||||
// Allows you to enable the client to use path-style addressing, i.e.,
|
||||
// https://s3.amazonaws.com/BUCKET/KEY . By default, the S3 client will use virtual
|
||||
// hosted bucket addressing when possible( https://BUCKET.s3.amazonaws.com/KEY ).
|
||||
UsePathStyle bool
|
||||
|
||||
// Signature Version 4a (SigV4a) Signer
|
||||
httpSignerV4a httpSignerV4a
|
||||
|
||||
// The initial DefaultsMode used when the client options were constructed. If the
|
||||
// DefaultsMode was set to aws.DefaultsModeAuto this will store what the resolved
|
||||
// value was at that point in time. Currently does not support per operation call
|
||||
// overrides, may in the future.
|
||||
resolvedDefaultsMode aws.DefaultsMode
|
||||
|
||||
// The HTTP client to invoke API calls with. Defaults to client's default HTTP
|
||||
// implementation if nil.
|
||||
HTTPClient HTTPClient
|
||||
}
|
||||
|
||||
// WithAPIOptions returns a functional option for setting the Client's APIOptions
|
||||
// option.
|
||||
func WithAPIOptions(optFns ...func(*middleware.Stack) error) func(*Options) {
|
||||
return func(o *Options) {
|
||||
o.APIOptions = append(o.APIOptions, optFns...)
|
||||
}
|
||||
}
|
||||
|
||||
// Deprecated: EndpointResolver and WithEndpointResolver. Providing a value for
|
||||
// this field will likely prevent you from using any endpoint-related service
|
||||
// features released after the introduction of EndpointResolverV2 and BaseEndpoint.
|
||||
// To migrate an EndpointResolver implementation that uses a custom endpoint, set
|
||||
// the client option BaseEndpoint instead.
|
||||
func WithEndpointResolver(v EndpointResolver) func(*Options) {
|
||||
return func(o *Options) {
|
||||
o.EndpointResolver = v
|
||||
}
|
||||
}
|
||||
|
||||
// WithEndpointResolverV2 returns a functional option for setting the Client's
|
||||
// EndpointResolverV2 option.
|
||||
func WithEndpointResolverV2(v EndpointResolverV2) func(*Options) {
|
||||
return func(o *Options) {
|
||||
o.EndpointResolverV2 = v
|
||||
}
|
||||
}
|
||||
|
||||
type HTTPClient interface {
|
||||
Do(*http.Request) (*http.Response, error)
|
||||
}
|
||||
|
||||
// Copy creates a clone where the APIOptions list is deep copied.
|
||||
func (o Options) Copy() Options {
|
||||
to := o
|
||||
to.APIOptions = make([]func(*middleware.Stack) error, len(o.APIOptions))
|
||||
copy(to.APIOptions, o.APIOptions)
|
||||
|
||||
return to
|
||||
}
|
||||
func (c *Client) invokeOperation(ctx context.Context, opID string, params interface{}, optFns []func(*Options), stackFns ...func(*middleware.Stack, Options) error) (result interface{}, metadata middleware.Metadata, err error) {
|
||||
ctx = middleware.ClearStackValues(ctx)
|
||||
stack := middleware.NewStack(opID, smithyhttp.NewStackRequest)
|
||||
options := c.options.Copy()
|
||||
resolveEndpointResolverV2(&options)
|
||||
|
||||
for _, fn := range optFns {
|
||||
fn(&options)
|
||||
@@ -250,6 +98,8 @@ func (c *Client) invokeOperation(ctx context.Context, opID string, params interf
|
||||
|
||||
resolveCredentialProvider(&options)
|
||||
|
||||
finalizeOperationEndpointAuthResolver(&options)
|
||||
|
||||
for _, fn := range stackFns {
|
||||
if err := fn(stack, options); err != nil {
|
||||
return nil, metadata, err
|
||||
@@ -274,6 +124,68 @@ func (c *Client) invokeOperation(ctx context.Context, opID string, params interf
|
||||
return result, metadata, err
|
||||
}
|
||||
|
||||
type operationInputKey struct{}
|
||||
|
||||
func setOperationInput(ctx context.Context, input interface{}) context.Context {
|
||||
return middleware.WithStackValue(ctx, operationInputKey{}, input)
|
||||
}
|
||||
|
||||
func getOperationInput(ctx context.Context) interface{} {
|
||||
return middleware.GetStackValue(ctx, operationInputKey{})
|
||||
}
|
||||
|
||||
type setOperationInputMiddleware struct {
|
||||
}
|
||||
|
||||
func (*setOperationInputMiddleware) ID() string {
|
||||
return "setOperationInput"
|
||||
}
|
||||
|
||||
func (m *setOperationInputMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
ctx = setOperationInput(ctx, in.Parameters)
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addProtocolFinalizerMiddlewares(stack *middleware.Stack, options Options, operation string) error {
|
||||
if err := stack.Finalize.Add(&resolveAuthSchemeMiddleware{operation: operation, options: options}, middleware.Before); err != nil {
|
||||
return fmt.Errorf("add ResolveAuthScheme: %v", err)
|
||||
}
|
||||
if err := stack.Finalize.Insert(&getIdentityMiddleware{options: options}, "ResolveAuthScheme", middleware.After); err != nil {
|
||||
return fmt.Errorf("add GetIdentity: %v", err)
|
||||
}
|
||||
if err := stack.Finalize.Insert(&resolveEndpointV2Middleware{options: options}, "GetIdentity", middleware.After); err != nil {
|
||||
return fmt.Errorf("add ResolveEndpointV2: %v", err)
|
||||
}
|
||||
if err := stack.Finalize.Insert(&signRequestMiddleware{}, "ResolveEndpointV2", middleware.After); err != nil {
|
||||
return fmt.Errorf("add Signing: %v", err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func resolveAuthSchemeResolver(options *Options) {
|
||||
if options.AuthSchemeResolver == nil {
|
||||
options.AuthSchemeResolver = &defaultAuthSchemeResolver{}
|
||||
}
|
||||
}
|
||||
|
||||
func resolveAuthSchemes(options *Options) {
|
||||
if options.AuthSchemes == nil {
|
||||
options.AuthSchemes = []smithyhttp.AuthScheme{
|
||||
internalauth.NewHTTPAuthScheme("aws.auth#sigv4", &internalauthsmithy.V4SignerAdapter{
|
||||
Signer: options.HTTPSignerV4,
|
||||
Logger: options.Logger,
|
||||
LogSigning: options.ClientLogMode.IsSigning(),
|
||||
}),
|
||||
internalauth.NewHTTPAuthScheme("aws.auth#sigv4a", &v4a.SignerAdapter{
|
||||
Signer: options.httpSignerV4a,
|
||||
Logger: options.Logger,
|
||||
LogSigning: options.ClientLogMode.IsSigning(),
|
||||
}),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
type noSmithyDocumentSerde = smithydocument.NoSerde
|
||||
|
||||
type legacyEndpointContextSetter struct {
|
||||
@@ -466,15 +378,6 @@ func addClientUserAgent(stack *middleware.Stack, options Options) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func addHTTPSignerV4Middleware(stack *middleware.Stack, o Options) error {
|
||||
mw := v4.NewSignHTTPRequestMiddleware(v4.SignHTTPRequestMiddlewareOptions{
|
||||
CredentialsProvider: o.Credentials,
|
||||
Signer: o.HTTPSignerV4,
|
||||
LogSigning: o.ClientLogMode.IsSigning(),
|
||||
})
|
||||
return stack.Finalize.Add(mw, middleware.After)
|
||||
}
|
||||
|
||||
type HTTPSignerV4 interface {
|
||||
SignHTTP(ctx context.Context, credentials aws.Credentials, r *http.Request, payloadHash string, service string, region string, signingTime time.Time, optFns ...func(*v4.SignerOptions)) error
|
||||
}
|
||||
@@ -801,20 +704,61 @@ func withNopHTTPClientAPIOption(o *Options) {
|
||||
o.HTTPClient = smithyhttp.NopClient{}
|
||||
}
|
||||
|
||||
type presignContextPolyfillMiddleware struct {
|
||||
}
|
||||
|
||||
func (*presignContextPolyfillMiddleware) ID() string {
|
||||
return "presignContextPolyfill"
|
||||
}
|
||||
|
||||
func (m *presignContextPolyfillMiddleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) (
|
||||
out middleware.FinalizeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
rscheme := getResolvedAuthScheme(ctx)
|
||||
if rscheme == nil {
|
||||
return out, metadata, fmt.Errorf("no resolved auth scheme")
|
||||
}
|
||||
|
||||
schemeID := rscheme.Scheme.SchemeID()
|
||||
ctx = s3cust.SetSignerVersion(ctx, schemeID)
|
||||
if schemeID == "aws.auth#sigv4" {
|
||||
if sn, ok := smithyhttp.GetSigV4SigningName(&rscheme.SignerProperties); ok {
|
||||
ctx = awsmiddleware.SetSigningName(ctx, sn)
|
||||
}
|
||||
if sr, ok := smithyhttp.GetSigV4SigningRegion(&rscheme.SignerProperties); ok {
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, sr)
|
||||
}
|
||||
} else if schemeID == "aws.auth#sigv4a" {
|
||||
if sn, ok := smithyhttp.GetSigV4ASigningName(&rscheme.SignerProperties); ok {
|
||||
ctx = awsmiddleware.SetSigningName(ctx, sn)
|
||||
}
|
||||
if sr, ok := smithyhttp.GetSigV4ASigningRegions(&rscheme.SignerProperties); ok {
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, sr[0])
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleFinalize(ctx, in)
|
||||
}
|
||||
|
||||
type presignConverter PresignOptions
|
||||
|
||||
func (c presignConverter) convertToPresignMiddleware(stack *middleware.Stack, options Options) (err error) {
|
||||
stack.Finalize.Clear()
|
||||
if _, ok := stack.Finalize.Get((*acceptencodingcust.DisableGzip)(nil).ID()); ok {
|
||||
stack.Finalize.Remove((*acceptencodingcust.DisableGzip)(nil).ID())
|
||||
}
|
||||
stack.Deserialize.Clear()
|
||||
stack.Build.Remove((*awsmiddleware.ClientRequestID)(nil).ID())
|
||||
stack.Build.Remove("UserAgent")
|
||||
if err := stack.Finalize.Insert(&presignContextPolyfillMiddleware{}, "Signing", middleware.Before); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
pmw := v4.NewPresignHTTPRequestMiddleware(v4.PresignHTTPRequestMiddlewareOptions{
|
||||
CredentialsProvider: options.Credentials,
|
||||
Presigner: c.Presigner,
|
||||
LogSigning: options.ClientLogMode.IsSigning(),
|
||||
})
|
||||
err = stack.Finalize.Add(pmw, middleware.After)
|
||||
if err != nil {
|
||||
if _, err := stack.Finalize.Swap("Signing", pmw); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = smithyhttp.AddNoPayloadDefaultContentTypeRemover(stack); err != nil {
|
||||
@@ -858,31 +802,31 @@ func addRequestResponseLogging(stack *middleware.Stack, o Options) error {
|
||||
}, middleware.After)
|
||||
}
|
||||
|
||||
type endpointDisableHTTPSMiddleware struct {
|
||||
EndpointDisableHTTPS bool
|
||||
type disableHTTPSMiddleware struct {
|
||||
DisableHTTPS bool
|
||||
}
|
||||
|
||||
func (*endpointDisableHTTPSMiddleware) ID() string {
|
||||
return "endpointDisableHTTPSMiddleware"
|
||||
func (*disableHTTPSMiddleware) ID() string {
|
||||
return "disableHTTPS"
|
||||
}
|
||||
|
||||
func (m *endpointDisableHTTPSMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
func (m *disableHTTPSMiddleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) (
|
||||
out middleware.FinalizeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointDisableHTTPS && !smithyhttp.GetHostnameImmutable(ctx) {
|
||||
if m.DisableHTTPS && !smithyhttp.GetHostnameImmutable(ctx) {
|
||||
req.URL.Scheme = "http"
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
return next.HandleFinalize(ctx, in)
|
||||
}
|
||||
|
||||
}
|
||||
func addendpointDisableHTTPSMiddleware(stack *middleware.Stack, o Options) error {
|
||||
return stack.Serialize.Insert(&endpointDisableHTTPSMiddleware{
|
||||
EndpointDisableHTTPS: o.EndpointOptions.DisableHTTPS,
|
||||
}, "OperationSerializer", middleware.Before)
|
||||
func addDisableHTTPSMiddleware(stack *middleware.Stack, o Options) error {
|
||||
return stack.Finalize.Insert(&disableHTTPSMiddleware{
|
||||
DisableHTTPS: o.EndpointOptions.DisableHTTPS,
|
||||
}, "ResolveEndpointV2", middleware.After)
|
||||
}
|
||||
|
||||
+14
-150
@@ -4,16 +4,11 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -98,6 +93,11 @@ type AbortMultipartUploadInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *AbortMultipartUploadInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type AbortMultipartUploadOutput struct {
|
||||
|
||||
// If present, indicates that the requester was successfully charged for the
|
||||
@@ -111,6 +111,9 @@ type AbortMultipartUploadOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationAbortMultipartUploadMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpAbortMultipartUpload{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -119,6 +122,10 @@ func (c *Client) addOperationAbortMultipartUploadMiddlewares(stack *middleware.S
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "AbortMultipartUpload"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -140,9 +147,6 @@ func (c *Client) addOperationAbortMultipartUploadMiddlewares(stack *middleware.S
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -158,10 +162,7 @@ func (c *Client) addOperationAbortMultipartUploadMiddlewares(stack *middleware.S
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addAbortMultipartUploadResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpAbortMultipartUploadValidationMiddleware(stack); err != nil {
|
||||
@@ -191,7 +192,7 @@ func (c *Client) addOperationAbortMultipartUploadMiddlewares(stack *middleware.S
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -211,7 +212,6 @@ func newServiceMetadataMiddleware_opAbortMultipartUpload(region string) *awsmidd
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "AbortMultipartUpload",
|
||||
}
|
||||
}
|
||||
@@ -241,139 +241,3 @@ func addAbortMultipartUploadUpdateEndpoint(stack *middleware.Stack, options Opti
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opAbortMultipartUploadResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opAbortMultipartUploadResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opAbortMultipartUploadResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*AbortMultipartUploadInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addAbortMultipartUploadResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opAbortMultipartUploadResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
+15
-151
@@ -4,16 +4,11 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -185,6 +180,11 @@ type CompleteMultipartUploadInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *CompleteMultipartUploadInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type CompleteMultipartUploadOutput struct {
|
||||
|
||||
// The name of the bucket that contains the newly created object. Does not return
|
||||
@@ -207,7 +207,7 @@ type CompleteMultipartUploadOutput struct {
|
||||
|
||||
// Indicates whether the multipart upload uses an S3 Bucket Key for server-side
|
||||
// encryption with Key Management Service (KMS) keys (SSE-KMS).
|
||||
BucketKeyEnabled bool
|
||||
BucketKeyEnabled *bool
|
||||
|
||||
// The base64-encoded, 32-bit CRC32 checksum of the object. This will only be
|
||||
// present if it was uploaded with the object. With multipart uploads, this may not
|
||||
@@ -280,6 +280,9 @@ type CompleteMultipartUploadOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationCompleteMultipartUploadMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpCompleteMultipartUpload{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -288,6 +291,10 @@ func (c *Client) addOperationCompleteMultipartUploadMiddlewares(stack *middlewar
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "CompleteMultipartUpload"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -309,9 +316,6 @@ func (c *Client) addOperationCompleteMultipartUploadMiddlewares(stack *middlewar
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -327,10 +331,7 @@ func (c *Client) addOperationCompleteMultipartUploadMiddlewares(stack *middlewar
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addCompleteMultipartUploadResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpCompleteMultipartUploadValidationMiddleware(stack); err != nil {
|
||||
@@ -363,7 +364,7 @@ func (c *Client) addOperationCompleteMultipartUploadMiddlewares(stack *middlewar
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -383,7 +384,6 @@ func newServiceMetadataMiddleware_opCompleteMultipartUpload(region string) *awsm
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "CompleteMultipartUpload",
|
||||
}
|
||||
}
|
||||
@@ -413,139 +413,3 @@ func addCompleteMultipartUploadUpdateEndpoint(stack *middleware.Stack, options O
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opCompleteMultipartUploadResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opCompleteMultipartUploadResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opCompleteMultipartUploadResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*CompleteMultipartUploadInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addCompleteMultipartUploadResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opCompleteMultipartUploadResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
+16
-152
@@ -4,16 +4,11 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
"time"
|
||||
@@ -239,7 +234,7 @@ type CopyObjectInput struct {
|
||||
// Setting this header to true causes Amazon S3 to use an S3 Bucket Key for object
|
||||
// encryption with SSE-KMS. Specifying this header with a COPY action doesn’t
|
||||
// affect bucket-level settings for S3 Bucket Key.
|
||||
BucketKeyEnabled bool
|
||||
BucketKeyEnabled *bool
|
||||
|
||||
// Specifies caching behavior along the request/reply chain.
|
||||
CacheControl *string
|
||||
@@ -403,11 +398,16 @@ type CopyObjectInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *CopyObjectInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type CopyObjectOutput struct {
|
||||
|
||||
// Indicates whether the copied object uses an S3 Bucket Key for server-side
|
||||
// encryption with Key Management Service (KMS) keys (SSE-KMS).
|
||||
BucketKeyEnabled bool
|
||||
BucketKeyEnabled *bool
|
||||
|
||||
// Container for all response elements.
|
||||
CopyObjectResult *types.CopyObjectResult
|
||||
@@ -455,6 +455,9 @@ type CopyObjectOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationCopyObjectMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpCopyObject{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -463,6 +466,10 @@ func (c *Client) addOperationCopyObjectMiddlewares(stack *middleware.Stack, opti
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "CopyObject"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -484,9 +491,6 @@ func (c *Client) addOperationCopyObjectMiddlewares(stack *middleware.Stack, opti
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -502,10 +506,7 @@ func (c *Client) addOperationCopyObjectMiddlewares(stack *middleware.Stack, opti
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addCopyObjectResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpCopyObjectValidationMiddleware(stack); err != nil {
|
||||
@@ -538,7 +539,7 @@ func (c *Client) addOperationCopyObjectMiddlewares(stack *middleware.Stack, opti
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -558,7 +559,6 @@ func newServiceMetadataMiddleware_opCopyObject(region string) *awsmiddleware.Reg
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "CopyObject",
|
||||
}
|
||||
}
|
||||
@@ -588,139 +588,3 @@ func addCopyObjectUpdateEndpoint(stack *middleware.Stack, options Options) error
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opCopyObjectResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opCopyObjectResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opCopyObjectResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*CopyObjectInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addCopyObjectResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opCopyObjectResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
+15
-153
@@ -4,16 +4,11 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
"github.com/aws/smithy-go/ptr"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
@@ -127,7 +122,7 @@ type CreateBucketInput struct {
|
||||
GrantWriteACP *string
|
||||
|
||||
// Specifies whether you want S3 Object Lock to be enabled for the new bucket.
|
||||
ObjectLockEnabledForBucket bool
|
||||
ObjectLockEnabledForBucket *bool
|
||||
|
||||
// The container element for object ownership for a bucket's ownership controls.
|
||||
// BucketOwnerPreferred - Objects uploaded to the bucket change ownership to the
|
||||
@@ -145,6 +140,11 @@ type CreateBucketInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *CreateBucketInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
p.DisableAccessPoints = ptr.Bool(true)
|
||||
}
|
||||
|
||||
type CreateBucketOutput struct {
|
||||
|
||||
// A forward slash followed by the name of the bucket.
|
||||
@@ -157,6 +157,9 @@ type CreateBucketOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationCreateBucketMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpCreateBucket{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -165,6 +168,10 @@ func (c *Client) addOperationCreateBucketMiddlewares(stack *middleware.Stack, op
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "CreateBucket"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -186,9 +193,6 @@ func (c *Client) addOperationCreateBucketMiddlewares(stack *middleware.Stack, op
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -204,10 +208,7 @@ func (c *Client) addOperationCreateBucketMiddlewares(stack *middleware.Stack, op
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addCreateBucketResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpCreateBucketValidationMiddleware(stack); err != nil {
|
||||
@@ -237,7 +238,7 @@ func (c *Client) addOperationCreateBucketMiddlewares(stack *middleware.Stack, op
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -257,7 +258,6 @@ func newServiceMetadataMiddleware_opCreateBucket(region string) *awsmiddleware.R
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "CreateBucket",
|
||||
}
|
||||
}
|
||||
@@ -287,141 +287,3 @@ func addCreateBucketUpdateEndpoint(stack *middleware.Stack, options Options) err
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opCreateBucketResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opCreateBucketResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opCreateBucketResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*CreateBucketInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
params.DisableAccessPoints = ptr.Bool(true)
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addCreateBucketResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opCreateBucketResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
+16
-152
@@ -4,16 +4,11 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
"time"
|
||||
@@ -229,7 +224,7 @@ type CreateMultipartUploadInput struct {
|
||||
// Setting this header to true causes Amazon S3 to use an S3 Bucket Key for object
|
||||
// encryption with SSE-KMS. Specifying this header with an object action doesn’t
|
||||
// affect bucket-level settings for S3 Bucket Key.
|
||||
BucketKeyEnabled bool
|
||||
BucketKeyEnabled *bool
|
||||
|
||||
// Specifies caching behavior along the request/reply chain.
|
||||
CacheControl *string
|
||||
@@ -351,6 +346,11 @@ type CreateMultipartUploadInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *CreateMultipartUploadInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type CreateMultipartUploadOutput struct {
|
||||
|
||||
// If the bucket has a lifecycle rule configured with an action to abort
|
||||
@@ -388,7 +388,7 @@ type CreateMultipartUploadOutput struct {
|
||||
|
||||
// Indicates whether the multipart upload uses an S3 Bucket Key for server-side
|
||||
// encryption with Key Management Service (KMS) keys (SSE-KMS).
|
||||
BucketKeyEnabled bool
|
||||
BucketKeyEnabled *bool
|
||||
|
||||
// The algorithm that was used to create a checksum of the object.
|
||||
ChecksumAlgorithm types.ChecksumAlgorithm
|
||||
@@ -433,6 +433,9 @@ type CreateMultipartUploadOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationCreateMultipartUploadMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpCreateMultipartUpload{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -441,6 +444,10 @@ func (c *Client) addOperationCreateMultipartUploadMiddlewares(stack *middleware.
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "CreateMultipartUpload"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -462,9 +469,6 @@ func (c *Client) addOperationCreateMultipartUploadMiddlewares(stack *middleware.
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -480,10 +484,7 @@ func (c *Client) addOperationCreateMultipartUploadMiddlewares(stack *middleware.
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addCreateMultipartUploadResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpCreateMultipartUploadValidationMiddleware(stack); err != nil {
|
||||
@@ -513,7 +514,7 @@ func (c *Client) addOperationCreateMultipartUploadMiddlewares(stack *middleware.
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -533,7 +534,6 @@ func newServiceMetadataMiddleware_opCreateMultipartUpload(region string) *awsmid
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "CreateMultipartUpload",
|
||||
}
|
||||
}
|
||||
@@ -563,139 +563,3 @@ func addCreateMultipartUploadUpdateEndpoint(stack *middleware.Stack, options Opt
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opCreateMultipartUploadResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opCreateMultipartUploadResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opCreateMultipartUploadResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*CreateMultipartUploadInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addCreateMultipartUploadResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opCreateMultipartUploadResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
+14
-150
@@ -4,15 +4,10 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -52,6 +47,11 @@ type DeleteBucketInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *DeleteBucketInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type DeleteBucketOutput struct {
|
||||
// Metadata pertaining to the operation's result.
|
||||
ResultMetadata middleware.Metadata
|
||||
@@ -60,6 +60,9 @@ type DeleteBucketOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationDeleteBucketMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpDeleteBucket{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -68,6 +71,10 @@ func (c *Client) addOperationDeleteBucketMiddlewares(stack *middleware.Stack, op
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "DeleteBucket"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -89,9 +96,6 @@ func (c *Client) addOperationDeleteBucketMiddlewares(stack *middleware.Stack, op
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -107,10 +111,7 @@ func (c *Client) addOperationDeleteBucketMiddlewares(stack *middleware.Stack, op
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addDeleteBucketResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpDeleteBucketValidationMiddleware(stack); err != nil {
|
||||
@@ -140,7 +141,7 @@ func (c *Client) addOperationDeleteBucketMiddlewares(stack *middleware.Stack, op
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -160,7 +161,6 @@ func newServiceMetadataMiddleware_opDeleteBucket(region string) *awsmiddleware.R
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "DeleteBucket",
|
||||
}
|
||||
}
|
||||
@@ -221,139 +221,3 @@ func addDeleteBucketPayloadAsUnsigned(stack *middleware.Stack, options Options)
|
||||
v4.RemoveComputePayloadSHA256Middleware(stack)
|
||||
return v4.AddUnsignedPayloadMiddleware(stack)
|
||||
}
|
||||
|
||||
type opDeleteBucketResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opDeleteBucketResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opDeleteBucketResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*DeleteBucketInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addDeleteBucketResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opDeleteBucketResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
Generated
Vendored
+14
-150
@@ -4,15 +4,10 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -65,6 +60,11 @@ type DeleteBucketAnalyticsConfigurationInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *DeleteBucketAnalyticsConfigurationInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type DeleteBucketAnalyticsConfigurationOutput struct {
|
||||
// Metadata pertaining to the operation's result.
|
||||
ResultMetadata middleware.Metadata
|
||||
@@ -73,6 +73,9 @@ type DeleteBucketAnalyticsConfigurationOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationDeleteBucketAnalyticsConfigurationMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpDeleteBucketAnalyticsConfiguration{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -81,6 +84,10 @@ func (c *Client) addOperationDeleteBucketAnalyticsConfigurationMiddlewares(stack
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "DeleteBucketAnalyticsConfiguration"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -102,9 +109,6 @@ func (c *Client) addOperationDeleteBucketAnalyticsConfigurationMiddlewares(stack
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -120,10 +124,7 @@ func (c *Client) addOperationDeleteBucketAnalyticsConfigurationMiddlewares(stack
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addDeleteBucketAnalyticsConfigurationResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpDeleteBucketAnalyticsConfigurationValidationMiddleware(stack); err != nil {
|
||||
@@ -153,7 +154,7 @@ func (c *Client) addOperationDeleteBucketAnalyticsConfigurationMiddlewares(stack
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -173,7 +174,6 @@ func newServiceMetadataMiddleware_opDeleteBucketAnalyticsConfiguration(region st
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "DeleteBucketAnalyticsConfiguration",
|
||||
}
|
||||
}
|
||||
@@ -203,139 +203,3 @@ func addDeleteBucketAnalyticsConfigurationUpdateEndpoint(stack *middleware.Stack
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opDeleteBucketAnalyticsConfigurationResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opDeleteBucketAnalyticsConfigurationResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opDeleteBucketAnalyticsConfigurationResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*DeleteBucketAnalyticsConfigurationInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addDeleteBucketAnalyticsConfigurationResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opDeleteBucketAnalyticsConfigurationResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
+14
-150
@@ -4,15 +4,10 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -54,6 +49,11 @@ type DeleteBucketCorsInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *DeleteBucketCorsInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type DeleteBucketCorsOutput struct {
|
||||
// Metadata pertaining to the operation's result.
|
||||
ResultMetadata middleware.Metadata
|
||||
@@ -62,6 +62,9 @@ type DeleteBucketCorsOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationDeleteBucketCorsMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpDeleteBucketCors{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -70,6 +73,10 @@ func (c *Client) addOperationDeleteBucketCorsMiddlewares(stack *middleware.Stack
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "DeleteBucketCors"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -91,9 +98,6 @@ func (c *Client) addOperationDeleteBucketCorsMiddlewares(stack *middleware.Stack
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -109,10 +113,7 @@ func (c *Client) addOperationDeleteBucketCorsMiddlewares(stack *middleware.Stack
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addDeleteBucketCorsResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpDeleteBucketCorsValidationMiddleware(stack); err != nil {
|
||||
@@ -142,7 +143,7 @@ func (c *Client) addOperationDeleteBucketCorsMiddlewares(stack *middleware.Stack
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -162,7 +163,6 @@ func newServiceMetadataMiddleware_opDeleteBucketCors(region string) *awsmiddlewa
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "DeleteBucketCors",
|
||||
}
|
||||
}
|
||||
@@ -192,139 +192,3 @@ func addDeleteBucketCorsUpdateEndpoint(stack *middleware.Stack, options Options)
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opDeleteBucketCorsResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opDeleteBucketCorsResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opDeleteBucketCorsResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*DeleteBucketCorsInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addDeleteBucketCorsResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opDeleteBucketCorsResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
+14
-150
@@ -4,15 +4,10 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -62,6 +57,11 @@ type DeleteBucketEncryptionInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *DeleteBucketEncryptionInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type DeleteBucketEncryptionOutput struct {
|
||||
// Metadata pertaining to the operation's result.
|
||||
ResultMetadata middleware.Metadata
|
||||
@@ -70,6 +70,9 @@ type DeleteBucketEncryptionOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationDeleteBucketEncryptionMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpDeleteBucketEncryption{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -78,6 +81,10 @@ func (c *Client) addOperationDeleteBucketEncryptionMiddlewares(stack *middleware
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "DeleteBucketEncryption"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -99,9 +106,6 @@ func (c *Client) addOperationDeleteBucketEncryptionMiddlewares(stack *middleware
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -117,10 +121,7 @@ func (c *Client) addOperationDeleteBucketEncryptionMiddlewares(stack *middleware
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addDeleteBucketEncryptionResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpDeleteBucketEncryptionValidationMiddleware(stack); err != nil {
|
||||
@@ -150,7 +151,7 @@ func (c *Client) addOperationDeleteBucketEncryptionMiddlewares(stack *middleware
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -170,7 +171,6 @@ func newServiceMetadataMiddleware_opDeleteBucketEncryption(region string) *awsmi
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "DeleteBucketEncryption",
|
||||
}
|
||||
}
|
||||
@@ -200,139 +200,3 @@ func addDeleteBucketEncryptionUpdateEndpoint(stack *middleware.Stack, options Op
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opDeleteBucketEncryptionResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opDeleteBucketEncryptionResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opDeleteBucketEncryptionResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*DeleteBucketEncryptionInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addDeleteBucketEncryptionResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opDeleteBucketEncryptionResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
vendor/github.com/aws/aws-sdk-go-v2/service/s3/api_op_DeleteBucketIntelligentTieringConfiguration.go
Generated
Vendored
+14
-150
@@ -4,15 +4,10 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -66,6 +61,11 @@ type DeleteBucketIntelligentTieringConfigurationInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *DeleteBucketIntelligentTieringConfigurationInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type DeleteBucketIntelligentTieringConfigurationOutput struct {
|
||||
// Metadata pertaining to the operation's result.
|
||||
ResultMetadata middleware.Metadata
|
||||
@@ -74,6 +74,9 @@ type DeleteBucketIntelligentTieringConfigurationOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationDeleteBucketIntelligentTieringConfigurationMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpDeleteBucketIntelligentTieringConfiguration{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -82,6 +85,10 @@ func (c *Client) addOperationDeleteBucketIntelligentTieringConfigurationMiddlewa
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "DeleteBucketIntelligentTieringConfiguration"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -103,9 +110,6 @@ func (c *Client) addOperationDeleteBucketIntelligentTieringConfigurationMiddlewa
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -121,10 +125,7 @@ func (c *Client) addOperationDeleteBucketIntelligentTieringConfigurationMiddlewa
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addDeleteBucketIntelligentTieringConfigurationResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpDeleteBucketIntelligentTieringConfigurationValidationMiddleware(stack); err != nil {
|
||||
@@ -154,7 +155,7 @@ func (c *Client) addOperationDeleteBucketIntelligentTieringConfigurationMiddlewa
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -174,7 +175,6 @@ func newServiceMetadataMiddleware_opDeleteBucketIntelligentTieringConfiguration(
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "DeleteBucketIntelligentTieringConfiguration",
|
||||
}
|
||||
}
|
||||
@@ -204,139 +204,3 @@ func addDeleteBucketIntelligentTieringConfigurationUpdateEndpoint(stack *middlew
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opDeleteBucketIntelligentTieringConfigurationResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opDeleteBucketIntelligentTieringConfigurationResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opDeleteBucketIntelligentTieringConfigurationResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*DeleteBucketIntelligentTieringConfigurationInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addDeleteBucketIntelligentTieringConfigurationResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opDeleteBucketIntelligentTieringConfigurationResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
Generated
Vendored
+14
-150
@@ -4,15 +4,10 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -64,6 +59,11 @@ type DeleteBucketInventoryConfigurationInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *DeleteBucketInventoryConfigurationInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type DeleteBucketInventoryConfigurationOutput struct {
|
||||
// Metadata pertaining to the operation's result.
|
||||
ResultMetadata middleware.Metadata
|
||||
@@ -72,6 +72,9 @@ type DeleteBucketInventoryConfigurationOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationDeleteBucketInventoryConfigurationMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpDeleteBucketInventoryConfiguration{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -80,6 +83,10 @@ func (c *Client) addOperationDeleteBucketInventoryConfigurationMiddlewares(stack
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "DeleteBucketInventoryConfiguration"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -101,9 +108,6 @@ func (c *Client) addOperationDeleteBucketInventoryConfigurationMiddlewares(stack
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -119,10 +123,7 @@ func (c *Client) addOperationDeleteBucketInventoryConfigurationMiddlewares(stack
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addDeleteBucketInventoryConfigurationResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpDeleteBucketInventoryConfigurationValidationMiddleware(stack); err != nil {
|
||||
@@ -152,7 +153,7 @@ func (c *Client) addOperationDeleteBucketInventoryConfigurationMiddlewares(stack
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -172,7 +173,6 @@ func newServiceMetadataMiddleware_opDeleteBucketInventoryConfiguration(region st
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "DeleteBucketInventoryConfiguration",
|
||||
}
|
||||
}
|
||||
@@ -202,139 +202,3 @@ func addDeleteBucketInventoryConfigurationUpdateEndpoint(stack *middleware.Stack
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opDeleteBucketInventoryConfigurationResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opDeleteBucketInventoryConfigurationResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opDeleteBucketInventoryConfigurationResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*DeleteBucketInventoryConfigurationInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addDeleteBucketInventoryConfigurationResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opDeleteBucketInventoryConfigurationResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
+14
-150
@@ -4,15 +4,10 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -60,6 +55,11 @@ type DeleteBucketLifecycleInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *DeleteBucketLifecycleInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type DeleteBucketLifecycleOutput struct {
|
||||
// Metadata pertaining to the operation's result.
|
||||
ResultMetadata middleware.Metadata
|
||||
@@ -68,6 +68,9 @@ type DeleteBucketLifecycleOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationDeleteBucketLifecycleMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpDeleteBucketLifecycle{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -76,6 +79,10 @@ func (c *Client) addOperationDeleteBucketLifecycleMiddlewares(stack *middleware.
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "DeleteBucketLifecycle"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -97,9 +104,6 @@ func (c *Client) addOperationDeleteBucketLifecycleMiddlewares(stack *middleware.
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -115,10 +119,7 @@ func (c *Client) addOperationDeleteBucketLifecycleMiddlewares(stack *middleware.
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addDeleteBucketLifecycleResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpDeleteBucketLifecycleValidationMiddleware(stack); err != nil {
|
||||
@@ -148,7 +149,7 @@ func (c *Client) addOperationDeleteBucketLifecycleMiddlewares(stack *middleware.
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -168,7 +169,6 @@ func newServiceMetadataMiddleware_opDeleteBucketLifecycle(region string) *awsmid
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "DeleteBucketLifecycle",
|
||||
}
|
||||
}
|
||||
@@ -198,139 +198,3 @@ func addDeleteBucketLifecycleUpdateEndpoint(stack *middleware.Stack, options Opt
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opDeleteBucketLifecycleResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opDeleteBucketLifecycleResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opDeleteBucketLifecycleResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*DeleteBucketLifecycleInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addDeleteBucketLifecycleResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opDeleteBucketLifecycleResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
Generated
Vendored
+14
-150
@@ -4,15 +4,10 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -68,6 +63,11 @@ type DeleteBucketMetricsConfigurationInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *DeleteBucketMetricsConfigurationInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type DeleteBucketMetricsConfigurationOutput struct {
|
||||
// Metadata pertaining to the operation's result.
|
||||
ResultMetadata middleware.Metadata
|
||||
@@ -76,6 +76,9 @@ type DeleteBucketMetricsConfigurationOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationDeleteBucketMetricsConfigurationMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpDeleteBucketMetricsConfiguration{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -84,6 +87,10 @@ func (c *Client) addOperationDeleteBucketMetricsConfigurationMiddlewares(stack *
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "DeleteBucketMetricsConfiguration"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -105,9 +112,6 @@ func (c *Client) addOperationDeleteBucketMetricsConfigurationMiddlewares(stack *
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -123,10 +127,7 @@ func (c *Client) addOperationDeleteBucketMetricsConfigurationMiddlewares(stack *
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addDeleteBucketMetricsConfigurationResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpDeleteBucketMetricsConfigurationValidationMiddleware(stack); err != nil {
|
||||
@@ -156,7 +157,7 @@ func (c *Client) addOperationDeleteBucketMetricsConfigurationMiddlewares(stack *
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -176,7 +177,6 @@ func newServiceMetadataMiddleware_opDeleteBucketMetricsConfiguration(region stri
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "DeleteBucketMetricsConfiguration",
|
||||
}
|
||||
}
|
||||
@@ -206,139 +206,3 @@ func addDeleteBucketMetricsConfigurationUpdateEndpoint(stack *middleware.Stack,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opDeleteBucketMetricsConfigurationResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opDeleteBucketMetricsConfigurationResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opDeleteBucketMetricsConfigurationResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*DeleteBucketMetricsConfigurationInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addDeleteBucketMetricsConfigurationResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opDeleteBucketMetricsConfigurationResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
Generated
Vendored
+14
-150
@@ -4,15 +4,10 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -54,6 +49,11 @@ type DeleteBucketOwnershipControlsInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *DeleteBucketOwnershipControlsInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type DeleteBucketOwnershipControlsOutput struct {
|
||||
// Metadata pertaining to the operation's result.
|
||||
ResultMetadata middleware.Metadata
|
||||
@@ -62,6 +62,9 @@ type DeleteBucketOwnershipControlsOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationDeleteBucketOwnershipControlsMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpDeleteBucketOwnershipControls{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -70,6 +73,10 @@ func (c *Client) addOperationDeleteBucketOwnershipControlsMiddlewares(stack *mid
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "DeleteBucketOwnershipControls"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -91,9 +98,6 @@ func (c *Client) addOperationDeleteBucketOwnershipControlsMiddlewares(stack *mid
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -109,10 +113,7 @@ func (c *Client) addOperationDeleteBucketOwnershipControlsMiddlewares(stack *mid
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addDeleteBucketOwnershipControlsResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpDeleteBucketOwnershipControlsValidationMiddleware(stack); err != nil {
|
||||
@@ -142,7 +143,7 @@ func (c *Client) addOperationDeleteBucketOwnershipControlsMiddlewares(stack *mid
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -162,7 +163,6 @@ func newServiceMetadataMiddleware_opDeleteBucketOwnershipControls(region string)
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "DeleteBucketOwnershipControls",
|
||||
}
|
||||
}
|
||||
@@ -192,139 +192,3 @@ func addDeleteBucketOwnershipControlsUpdateEndpoint(stack *middleware.Stack, opt
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opDeleteBucketOwnershipControlsResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opDeleteBucketOwnershipControlsResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opDeleteBucketOwnershipControlsResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*DeleteBucketOwnershipControlsInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addDeleteBucketOwnershipControlsResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opDeleteBucketOwnershipControlsResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
+14
-150
@@ -4,15 +4,10 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -66,6 +61,11 @@ type DeleteBucketPolicyInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *DeleteBucketPolicyInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type DeleteBucketPolicyOutput struct {
|
||||
// Metadata pertaining to the operation's result.
|
||||
ResultMetadata middleware.Metadata
|
||||
@@ -74,6 +74,9 @@ type DeleteBucketPolicyOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationDeleteBucketPolicyMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpDeleteBucketPolicy{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -82,6 +85,10 @@ func (c *Client) addOperationDeleteBucketPolicyMiddlewares(stack *middleware.Sta
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "DeleteBucketPolicy"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -103,9 +110,6 @@ func (c *Client) addOperationDeleteBucketPolicyMiddlewares(stack *middleware.Sta
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -121,10 +125,7 @@ func (c *Client) addOperationDeleteBucketPolicyMiddlewares(stack *middleware.Sta
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addDeleteBucketPolicyResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpDeleteBucketPolicyValidationMiddleware(stack); err != nil {
|
||||
@@ -154,7 +155,7 @@ func (c *Client) addOperationDeleteBucketPolicyMiddlewares(stack *middleware.Sta
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -174,7 +175,6 @@ func newServiceMetadataMiddleware_opDeleteBucketPolicy(region string) *awsmiddle
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "DeleteBucketPolicy",
|
||||
}
|
||||
}
|
||||
@@ -204,139 +204,3 @@ func addDeleteBucketPolicyUpdateEndpoint(stack *middleware.Stack, options Option
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opDeleteBucketPolicyResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opDeleteBucketPolicyResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opDeleteBucketPolicyResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*DeleteBucketPolicyInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addDeleteBucketPolicyResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opDeleteBucketPolicyResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
+14
-150
@@ -4,15 +4,10 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -59,6 +54,11 @@ type DeleteBucketReplicationInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *DeleteBucketReplicationInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type DeleteBucketReplicationOutput struct {
|
||||
// Metadata pertaining to the operation's result.
|
||||
ResultMetadata middleware.Metadata
|
||||
@@ -67,6 +67,9 @@ type DeleteBucketReplicationOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationDeleteBucketReplicationMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpDeleteBucketReplication{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -75,6 +78,10 @@ func (c *Client) addOperationDeleteBucketReplicationMiddlewares(stack *middlewar
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "DeleteBucketReplication"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -96,9 +103,6 @@ func (c *Client) addOperationDeleteBucketReplicationMiddlewares(stack *middlewar
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -114,10 +118,7 @@ func (c *Client) addOperationDeleteBucketReplicationMiddlewares(stack *middlewar
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addDeleteBucketReplicationResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpDeleteBucketReplicationValidationMiddleware(stack); err != nil {
|
||||
@@ -147,7 +148,7 @@ func (c *Client) addOperationDeleteBucketReplicationMiddlewares(stack *middlewar
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -167,7 +168,6 @@ func newServiceMetadataMiddleware_opDeleteBucketReplication(region string) *awsm
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "DeleteBucketReplication",
|
||||
}
|
||||
}
|
||||
@@ -197,139 +197,3 @@ func addDeleteBucketReplicationUpdateEndpoint(stack *middleware.Stack, options O
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opDeleteBucketReplicationResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opDeleteBucketReplicationResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opDeleteBucketReplicationResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*DeleteBucketReplicationInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addDeleteBucketReplicationResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opDeleteBucketReplicationResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
+14
-150
@@ -4,15 +4,10 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -53,6 +48,11 @@ type DeleteBucketTaggingInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *DeleteBucketTaggingInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type DeleteBucketTaggingOutput struct {
|
||||
// Metadata pertaining to the operation's result.
|
||||
ResultMetadata middleware.Metadata
|
||||
@@ -61,6 +61,9 @@ type DeleteBucketTaggingOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationDeleteBucketTaggingMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpDeleteBucketTagging{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -69,6 +72,10 @@ func (c *Client) addOperationDeleteBucketTaggingMiddlewares(stack *middleware.St
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "DeleteBucketTagging"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -90,9 +97,6 @@ func (c *Client) addOperationDeleteBucketTaggingMiddlewares(stack *middleware.St
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -108,10 +112,7 @@ func (c *Client) addOperationDeleteBucketTaggingMiddlewares(stack *middleware.St
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addDeleteBucketTaggingResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpDeleteBucketTaggingValidationMiddleware(stack); err != nil {
|
||||
@@ -141,7 +142,7 @@ func (c *Client) addOperationDeleteBucketTaggingMiddlewares(stack *middleware.St
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -161,7 +162,6 @@ func newServiceMetadataMiddleware_opDeleteBucketTagging(region string) *awsmiddl
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "DeleteBucketTagging",
|
||||
}
|
||||
}
|
||||
@@ -191,139 +191,3 @@ func addDeleteBucketTaggingUpdateEndpoint(stack *middleware.Stack, options Optio
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opDeleteBucketTaggingResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opDeleteBucketTaggingResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opDeleteBucketTaggingResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*DeleteBucketTaggingInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addDeleteBucketTaggingResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opDeleteBucketTaggingResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
+14
-150
@@ -4,15 +4,10 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -61,6 +56,11 @@ type DeleteBucketWebsiteInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *DeleteBucketWebsiteInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type DeleteBucketWebsiteOutput struct {
|
||||
// Metadata pertaining to the operation's result.
|
||||
ResultMetadata middleware.Metadata
|
||||
@@ -69,6 +69,9 @@ type DeleteBucketWebsiteOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationDeleteBucketWebsiteMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpDeleteBucketWebsite{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -77,6 +80,10 @@ func (c *Client) addOperationDeleteBucketWebsiteMiddlewares(stack *middleware.St
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "DeleteBucketWebsite"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -98,9 +105,6 @@ func (c *Client) addOperationDeleteBucketWebsiteMiddlewares(stack *middleware.St
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -116,10 +120,7 @@ func (c *Client) addOperationDeleteBucketWebsiteMiddlewares(stack *middleware.St
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addDeleteBucketWebsiteResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpDeleteBucketWebsiteValidationMiddleware(stack); err != nil {
|
||||
@@ -149,7 +150,7 @@ func (c *Client) addOperationDeleteBucketWebsiteMiddlewares(stack *middleware.St
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -169,7 +170,6 @@ func newServiceMetadataMiddleware_opDeleteBucketWebsite(region string) *awsmiddl
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "DeleteBucketWebsite",
|
||||
}
|
||||
}
|
||||
@@ -199,139 +199,3 @@ func addDeleteBucketWebsiteUpdateEndpoint(stack *middleware.Stack, options Optio
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opDeleteBucketWebsiteResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opDeleteBucketWebsiteResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opDeleteBucketWebsiteResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*DeleteBucketWebsiteInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addDeleteBucketWebsiteResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opDeleteBucketWebsiteResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
+16
-152
@@ -4,16 +4,11 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -81,7 +76,7 @@ type DeleteObjectInput struct {
|
||||
// Indicates whether S3 Object Lock should bypass Governance-mode restrictions to
|
||||
// process this operation. To use this header, you must have the
|
||||
// s3:BypassGovernanceRetention permission.
|
||||
BypassGovernanceRetention bool
|
||||
BypassGovernanceRetention *bool
|
||||
|
||||
// The account ID of the expected bucket owner. If the bucket is owned by a
|
||||
// different account, the request fails with the HTTP status code 403 Forbidden
|
||||
@@ -109,13 +104,18 @@ type DeleteObjectInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *DeleteObjectInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type DeleteObjectOutput struct {
|
||||
|
||||
// Indicates whether the specified object version that was permanently deleted was
|
||||
// (true) or was not (false) a delete marker before deletion. In a simple DELETE,
|
||||
// this header indicates whether (true) or not (false) the current version of the
|
||||
// object is a delete marker.
|
||||
DeleteMarker bool
|
||||
DeleteMarker *bool
|
||||
|
||||
// If present, indicates that the requester was successfully charged for the
|
||||
// request.
|
||||
@@ -132,6 +132,9 @@ type DeleteObjectOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationDeleteObjectMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpDeleteObject{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -140,6 +143,10 @@ func (c *Client) addOperationDeleteObjectMiddlewares(stack *middleware.Stack, op
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "DeleteObject"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -161,9 +168,6 @@ func (c *Client) addOperationDeleteObjectMiddlewares(stack *middleware.Stack, op
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -179,10 +183,7 @@ func (c *Client) addOperationDeleteObjectMiddlewares(stack *middleware.Stack, op
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addDeleteObjectResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpDeleteObjectValidationMiddleware(stack); err != nil {
|
||||
@@ -212,7 +213,7 @@ func (c *Client) addOperationDeleteObjectMiddlewares(stack *middleware.Stack, op
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -232,7 +233,6 @@ func newServiceMetadataMiddleware_opDeleteObject(region string) *awsmiddleware.R
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "DeleteObject",
|
||||
}
|
||||
}
|
||||
@@ -293,139 +293,3 @@ func addDeleteObjectPayloadAsUnsigned(stack *middleware.Stack, options Options)
|
||||
v4.RemoveComputePayloadSHA256Middleware(stack)
|
||||
return v4.AddUnsignedPayloadMiddleware(stack)
|
||||
}
|
||||
|
||||
type opDeleteObjectResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opDeleteObjectResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opDeleteObjectResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*DeleteObjectInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addDeleteObjectResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opDeleteObjectResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
+14
-150
@@ -4,15 +4,10 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -78,6 +73,11 @@ type DeleteObjectTaggingInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *DeleteObjectTaggingInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type DeleteObjectTaggingOutput struct {
|
||||
|
||||
// The versionId of the object the tag-set was removed from.
|
||||
@@ -90,6 +90,9 @@ type DeleteObjectTaggingOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationDeleteObjectTaggingMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpDeleteObjectTagging{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -98,6 +101,10 @@ func (c *Client) addOperationDeleteObjectTaggingMiddlewares(stack *middleware.St
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "DeleteObjectTagging"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -119,9 +126,6 @@ func (c *Client) addOperationDeleteObjectTaggingMiddlewares(stack *middleware.St
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -137,10 +141,7 @@ func (c *Client) addOperationDeleteObjectTaggingMiddlewares(stack *middleware.St
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addDeleteObjectTaggingResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpDeleteObjectTaggingValidationMiddleware(stack); err != nil {
|
||||
@@ -170,7 +171,7 @@ func (c *Client) addOperationDeleteObjectTaggingMiddlewares(stack *middleware.St
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -190,7 +191,6 @@ func newServiceMetadataMiddleware_opDeleteObjectTagging(region string) *awsmiddl
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "DeleteObjectTagging",
|
||||
}
|
||||
}
|
||||
@@ -220,139 +220,3 @@ func addDeleteObjectTaggingUpdateEndpoint(stack *middleware.Stack, options Optio
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opDeleteObjectTaggingResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opDeleteObjectTaggingResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opDeleteObjectTaggingResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*DeleteObjectTaggingInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addDeleteObjectTaggingResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opDeleteObjectTaggingResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
+15
-151
@@ -4,17 +4,12 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
internalChecksum "github.com/aws/aws-sdk-go-v2/service/internal/checksum"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -93,7 +88,7 @@ type DeleteObjectsInput struct {
|
||||
// Specifies whether you want to delete this object even if it has a
|
||||
// Governance-type Object Lock in place. To use this header, you must have the
|
||||
// s3:BypassGovernanceRetention permission.
|
||||
BypassGovernanceRetention bool
|
||||
BypassGovernanceRetention *bool
|
||||
|
||||
// Indicates the algorithm used to create the checksum for the object when using
|
||||
// the SDK. This header will not provide any additional functionality if not using
|
||||
@@ -130,6 +125,11 @@ type DeleteObjectsInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *DeleteObjectsInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type DeleteObjectsOutput struct {
|
||||
|
||||
// Container element for a successful delete. It identifies the object that was
|
||||
@@ -151,6 +151,9 @@ type DeleteObjectsOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationDeleteObjectsMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpDeleteObjects{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -159,6 +162,10 @@ func (c *Client) addOperationDeleteObjectsMiddlewares(stack *middleware.Stack, o
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "DeleteObjects"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -180,9 +187,6 @@ func (c *Client) addOperationDeleteObjectsMiddlewares(stack *middleware.Stack, o
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -198,10 +202,7 @@ func (c *Client) addOperationDeleteObjectsMiddlewares(stack *middleware.Stack, o
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addDeleteObjectsResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpDeleteObjectsValidationMiddleware(stack); err != nil {
|
||||
@@ -234,7 +235,7 @@ func (c *Client) addOperationDeleteObjectsMiddlewares(stack *middleware.Stack, o
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -254,7 +255,6 @@ func newServiceMetadataMiddleware_opDeleteObjects(region string) *awsmiddleware.
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "DeleteObjects",
|
||||
}
|
||||
}
|
||||
@@ -304,139 +304,3 @@ func addDeleteObjectsUpdateEndpoint(stack *middleware.Stack, options Options) er
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opDeleteObjectsResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opDeleteObjectsResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opDeleteObjectsResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*DeleteObjectsInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addDeleteObjectsResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opDeleteObjectsResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
+14
-150
@@ -4,15 +4,10 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -57,6 +52,11 @@ type DeletePublicAccessBlockInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *DeletePublicAccessBlockInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type DeletePublicAccessBlockOutput struct {
|
||||
// Metadata pertaining to the operation's result.
|
||||
ResultMetadata middleware.Metadata
|
||||
@@ -65,6 +65,9 @@ type DeletePublicAccessBlockOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationDeletePublicAccessBlockMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpDeletePublicAccessBlock{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -73,6 +76,10 @@ func (c *Client) addOperationDeletePublicAccessBlockMiddlewares(stack *middlewar
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "DeletePublicAccessBlock"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -94,9 +101,6 @@ func (c *Client) addOperationDeletePublicAccessBlockMiddlewares(stack *middlewar
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -112,10 +116,7 @@ func (c *Client) addOperationDeletePublicAccessBlockMiddlewares(stack *middlewar
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addDeletePublicAccessBlockResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpDeletePublicAccessBlockValidationMiddleware(stack); err != nil {
|
||||
@@ -145,7 +146,7 @@ func (c *Client) addOperationDeletePublicAccessBlockMiddlewares(stack *middlewar
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -165,7 +166,6 @@ func newServiceMetadataMiddleware_opDeletePublicAccessBlock(region string) *awsm
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "DeletePublicAccessBlock",
|
||||
}
|
||||
}
|
||||
@@ -195,139 +195,3 @@ func addDeletePublicAccessBlockUpdateEndpoint(stack *middleware.Stack, options O
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opDeletePublicAccessBlockResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opDeletePublicAccessBlockResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opDeletePublicAccessBlockResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*DeletePublicAccessBlockInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addDeletePublicAccessBlockResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opDeletePublicAccessBlockResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
Generated
Vendored
+14
-150
@@ -4,16 +4,11 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -76,6 +71,11 @@ type GetBucketAccelerateConfigurationInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *GetBucketAccelerateConfigurationInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type GetBucketAccelerateConfigurationOutput struct {
|
||||
|
||||
// If present, indicates that the requester was successfully charged for the
|
||||
@@ -92,6 +92,9 @@ type GetBucketAccelerateConfigurationOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationGetBucketAccelerateConfigurationMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpGetBucketAccelerateConfiguration{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -100,6 +103,10 @@ func (c *Client) addOperationGetBucketAccelerateConfigurationMiddlewares(stack *
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "GetBucketAccelerateConfiguration"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -121,9 +128,6 @@ func (c *Client) addOperationGetBucketAccelerateConfigurationMiddlewares(stack *
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -139,10 +143,7 @@ func (c *Client) addOperationGetBucketAccelerateConfigurationMiddlewares(stack *
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addGetBucketAccelerateConfigurationResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpGetBucketAccelerateConfigurationValidationMiddleware(stack); err != nil {
|
||||
@@ -172,7 +173,7 @@ func (c *Client) addOperationGetBucketAccelerateConfigurationMiddlewares(stack *
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -192,7 +193,6 @@ func newServiceMetadataMiddleware_opGetBucketAccelerateConfiguration(region stri
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "GetBucketAccelerateConfiguration",
|
||||
}
|
||||
}
|
||||
@@ -222,139 +222,3 @@ func addGetBucketAccelerateConfigurationUpdateEndpoint(stack *middleware.Stack,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opGetBucketAccelerateConfigurationResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opGetBucketAccelerateConfigurationResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opGetBucketAccelerateConfigurationResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*GetBucketAccelerateConfigurationInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addGetBucketAccelerateConfigurationResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opGetBucketAccelerateConfigurationResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
+14
-150
@@ -4,16 +4,11 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -74,6 +69,11 @@ type GetBucketAclInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *GetBucketAclInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type GetBucketAclOutput struct {
|
||||
|
||||
// A list of grants.
|
||||
@@ -89,6 +89,9 @@ type GetBucketAclOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationGetBucketAclMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpGetBucketAcl{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -97,6 +100,10 @@ func (c *Client) addOperationGetBucketAclMiddlewares(stack *middleware.Stack, op
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "GetBucketAcl"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -118,9 +125,6 @@ func (c *Client) addOperationGetBucketAclMiddlewares(stack *middleware.Stack, op
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -136,10 +140,7 @@ func (c *Client) addOperationGetBucketAclMiddlewares(stack *middleware.Stack, op
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addGetBucketAclResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpGetBucketAclValidationMiddleware(stack); err != nil {
|
||||
@@ -169,7 +170,7 @@ func (c *Client) addOperationGetBucketAclMiddlewares(stack *middleware.Stack, op
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -189,7 +190,6 @@ func newServiceMetadataMiddleware_opGetBucketAcl(region string) *awsmiddleware.R
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "GetBucketAcl",
|
||||
}
|
||||
}
|
||||
@@ -219,139 +219,3 @@ func addGetBucketAclUpdateEndpoint(stack *middleware.Stack, options Options) err
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opGetBucketAclResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opGetBucketAclResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opGetBucketAclResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*GetBucketAclInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addGetBucketAclResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opGetBucketAclResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
Generated
Vendored
+14
-150
@@ -4,16 +4,11 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -67,6 +62,11 @@ type GetBucketAnalyticsConfigurationInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *GetBucketAnalyticsConfigurationInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type GetBucketAnalyticsConfigurationOutput struct {
|
||||
|
||||
// The configuration and any analyses for the analytics filter.
|
||||
@@ -79,6 +79,9 @@ type GetBucketAnalyticsConfigurationOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationGetBucketAnalyticsConfigurationMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpGetBucketAnalyticsConfiguration{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -87,6 +90,10 @@ func (c *Client) addOperationGetBucketAnalyticsConfigurationMiddlewares(stack *m
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "GetBucketAnalyticsConfiguration"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -108,9 +115,6 @@ func (c *Client) addOperationGetBucketAnalyticsConfigurationMiddlewares(stack *m
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -126,10 +130,7 @@ func (c *Client) addOperationGetBucketAnalyticsConfigurationMiddlewares(stack *m
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addGetBucketAnalyticsConfigurationResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpGetBucketAnalyticsConfigurationValidationMiddleware(stack); err != nil {
|
||||
@@ -159,7 +160,7 @@ func (c *Client) addOperationGetBucketAnalyticsConfigurationMiddlewares(stack *m
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -179,7 +180,6 @@ func newServiceMetadataMiddleware_opGetBucketAnalyticsConfiguration(region strin
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "GetBucketAnalyticsConfiguration",
|
||||
}
|
||||
}
|
||||
@@ -209,139 +209,3 @@ func addGetBucketAnalyticsConfigurationUpdateEndpoint(stack *middleware.Stack, o
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opGetBucketAnalyticsConfigurationResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opGetBucketAnalyticsConfigurationResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opGetBucketAnalyticsConfigurationResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*GetBucketAnalyticsConfigurationInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addGetBucketAnalyticsConfigurationResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opGetBucketAnalyticsConfigurationResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
+14
-150
@@ -4,16 +4,11 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -69,6 +64,11 @@ type GetBucketCorsInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *GetBucketCorsInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type GetBucketCorsOutput struct {
|
||||
|
||||
// A set of origins and methods (cross-origin access that you want to allow). You
|
||||
@@ -82,6 +82,9 @@ type GetBucketCorsOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationGetBucketCorsMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpGetBucketCors{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -90,6 +93,10 @@ func (c *Client) addOperationGetBucketCorsMiddlewares(stack *middleware.Stack, o
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "GetBucketCors"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -111,9 +118,6 @@ func (c *Client) addOperationGetBucketCorsMiddlewares(stack *middleware.Stack, o
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -129,10 +133,7 @@ func (c *Client) addOperationGetBucketCorsMiddlewares(stack *middleware.Stack, o
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addGetBucketCorsResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpGetBucketCorsValidationMiddleware(stack); err != nil {
|
||||
@@ -162,7 +163,7 @@ func (c *Client) addOperationGetBucketCorsMiddlewares(stack *middleware.Stack, o
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -182,7 +183,6 @@ func newServiceMetadataMiddleware_opGetBucketCors(region string) *awsmiddleware.
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "GetBucketCors",
|
||||
}
|
||||
}
|
||||
@@ -212,139 +212,3 @@ func addGetBucketCorsUpdateEndpoint(stack *middleware.Stack, options Options) er
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opGetBucketCorsResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opGetBucketCorsResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opGetBucketCorsResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*GetBucketCorsInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addGetBucketCorsResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opGetBucketCorsResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
+14
-150
@@ -4,16 +4,11 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -63,6 +58,11 @@ type GetBucketEncryptionInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *GetBucketEncryptionInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type GetBucketEncryptionOutput struct {
|
||||
|
||||
// Specifies the default server-side-encryption configuration.
|
||||
@@ -75,6 +75,9 @@ type GetBucketEncryptionOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationGetBucketEncryptionMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpGetBucketEncryption{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -83,6 +86,10 @@ func (c *Client) addOperationGetBucketEncryptionMiddlewares(stack *middleware.St
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "GetBucketEncryption"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -104,9 +111,6 @@ func (c *Client) addOperationGetBucketEncryptionMiddlewares(stack *middleware.St
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -122,10 +126,7 @@ func (c *Client) addOperationGetBucketEncryptionMiddlewares(stack *middleware.St
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addGetBucketEncryptionResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpGetBucketEncryptionValidationMiddleware(stack); err != nil {
|
||||
@@ -155,7 +156,7 @@ func (c *Client) addOperationGetBucketEncryptionMiddlewares(stack *middleware.St
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -175,7 +176,6 @@ func newServiceMetadataMiddleware_opGetBucketEncryption(region string) *awsmiddl
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "GetBucketEncryption",
|
||||
}
|
||||
}
|
||||
@@ -205,139 +205,3 @@ func addGetBucketEncryptionUpdateEndpoint(stack *middleware.Stack, options Optio
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opGetBucketEncryptionResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opGetBucketEncryptionResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opGetBucketEncryptionResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*GetBucketEncryptionInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addGetBucketEncryptionResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opGetBucketEncryptionResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
Generated
Vendored
+14
-150
@@ -4,16 +4,11 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -67,6 +62,11 @@ type GetBucketIntelligentTieringConfigurationInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *GetBucketIntelligentTieringConfigurationInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type GetBucketIntelligentTieringConfigurationOutput struct {
|
||||
|
||||
// Container for S3 Intelligent-Tiering configuration.
|
||||
@@ -79,6 +79,9 @@ type GetBucketIntelligentTieringConfigurationOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationGetBucketIntelligentTieringConfigurationMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpGetBucketIntelligentTieringConfiguration{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -87,6 +90,10 @@ func (c *Client) addOperationGetBucketIntelligentTieringConfigurationMiddlewares
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "GetBucketIntelligentTieringConfiguration"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -108,9 +115,6 @@ func (c *Client) addOperationGetBucketIntelligentTieringConfigurationMiddlewares
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -126,10 +130,7 @@ func (c *Client) addOperationGetBucketIntelligentTieringConfigurationMiddlewares
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addGetBucketIntelligentTieringConfigurationResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpGetBucketIntelligentTieringConfigurationValidationMiddleware(stack); err != nil {
|
||||
@@ -159,7 +160,7 @@ func (c *Client) addOperationGetBucketIntelligentTieringConfigurationMiddlewares
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -179,7 +180,6 @@ func newServiceMetadataMiddleware_opGetBucketIntelligentTieringConfiguration(reg
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "GetBucketIntelligentTieringConfiguration",
|
||||
}
|
||||
}
|
||||
@@ -209,139 +209,3 @@ func addGetBucketIntelligentTieringConfigurationUpdateEndpoint(stack *middleware
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opGetBucketIntelligentTieringConfigurationResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opGetBucketIntelligentTieringConfigurationResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opGetBucketIntelligentTieringConfigurationResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*GetBucketIntelligentTieringConfigurationInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addGetBucketIntelligentTieringConfigurationResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opGetBucketIntelligentTieringConfigurationResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
Generated
Vendored
+14
-150
@@ -4,16 +4,11 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -64,6 +59,11 @@ type GetBucketInventoryConfigurationInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *GetBucketInventoryConfigurationInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type GetBucketInventoryConfigurationOutput struct {
|
||||
|
||||
// Specifies the inventory configuration.
|
||||
@@ -76,6 +76,9 @@ type GetBucketInventoryConfigurationOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationGetBucketInventoryConfigurationMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpGetBucketInventoryConfiguration{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -84,6 +87,10 @@ func (c *Client) addOperationGetBucketInventoryConfigurationMiddlewares(stack *m
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "GetBucketInventoryConfiguration"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -105,9 +112,6 @@ func (c *Client) addOperationGetBucketInventoryConfigurationMiddlewares(stack *m
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -123,10 +127,7 @@ func (c *Client) addOperationGetBucketInventoryConfigurationMiddlewares(stack *m
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addGetBucketInventoryConfigurationResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpGetBucketInventoryConfigurationValidationMiddleware(stack); err != nil {
|
||||
@@ -156,7 +157,7 @@ func (c *Client) addOperationGetBucketInventoryConfigurationMiddlewares(stack *m
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -176,7 +177,6 @@ func newServiceMetadataMiddleware_opGetBucketInventoryConfiguration(region strin
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "GetBucketInventoryConfiguration",
|
||||
}
|
||||
}
|
||||
@@ -206,139 +206,3 @@ func addGetBucketInventoryConfigurationUpdateEndpoint(stack *middleware.Stack, o
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opGetBucketInventoryConfigurationResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opGetBucketInventoryConfigurationResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opGetBucketInventoryConfigurationResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*GetBucketInventoryConfigurationInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addGetBucketInventoryConfigurationResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opGetBucketInventoryConfigurationResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
Generated
Vendored
+14
-150
@@ -4,16 +4,11 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -73,6 +68,11 @@ type GetBucketLifecycleConfigurationInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *GetBucketLifecycleConfigurationInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type GetBucketLifecycleConfigurationOutput struct {
|
||||
|
||||
// Container for a lifecycle rule.
|
||||
@@ -85,6 +85,9 @@ type GetBucketLifecycleConfigurationOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationGetBucketLifecycleConfigurationMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpGetBucketLifecycleConfiguration{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -93,6 +96,10 @@ func (c *Client) addOperationGetBucketLifecycleConfigurationMiddlewares(stack *m
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "GetBucketLifecycleConfiguration"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -114,9 +121,6 @@ func (c *Client) addOperationGetBucketLifecycleConfigurationMiddlewares(stack *m
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -132,10 +136,7 @@ func (c *Client) addOperationGetBucketLifecycleConfigurationMiddlewares(stack *m
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addGetBucketLifecycleConfigurationResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpGetBucketLifecycleConfigurationValidationMiddleware(stack); err != nil {
|
||||
@@ -165,7 +166,7 @@ func (c *Client) addOperationGetBucketLifecycleConfigurationMiddlewares(stack *m
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -185,7 +186,6 @@ func newServiceMetadataMiddleware_opGetBucketLifecycleConfiguration(region strin
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "GetBucketLifecycleConfiguration",
|
||||
}
|
||||
}
|
||||
@@ -215,139 +215,3 @@ func addGetBucketLifecycleConfigurationUpdateEndpoint(stack *middleware.Stack, o
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opGetBucketLifecycleConfigurationResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opGetBucketLifecycleConfigurationResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opGetBucketLifecycleConfigurationResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*GetBucketLifecycleConfigurationInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addGetBucketLifecycleConfigurationResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opGetBucketLifecycleConfigurationResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
+14
-150
@@ -6,18 +6,13 @@ import (
|
||||
"bytes"
|
||||
"context"
|
||||
"encoding/xml"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
smithy "github.com/aws/smithy-go"
|
||||
smithyxml "github.com/aws/smithy-go/encoding/xml"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
smithyio "github.com/aws/smithy-go/io"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
@@ -77,6 +72,11 @@ type GetBucketLocationInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *GetBucketLocationInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type GetBucketLocationOutput struct {
|
||||
|
||||
// Specifies the Region where the bucket resides. For a list of all the Amazon S3
|
||||
@@ -91,6 +91,9 @@ type GetBucketLocationOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationGetBucketLocationMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpGetBucketLocation{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -99,6 +102,10 @@ func (c *Client) addOperationGetBucketLocationMiddlewares(stack *middleware.Stac
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "GetBucketLocation"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -120,9 +127,6 @@ func (c *Client) addOperationGetBucketLocationMiddlewares(stack *middleware.Stac
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -141,10 +145,7 @@ func (c *Client) addOperationGetBucketLocationMiddlewares(stack *middleware.Stac
|
||||
if err = swapDeserializerHelper(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addGetBucketLocationResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpGetBucketLocationValidationMiddleware(stack); err != nil {
|
||||
@@ -174,7 +175,7 @@ func (c *Client) addOperationGetBucketLocationMiddlewares(stack *middleware.Stac
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -250,7 +251,6 @@ func newServiceMetadataMiddleware_opGetBucketLocation(region string) *awsmiddlew
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "GetBucketLocation",
|
||||
}
|
||||
}
|
||||
@@ -280,139 +280,3 @@ func addGetBucketLocationUpdateEndpoint(stack *middleware.Stack, options Options
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opGetBucketLocationResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opGetBucketLocationResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opGetBucketLocationResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*GetBucketLocationInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addGetBucketLocationResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opGetBucketLocationResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
+14
-150
@@ -4,16 +4,11 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -53,6 +48,11 @@ type GetBucketLoggingInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *GetBucketLoggingInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type GetBucketLoggingOutput struct {
|
||||
|
||||
// Describes where logs are stored and the prefix that Amazon S3 assigns to all
|
||||
@@ -67,6 +67,9 @@ type GetBucketLoggingOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationGetBucketLoggingMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpGetBucketLogging{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -75,6 +78,10 @@ func (c *Client) addOperationGetBucketLoggingMiddlewares(stack *middleware.Stack
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "GetBucketLogging"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -96,9 +103,6 @@ func (c *Client) addOperationGetBucketLoggingMiddlewares(stack *middleware.Stack
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -114,10 +118,7 @@ func (c *Client) addOperationGetBucketLoggingMiddlewares(stack *middleware.Stack
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addGetBucketLoggingResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpGetBucketLoggingValidationMiddleware(stack); err != nil {
|
||||
@@ -147,7 +148,7 @@ func (c *Client) addOperationGetBucketLoggingMiddlewares(stack *middleware.Stack
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -167,7 +168,6 @@ func newServiceMetadataMiddleware_opGetBucketLogging(region string) *awsmiddlewa
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "GetBucketLogging",
|
||||
}
|
||||
}
|
||||
@@ -197,139 +197,3 @@ func addGetBucketLoggingUpdateEndpoint(stack *middleware.Stack, options Options)
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opGetBucketLoggingResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opGetBucketLoggingResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opGetBucketLoggingResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*GetBucketLoggingInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addGetBucketLoggingResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opGetBucketLoggingResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
Generated
Vendored
+14
-150
@@ -4,16 +4,11 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -69,6 +64,11 @@ type GetBucketMetricsConfigurationInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *GetBucketMetricsConfigurationInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type GetBucketMetricsConfigurationOutput struct {
|
||||
|
||||
// Specifies the metrics configuration.
|
||||
@@ -81,6 +81,9 @@ type GetBucketMetricsConfigurationOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationGetBucketMetricsConfigurationMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpGetBucketMetricsConfiguration{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -89,6 +92,10 @@ func (c *Client) addOperationGetBucketMetricsConfigurationMiddlewares(stack *mid
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "GetBucketMetricsConfiguration"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -110,9 +117,6 @@ func (c *Client) addOperationGetBucketMetricsConfigurationMiddlewares(stack *mid
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -128,10 +132,7 @@ func (c *Client) addOperationGetBucketMetricsConfigurationMiddlewares(stack *mid
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addGetBucketMetricsConfigurationResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpGetBucketMetricsConfigurationValidationMiddleware(stack); err != nil {
|
||||
@@ -161,7 +162,7 @@ func (c *Client) addOperationGetBucketMetricsConfigurationMiddlewares(stack *mid
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -181,7 +182,6 @@ func newServiceMetadataMiddleware_opGetBucketMetricsConfiguration(region string)
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "GetBucketMetricsConfiguration",
|
||||
}
|
||||
}
|
||||
@@ -211,139 +211,3 @@ func addGetBucketMetricsConfigurationUpdateEndpoint(stack *middleware.Stack, opt
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opGetBucketMetricsConfigurationResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opGetBucketMetricsConfigurationResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opGetBucketMetricsConfigurationResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*GetBucketMetricsConfigurationInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addGetBucketMetricsConfigurationResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opGetBucketMetricsConfigurationResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
Generated
Vendored
+14
-150
@@ -4,16 +4,11 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -72,6 +67,11 @@ type GetBucketNotificationConfigurationInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *GetBucketNotificationConfigurationInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
// A container for specifying the notification configuration of the bucket. If
|
||||
// this element is empty, notifications are turned off for the bucket.
|
||||
type GetBucketNotificationConfigurationOutput struct {
|
||||
@@ -98,6 +98,9 @@ type GetBucketNotificationConfigurationOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationGetBucketNotificationConfigurationMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpGetBucketNotificationConfiguration{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -106,6 +109,10 @@ func (c *Client) addOperationGetBucketNotificationConfigurationMiddlewares(stack
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "GetBucketNotificationConfiguration"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -127,9 +134,6 @@ func (c *Client) addOperationGetBucketNotificationConfigurationMiddlewares(stack
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -145,10 +149,7 @@ func (c *Client) addOperationGetBucketNotificationConfigurationMiddlewares(stack
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addGetBucketNotificationConfigurationResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpGetBucketNotificationConfigurationValidationMiddleware(stack); err != nil {
|
||||
@@ -178,7 +179,7 @@ func (c *Client) addOperationGetBucketNotificationConfigurationMiddlewares(stack
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -198,7 +199,6 @@ func newServiceMetadataMiddleware_opGetBucketNotificationConfiguration(region st
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "GetBucketNotificationConfiguration",
|
||||
}
|
||||
}
|
||||
@@ -228,139 +228,3 @@ func addGetBucketNotificationConfigurationUpdateEndpoint(stack *middleware.Stack
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opGetBucketNotificationConfigurationResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opGetBucketNotificationConfigurationResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opGetBucketNotificationConfigurationResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*GetBucketNotificationConfigurationInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addGetBucketNotificationConfigurationResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opGetBucketNotificationConfigurationResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
Generated
Vendored
+14
-150
@@ -4,16 +4,11 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -55,6 +50,11 @@ type GetBucketOwnershipControlsInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *GetBucketOwnershipControlsInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type GetBucketOwnershipControlsOutput struct {
|
||||
|
||||
// The OwnershipControls (BucketOwnerEnforced, BucketOwnerPreferred, or
|
||||
@@ -68,6 +68,9 @@ type GetBucketOwnershipControlsOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationGetBucketOwnershipControlsMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpGetBucketOwnershipControls{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -76,6 +79,10 @@ func (c *Client) addOperationGetBucketOwnershipControlsMiddlewares(stack *middle
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "GetBucketOwnershipControls"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -97,9 +104,6 @@ func (c *Client) addOperationGetBucketOwnershipControlsMiddlewares(stack *middle
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -115,10 +119,7 @@ func (c *Client) addOperationGetBucketOwnershipControlsMiddlewares(stack *middle
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addGetBucketOwnershipControlsResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpGetBucketOwnershipControlsValidationMiddleware(stack); err != nil {
|
||||
@@ -148,7 +149,7 @@ func (c *Client) addOperationGetBucketOwnershipControlsMiddlewares(stack *middle
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -168,7 +169,6 @@ func newServiceMetadataMiddleware_opGetBucketOwnershipControls(region string) *a
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "GetBucketOwnershipControls",
|
||||
}
|
||||
}
|
||||
@@ -198,139 +198,3 @@ func addGetBucketOwnershipControlsUpdateEndpoint(stack *middleware.Stack, option
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opGetBucketOwnershipControlsResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opGetBucketOwnershipControlsResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opGetBucketOwnershipControlsResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*GetBucketOwnershipControlsInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addGetBucketOwnershipControlsResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opGetBucketOwnershipControlsResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
+14
-150
@@ -4,15 +4,10 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -78,6 +73,11 @@ type GetBucketPolicyInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *GetBucketPolicyInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type GetBucketPolicyOutput struct {
|
||||
|
||||
// The bucket policy as a JSON document.
|
||||
@@ -90,6 +90,9 @@ type GetBucketPolicyOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationGetBucketPolicyMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpGetBucketPolicy{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -98,6 +101,10 @@ func (c *Client) addOperationGetBucketPolicyMiddlewares(stack *middleware.Stack,
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "GetBucketPolicy"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -119,9 +126,6 @@ func (c *Client) addOperationGetBucketPolicyMiddlewares(stack *middleware.Stack,
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -137,10 +141,7 @@ func (c *Client) addOperationGetBucketPolicyMiddlewares(stack *middleware.Stack,
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addGetBucketPolicyResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpGetBucketPolicyValidationMiddleware(stack); err != nil {
|
||||
@@ -170,7 +171,7 @@ func (c *Client) addOperationGetBucketPolicyMiddlewares(stack *middleware.Stack,
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -190,7 +191,6 @@ func newServiceMetadataMiddleware_opGetBucketPolicy(region string) *awsmiddlewar
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "GetBucketPolicy",
|
||||
}
|
||||
}
|
||||
@@ -220,139 +220,3 @@ func addGetBucketPolicyUpdateEndpoint(stack *middleware.Stack, options Options)
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opGetBucketPolicyResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opGetBucketPolicyResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opGetBucketPolicyResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*GetBucketPolicyInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addGetBucketPolicyResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opGetBucketPolicyResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
+14
-150
@@ -4,16 +4,11 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -59,6 +54,11 @@ type GetBucketPolicyStatusInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *GetBucketPolicyStatusInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type GetBucketPolicyStatusOutput struct {
|
||||
|
||||
// The policy status for the specified bucket.
|
||||
@@ -71,6 +71,9 @@ type GetBucketPolicyStatusOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationGetBucketPolicyStatusMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpGetBucketPolicyStatus{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -79,6 +82,10 @@ func (c *Client) addOperationGetBucketPolicyStatusMiddlewares(stack *middleware.
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "GetBucketPolicyStatus"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -100,9 +107,6 @@ func (c *Client) addOperationGetBucketPolicyStatusMiddlewares(stack *middleware.
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -118,10 +122,7 @@ func (c *Client) addOperationGetBucketPolicyStatusMiddlewares(stack *middleware.
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addGetBucketPolicyStatusResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpGetBucketPolicyStatusValidationMiddleware(stack); err != nil {
|
||||
@@ -151,7 +152,7 @@ func (c *Client) addOperationGetBucketPolicyStatusMiddlewares(stack *middleware.
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -171,7 +172,6 @@ func newServiceMetadataMiddleware_opGetBucketPolicyStatus(region string) *awsmid
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "GetBucketPolicyStatus",
|
||||
}
|
||||
}
|
||||
@@ -201,139 +201,3 @@ func addGetBucketPolicyStatusUpdateEndpoint(stack *middleware.Stack, options Opt
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opGetBucketPolicyStatusResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opGetBucketPolicyStatusResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opGetBucketPolicyStatusResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*GetBucketPolicyStatusInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addGetBucketPolicyStatusResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opGetBucketPolicyStatusResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
+14
-150
@@ -4,16 +4,11 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -62,6 +57,11 @@ type GetBucketReplicationInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *GetBucketReplicationInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type GetBucketReplicationOutput struct {
|
||||
|
||||
// A container for replication rules. You can add up to 1,000 rules. The maximum
|
||||
@@ -75,6 +75,9 @@ type GetBucketReplicationOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationGetBucketReplicationMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpGetBucketReplication{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -83,6 +86,10 @@ func (c *Client) addOperationGetBucketReplicationMiddlewares(stack *middleware.S
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "GetBucketReplication"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -104,9 +111,6 @@ func (c *Client) addOperationGetBucketReplicationMiddlewares(stack *middleware.S
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -122,10 +126,7 @@ func (c *Client) addOperationGetBucketReplicationMiddlewares(stack *middleware.S
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addGetBucketReplicationResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpGetBucketReplicationValidationMiddleware(stack); err != nil {
|
||||
@@ -155,7 +156,7 @@ func (c *Client) addOperationGetBucketReplicationMiddlewares(stack *middleware.S
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -175,7 +176,6 @@ func newServiceMetadataMiddleware_opGetBucketReplication(region string) *awsmidd
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "GetBucketReplication",
|
||||
}
|
||||
}
|
||||
@@ -205,139 +205,3 @@ func addGetBucketReplicationUpdateEndpoint(stack *middleware.Stack, options Opti
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opGetBucketReplicationResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opGetBucketReplicationResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opGetBucketReplicationResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*GetBucketReplicationInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addGetBucketReplicationResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opGetBucketReplicationResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
+14
-150
@@ -4,16 +4,11 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -53,6 +48,11 @@ type GetBucketRequestPaymentInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *GetBucketRequestPaymentInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type GetBucketRequestPaymentOutput struct {
|
||||
|
||||
// Specifies who pays for the download and request fees.
|
||||
@@ -65,6 +65,9 @@ type GetBucketRequestPaymentOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationGetBucketRequestPaymentMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpGetBucketRequestPayment{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -73,6 +76,10 @@ func (c *Client) addOperationGetBucketRequestPaymentMiddlewares(stack *middlewar
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "GetBucketRequestPayment"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -94,9 +101,6 @@ func (c *Client) addOperationGetBucketRequestPaymentMiddlewares(stack *middlewar
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -112,10 +116,7 @@ func (c *Client) addOperationGetBucketRequestPaymentMiddlewares(stack *middlewar
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addGetBucketRequestPaymentResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpGetBucketRequestPaymentValidationMiddleware(stack); err != nil {
|
||||
@@ -145,7 +146,7 @@ func (c *Client) addOperationGetBucketRequestPaymentMiddlewares(stack *middlewar
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -165,7 +166,6 @@ func newServiceMetadataMiddleware_opGetBucketRequestPayment(region string) *awsm
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "GetBucketRequestPayment",
|
||||
}
|
||||
}
|
||||
@@ -195,139 +195,3 @@ func addGetBucketRequestPaymentUpdateEndpoint(stack *middleware.Stack, options O
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opGetBucketRequestPaymentResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opGetBucketRequestPaymentResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opGetBucketRequestPaymentResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*GetBucketRequestPaymentInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addGetBucketRequestPaymentResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opGetBucketRequestPaymentResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
+14
-150
@@ -4,16 +4,11 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -58,6 +53,11 @@ type GetBucketTaggingInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *GetBucketTaggingInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type GetBucketTaggingOutput struct {
|
||||
|
||||
// Contains the tag set.
|
||||
@@ -72,6 +72,9 @@ type GetBucketTaggingOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationGetBucketTaggingMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpGetBucketTagging{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -80,6 +83,10 @@ func (c *Client) addOperationGetBucketTaggingMiddlewares(stack *middleware.Stack
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "GetBucketTagging"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -101,9 +108,6 @@ func (c *Client) addOperationGetBucketTaggingMiddlewares(stack *middleware.Stack
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -119,10 +123,7 @@ func (c *Client) addOperationGetBucketTaggingMiddlewares(stack *middleware.Stack
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addGetBucketTaggingResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpGetBucketTaggingValidationMiddleware(stack); err != nil {
|
||||
@@ -152,7 +153,7 @@ func (c *Client) addOperationGetBucketTaggingMiddlewares(stack *middleware.Stack
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -172,7 +173,6 @@ func newServiceMetadataMiddleware_opGetBucketTagging(region string) *awsmiddlewa
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "GetBucketTagging",
|
||||
}
|
||||
}
|
||||
@@ -202,139 +202,3 @@ func addGetBucketTaggingUpdateEndpoint(stack *middleware.Stack, options Options)
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opGetBucketTaggingResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opGetBucketTaggingResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opGetBucketTaggingResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*GetBucketTaggingInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addGetBucketTaggingResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opGetBucketTaggingResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
+14
-150
@@ -4,16 +4,11 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -56,6 +51,11 @@ type GetBucketVersioningInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *GetBucketVersioningInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type GetBucketVersioningOutput struct {
|
||||
|
||||
// Specifies whether MFA delete is enabled in the bucket versioning configuration.
|
||||
@@ -73,6 +73,9 @@ type GetBucketVersioningOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationGetBucketVersioningMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpGetBucketVersioning{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -81,6 +84,10 @@ func (c *Client) addOperationGetBucketVersioningMiddlewares(stack *middleware.St
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "GetBucketVersioning"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -102,9 +109,6 @@ func (c *Client) addOperationGetBucketVersioningMiddlewares(stack *middleware.St
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -120,10 +124,7 @@ func (c *Client) addOperationGetBucketVersioningMiddlewares(stack *middleware.St
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addGetBucketVersioningResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpGetBucketVersioningValidationMiddleware(stack); err != nil {
|
||||
@@ -153,7 +154,7 @@ func (c *Client) addOperationGetBucketVersioningMiddlewares(stack *middleware.St
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -173,7 +174,6 @@ func newServiceMetadataMiddleware_opGetBucketVersioning(region string) *awsmiddl
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "GetBucketVersioning",
|
||||
}
|
||||
}
|
||||
@@ -203,139 +203,3 @@ func addGetBucketVersioningUpdateEndpoint(stack *middleware.Stack, options Optio
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opGetBucketVersioningResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opGetBucketVersioningResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opGetBucketVersioningResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*GetBucketVersioningInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addGetBucketVersioningResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opGetBucketVersioningResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
+14
-150
@@ -4,16 +4,11 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -58,6 +53,11 @@ type GetBucketWebsiteInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *GetBucketWebsiteInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type GetBucketWebsiteOutput struct {
|
||||
|
||||
// The object key name of the website error document to use for 4XX class errors.
|
||||
@@ -80,6 +80,9 @@ type GetBucketWebsiteOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationGetBucketWebsiteMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpGetBucketWebsite{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -88,6 +91,10 @@ func (c *Client) addOperationGetBucketWebsiteMiddlewares(stack *middleware.Stack
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "GetBucketWebsite"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -109,9 +116,6 @@ func (c *Client) addOperationGetBucketWebsiteMiddlewares(stack *middleware.Stack
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -127,10 +131,7 @@ func (c *Client) addOperationGetBucketWebsiteMiddlewares(stack *middleware.Stack
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addGetBucketWebsiteResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpGetBucketWebsiteValidationMiddleware(stack); err != nil {
|
||||
@@ -160,7 +161,7 @@ func (c *Client) addOperationGetBucketWebsiteMiddlewares(stack *middleware.Stack
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -180,7 +181,6 @@ func newServiceMetadataMiddleware_opGetBucketWebsite(region string) *awsmiddlewa
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "GetBucketWebsite",
|
||||
}
|
||||
}
|
||||
@@ -210,139 +210,3 @@ func addGetBucketWebsiteUpdateEndpoint(stack *middleware.Stack, options Options)
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opGetBucketWebsiteResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opGetBucketWebsiteResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opGetBucketWebsiteResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*GetBucketWebsiteInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addGetBucketWebsiteResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opGetBucketWebsiteResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
+21
-157
@@ -4,17 +4,12 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
internalChecksum "github.com/aws/aws-sdk-go-v2/service/internal/checksum"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
"io"
|
||||
@@ -182,7 +177,7 @@ type GetObjectInput struct {
|
||||
// Part number of the object being read. This is a positive integer between 1 and
|
||||
// 10,000. Effectively performs a 'ranged' GET request for the part specified.
|
||||
// Useful for downloading just a part of an object.
|
||||
PartNumber int32
|
||||
PartNumber *int32
|
||||
|
||||
// Downloads the specified range bytes of an object. For more information about
|
||||
// the HTTP Range header, see
|
||||
@@ -239,6 +234,11 @@ type GetObjectInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *GetObjectInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type GetObjectOutput struct {
|
||||
|
||||
// Indicates that a range of bytes was specified.
|
||||
@@ -249,7 +249,7 @@ type GetObjectOutput struct {
|
||||
|
||||
// Indicates whether the object uses an S3 Bucket Key for server-side encryption
|
||||
// with Key Management Service (KMS) keys (SSE-KMS).
|
||||
BucketKeyEnabled bool
|
||||
BucketKeyEnabled *bool
|
||||
|
||||
// Specifies caching behavior along the request/reply chain.
|
||||
CacheControl *string
|
||||
@@ -294,7 +294,7 @@ type GetObjectOutput struct {
|
||||
ContentLanguage *string
|
||||
|
||||
// Size of the body in bytes.
|
||||
ContentLength int64
|
||||
ContentLength *int64
|
||||
|
||||
// The portion of the object returned in the response.
|
||||
ContentRange *string
|
||||
@@ -304,7 +304,7 @@ type GetObjectOutput struct {
|
||||
|
||||
// Specifies whether the object retrieved was (true) or was not (false) a Delete
|
||||
// Marker. If false, this response header does not appear in the response.
|
||||
DeleteMarker bool
|
||||
DeleteMarker *bool
|
||||
|
||||
// An entity tag (ETag) is an opaque identifier assigned by a web server to a
|
||||
// specific version of a resource found at a URL.
|
||||
@@ -331,7 +331,7 @@ type GetObjectOutput struct {
|
||||
// headers. This can happen if you create metadata using an API like SOAP that
|
||||
// supports more flexible metadata than the REST API. For example, using SOAP, you
|
||||
// can create metadata whose values are not legal HTTP headers.
|
||||
MissingMeta int32
|
||||
MissingMeta *int32
|
||||
|
||||
// Indicates whether this object has an active legal hold. This field is only
|
||||
// returned if you have permission to view an object's legal hold status.
|
||||
@@ -345,7 +345,7 @@ type GetObjectOutput struct {
|
||||
|
||||
// The count of parts this object has. This value is only returned if you specify
|
||||
// partNumber in your request and the object was uploaded as a multipart upload.
|
||||
PartsCount int32
|
||||
PartsCount *int32
|
||||
|
||||
// Amazon S3 can return this if your request involves a bucket that is either a
|
||||
// source or destination in a replication rule.
|
||||
@@ -382,7 +382,7 @@ type GetObjectOutput struct {
|
||||
StorageClass types.StorageClass
|
||||
|
||||
// The number of tags, if any, on the object.
|
||||
TagCount int32
|
||||
TagCount *int32
|
||||
|
||||
// Version of the object.
|
||||
VersionId *string
|
||||
@@ -399,6 +399,9 @@ type GetObjectOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationGetObjectMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpGetObject{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -407,6 +410,10 @@ func (c *Client) addOperationGetObjectMiddlewares(stack *middleware.Stack, optio
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "GetObject"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -428,9 +435,6 @@ func (c *Client) addOperationGetObjectMiddlewares(stack *middleware.Stack, optio
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -443,10 +447,7 @@ func (c *Client) addOperationGetObjectMiddlewares(stack *middleware.Stack, optio
|
||||
if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addGetObjectResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpGetObjectValidationMiddleware(stack); err != nil {
|
||||
@@ -479,7 +480,7 @@ func (c *Client) addOperationGetObjectMiddlewares(stack *middleware.Stack, optio
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -499,7 +500,6 @@ func newServiceMetadataMiddleware_opGetObject(region string) *awsmiddleware.Regi
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "GetObject",
|
||||
}
|
||||
}
|
||||
@@ -579,139 +579,3 @@ func addGetObjectPayloadAsUnsigned(stack *middleware.Stack, options Options) err
|
||||
v4.RemoveComputePayloadSHA256Middleware(stack)
|
||||
return v4.AddUnsignedPayloadMiddleware(stack)
|
||||
}
|
||||
|
||||
type opGetObjectResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opGetObjectResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opGetObjectResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*GetObjectInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addGetObjectResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opGetObjectResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
+14
-150
@@ -4,16 +4,11 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -89,6 +84,11 @@ type GetObjectAclInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *GetObjectAclInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type GetObjectAclOutput struct {
|
||||
|
||||
// A list of grants.
|
||||
@@ -108,6 +108,9 @@ type GetObjectAclOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationGetObjectAclMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpGetObjectAcl{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -116,6 +119,10 @@ func (c *Client) addOperationGetObjectAclMiddlewares(stack *middleware.Stack, op
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "GetObjectAcl"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -137,9 +144,6 @@ func (c *Client) addOperationGetObjectAclMiddlewares(stack *middleware.Stack, op
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -155,10 +159,7 @@ func (c *Client) addOperationGetObjectAclMiddlewares(stack *middleware.Stack, op
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addGetObjectAclResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpGetObjectAclValidationMiddleware(stack); err != nil {
|
||||
@@ -188,7 +189,7 @@ func (c *Client) addOperationGetObjectAclMiddlewares(stack *middleware.Stack, op
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -208,7 +209,6 @@ func newServiceMetadataMiddleware_opGetObjectAcl(region string) *awsmiddleware.R
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "GetObjectAcl",
|
||||
}
|
||||
}
|
||||
@@ -238,139 +238,3 @@ func addGetObjectAclUpdateEndpoint(stack *middleware.Stack, options Options) err
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opGetObjectAclResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opGetObjectAclResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opGetObjectAclResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*GetObjectAclInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addGetObjectAclResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opGetObjectAclResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
+17
-153
@@ -4,16 +4,11 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
"time"
|
||||
@@ -132,7 +127,7 @@ type GetObjectAttributesInput struct {
|
||||
ExpectedBucketOwner *string
|
||||
|
||||
// Sets the maximum number of parts to return.
|
||||
MaxParts int32
|
||||
MaxParts *int32
|
||||
|
||||
// Specifies the part after which listing should begin. Only parts with higher
|
||||
// part numbers will be listed.
|
||||
@@ -168,6 +163,11 @@ type GetObjectAttributesInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *GetObjectAttributesInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type GetObjectAttributesOutput struct {
|
||||
|
||||
// The checksum or digest of the object.
|
||||
@@ -175,7 +175,7 @@ type GetObjectAttributesOutput struct {
|
||||
|
||||
// Specifies whether the object retrieved was ( true ) or was not ( false ) a
|
||||
// delete marker. If false , this response header does not appear in the response.
|
||||
DeleteMarker bool
|
||||
DeleteMarker *bool
|
||||
|
||||
// An ETag is an opaque identifier assigned by a web server to a specific version
|
||||
// of a resource found at a URL.
|
||||
@@ -188,7 +188,7 @@ type GetObjectAttributesOutput struct {
|
||||
ObjectParts *types.GetObjectAttributesParts
|
||||
|
||||
// The size of the object in bytes.
|
||||
ObjectSize int64
|
||||
ObjectSize *int64
|
||||
|
||||
// If present, indicates that the requester was successfully charged for the
|
||||
// request.
|
||||
@@ -210,6 +210,9 @@ type GetObjectAttributesOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationGetObjectAttributesMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpGetObjectAttributes{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -218,6 +221,10 @@ func (c *Client) addOperationGetObjectAttributesMiddlewares(stack *middleware.St
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "GetObjectAttributes"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -239,9 +246,6 @@ func (c *Client) addOperationGetObjectAttributesMiddlewares(stack *middleware.St
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -257,10 +261,7 @@ func (c *Client) addOperationGetObjectAttributesMiddlewares(stack *middleware.St
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addGetObjectAttributesResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpGetObjectAttributesValidationMiddleware(stack); err != nil {
|
||||
@@ -290,7 +291,7 @@ func (c *Client) addOperationGetObjectAttributesMiddlewares(stack *middleware.St
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -310,7 +311,6 @@ func newServiceMetadataMiddleware_opGetObjectAttributes(region string) *awsmiddl
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "GetObjectAttributes",
|
||||
}
|
||||
}
|
||||
@@ -340,139 +340,3 @@ func addGetObjectAttributesUpdateEndpoint(stack *middleware.Stack, options Optio
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opGetObjectAttributesResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opGetObjectAttributesResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opGetObjectAttributesResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*GetObjectAttributesInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addGetObjectAttributesResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opGetObjectAttributesResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
+14
-150
@@ -4,16 +4,11 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -77,6 +72,11 @@ type GetObjectLegalHoldInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *GetObjectLegalHoldInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type GetObjectLegalHoldOutput struct {
|
||||
|
||||
// The current legal hold status for the specified object.
|
||||
@@ -89,6 +89,9 @@ type GetObjectLegalHoldOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationGetObjectLegalHoldMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpGetObjectLegalHold{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -97,6 +100,10 @@ func (c *Client) addOperationGetObjectLegalHoldMiddlewares(stack *middleware.Sta
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "GetObjectLegalHold"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -118,9 +125,6 @@ func (c *Client) addOperationGetObjectLegalHoldMiddlewares(stack *middleware.Sta
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -136,10 +140,7 @@ func (c *Client) addOperationGetObjectLegalHoldMiddlewares(stack *middleware.Sta
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addGetObjectLegalHoldResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpGetObjectLegalHoldValidationMiddleware(stack); err != nil {
|
||||
@@ -169,7 +170,7 @@ func (c *Client) addOperationGetObjectLegalHoldMiddlewares(stack *middleware.Sta
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -189,7 +190,6 @@ func newServiceMetadataMiddleware_opGetObjectLegalHold(region string) *awsmiddle
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "GetObjectLegalHold",
|
||||
}
|
||||
}
|
||||
@@ -219,139 +219,3 @@ func addGetObjectLegalHoldUpdateEndpoint(stack *middleware.Stack, options Option
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opGetObjectLegalHoldResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opGetObjectLegalHoldResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opGetObjectLegalHoldResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*GetObjectLegalHoldInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addGetObjectLegalHoldResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opGetObjectLegalHoldResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
Generated
Vendored
+14
-150
@@ -4,16 +4,11 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -60,6 +55,11 @@ type GetObjectLockConfigurationInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *GetObjectLockConfigurationInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type GetObjectLockConfigurationOutput struct {
|
||||
|
||||
// The specified bucket's Object Lock configuration.
|
||||
@@ -72,6 +72,9 @@ type GetObjectLockConfigurationOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationGetObjectLockConfigurationMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpGetObjectLockConfiguration{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -80,6 +83,10 @@ func (c *Client) addOperationGetObjectLockConfigurationMiddlewares(stack *middle
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "GetObjectLockConfiguration"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -101,9 +108,6 @@ func (c *Client) addOperationGetObjectLockConfigurationMiddlewares(stack *middle
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -119,10 +123,7 @@ func (c *Client) addOperationGetObjectLockConfigurationMiddlewares(stack *middle
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addGetObjectLockConfigurationResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpGetObjectLockConfigurationValidationMiddleware(stack); err != nil {
|
||||
@@ -152,7 +153,7 @@ func (c *Client) addOperationGetObjectLockConfigurationMiddlewares(stack *middle
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -172,7 +173,6 @@ func newServiceMetadataMiddleware_opGetObjectLockConfiguration(region string) *a
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "GetObjectLockConfiguration",
|
||||
}
|
||||
}
|
||||
@@ -202,139 +202,3 @@ func addGetObjectLockConfigurationUpdateEndpoint(stack *middleware.Stack, option
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opGetObjectLockConfigurationResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opGetObjectLockConfigurationResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opGetObjectLockConfigurationResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*GetObjectLockConfigurationInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addGetObjectLockConfigurationResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opGetObjectLockConfigurationResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
+14
-150
@@ -4,16 +4,11 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -77,6 +72,11 @@ type GetObjectRetentionInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *GetObjectRetentionInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type GetObjectRetentionOutput struct {
|
||||
|
||||
// The container element for an object's retention settings.
|
||||
@@ -89,6 +89,9 @@ type GetObjectRetentionOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationGetObjectRetentionMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpGetObjectRetention{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -97,6 +100,10 @@ func (c *Client) addOperationGetObjectRetentionMiddlewares(stack *middleware.Sta
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "GetObjectRetention"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -118,9 +125,6 @@ func (c *Client) addOperationGetObjectRetentionMiddlewares(stack *middleware.Sta
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -136,10 +140,7 @@ func (c *Client) addOperationGetObjectRetentionMiddlewares(stack *middleware.Sta
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addGetObjectRetentionResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpGetObjectRetentionValidationMiddleware(stack); err != nil {
|
||||
@@ -169,7 +170,7 @@ func (c *Client) addOperationGetObjectRetentionMiddlewares(stack *middleware.Sta
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -189,7 +190,6 @@ func newServiceMetadataMiddleware_opGetObjectRetention(region string) *awsmiddle
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "GetObjectRetention",
|
||||
}
|
||||
}
|
||||
@@ -219,139 +219,3 @@ func addGetObjectRetentionUpdateEndpoint(stack *middleware.Stack, options Option
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opGetObjectRetentionResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opGetObjectRetentionResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opGetObjectRetentionResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*GetObjectRetentionInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addGetObjectRetentionResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opGetObjectRetentionResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
+14
-150
@@ -4,16 +4,11 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
@@ -92,6 +87,11 @@ type GetObjectTaggingInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *GetObjectTaggingInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type GetObjectTaggingOutput struct {
|
||||
|
||||
// Contains the tag set.
|
||||
@@ -109,6 +109,9 @@ type GetObjectTaggingOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationGetObjectTaggingMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpGetObjectTagging{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -117,6 +120,10 @@ func (c *Client) addOperationGetObjectTaggingMiddlewares(stack *middleware.Stack
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "GetObjectTagging"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -138,9 +145,6 @@ func (c *Client) addOperationGetObjectTaggingMiddlewares(stack *middleware.Stack
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -156,10 +160,7 @@ func (c *Client) addOperationGetObjectTaggingMiddlewares(stack *middleware.Stack
|
||||
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addGetObjectTaggingResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpGetObjectTaggingValidationMiddleware(stack); err != nil {
|
||||
@@ -189,7 +190,7 @@ func (c *Client) addOperationGetObjectTaggingMiddlewares(stack *middleware.Stack
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -209,7 +210,6 @@ func newServiceMetadataMiddleware_opGetObjectTagging(region string) *awsmiddlewa
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "GetObjectTagging",
|
||||
}
|
||||
}
|
||||
@@ -239,139 +239,3 @@ func addGetObjectTaggingUpdateEndpoint(stack *middleware.Stack, options Options)
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opGetObjectTaggingResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opGetObjectTaggingResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opGetObjectTaggingResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*GetObjectTaggingInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addGetObjectTaggingResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opGetObjectTaggingResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
+14
-150
@@ -4,16 +4,11 @@ package s3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
|
||||
"github.com/aws/aws-sdk-go-v2/internal/v4a"
|
||||
s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations"
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
smithyendpoints "github.com/aws/smithy-go/endpoints"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
"io"
|
||||
@@ -70,6 +65,11 @@ type GetObjectTorrentInput struct {
|
||||
noSmithyDocumentSerde
|
||||
}
|
||||
|
||||
func (in *GetObjectTorrentInput) bindEndpointParams(p *EndpointParameters) {
|
||||
p.Bucket = in.Bucket
|
||||
|
||||
}
|
||||
|
||||
type GetObjectTorrentOutput struct {
|
||||
|
||||
// A Bencoded dictionary as defined by the BitTorrent specification
|
||||
@@ -86,6 +86,9 @@ type GetObjectTorrentOutput struct {
|
||||
}
|
||||
|
||||
func (c *Client) addOperationGetObjectTorrentMiddlewares(stack *middleware.Stack, options Options) (err error) {
|
||||
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
|
||||
return err
|
||||
}
|
||||
err = stack.Serialize.Add(&awsRestxml_serializeOpGetObjectTorrent{}, middleware.After)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -94,6 +97,10 @@ func (c *Client) addOperationGetObjectTorrentMiddlewares(stack *middleware.Stack
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := addProtocolFinalizerMiddlewares(stack, options, "GetObjectTorrent"); err != nil {
|
||||
return fmt.Errorf("add protocol finalizers: %v", err)
|
||||
}
|
||||
|
||||
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -115,9 +122,6 @@ func (c *Client) addOperationGetObjectTorrentMiddlewares(stack *middleware.Stack
|
||||
if err = addRetryMiddlewares(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -130,10 +134,7 @@ func (c *Client) addOperationGetObjectTorrentMiddlewares(stack *middleware.Stack
|
||||
if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = swapWithCustomHTTPSignerMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addGetObjectTorrentResolveEndpointMiddleware(stack, options); err != nil {
|
||||
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addOpGetObjectTorrentValidationMiddleware(stack); err != nil {
|
||||
@@ -163,7 +164,7 @@ func (c *Client) addOperationGetObjectTorrentMiddlewares(stack *middleware.Stack
|
||||
if err = addRequestResponseLogging(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = addSerializeImmutableHostnameBucketMiddleware(stack, options); err != nil {
|
||||
@@ -183,7 +184,6 @@ func newServiceMetadataMiddleware_opGetObjectTorrent(region string) *awsmiddlewa
|
||||
return &awsmiddleware.RegisterServiceMetadata{
|
||||
Region: region,
|
||||
ServiceID: ServiceID,
|
||||
SigningName: "s3",
|
||||
OperationName: "GetObjectTorrent",
|
||||
}
|
||||
}
|
||||
@@ -213,139 +213,3 @@ func addGetObjectTorrentUpdateEndpoint(stack *middleware.Stack, options Options)
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
})
|
||||
}
|
||||
|
||||
type opGetObjectTorrentResolveEndpointMiddleware struct {
|
||||
EndpointResolver EndpointResolverV2
|
||||
BuiltInResolver builtInParameterResolver
|
||||
}
|
||||
|
||||
func (*opGetObjectTorrentResolveEndpointMiddleware) ID() string {
|
||||
return "ResolveEndpointV2"
|
||||
}
|
||||
|
||||
func (m *opGetObjectTorrentResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
|
||||
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
|
||||
) {
|
||||
if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
req, ok := in.Request.(*smithyhttp.Request)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
input, ok := in.Parameters.(*GetObjectTorrentInput)
|
||||
if !ok {
|
||||
return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
|
||||
}
|
||||
|
||||
if m.EndpointResolver == nil {
|
||||
return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
|
||||
}
|
||||
|
||||
params := EndpointParameters{}
|
||||
|
||||
m.BuiltInResolver.ResolveBuiltIns(¶ms)
|
||||
|
||||
params.Bucket = input.Bucket
|
||||
|
||||
var resolvedEndpoint smithyendpoints.Endpoint
|
||||
resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
|
||||
if err != nil {
|
||||
return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
|
||||
}
|
||||
|
||||
req.URL = &resolvedEndpoint.URI
|
||||
|
||||
for k := range resolvedEndpoint.Headers {
|
||||
req.Header.Set(
|
||||
k,
|
||||
resolvedEndpoint.Headers.Get(k),
|
||||
)
|
||||
}
|
||||
|
||||
authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
|
||||
if err != nil {
|
||||
var nfe *internalauth.NoAuthenticationSchemesFoundError
|
||||
if errors.As(err, &nfe) {
|
||||
// if no auth scheme is found, default to sigv4
|
||||
signingName := "s3"
|
||||
signingRegion := m.BuiltInResolver.(*builtInResolver).Region
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, internalauth.SigV4)
|
||||
}
|
||||
var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
|
||||
if errors.As(err, &ue) {
|
||||
return out, metadata, fmt.Errorf(
|
||||
"This operation requests signer version(s) %v but the client only supports %v",
|
||||
ue.UnsupportedSchemes,
|
||||
internalauth.SupportedSchemes,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for _, authScheme := range authSchemes {
|
||||
switch authScheme.(type) {
|
||||
case *internalauth.AuthenticationSchemeV4:
|
||||
v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
|
||||
var signingName, signingRegion string
|
||||
if v4Scheme.SigningName == nil {
|
||||
signingName = "s3"
|
||||
} else {
|
||||
signingName = *v4Scheme.SigningName
|
||||
}
|
||||
if v4Scheme.SigningRegion == nil {
|
||||
signingRegion = m.BuiltInResolver.(*builtInResolver).Region
|
||||
} else {
|
||||
signingRegion = *v4Scheme.SigningRegion
|
||||
}
|
||||
if v4Scheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, signingName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4Scheme.Name)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeV4A:
|
||||
v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
|
||||
if v4aScheme.SigningName == nil {
|
||||
v4aScheme.SigningName = aws.String("s3")
|
||||
}
|
||||
if v4aScheme.DisableDoubleEncoding != nil {
|
||||
// The signer sets an equivalent value at client initialization time.
|
||||
// Setting this context value will cause the signer to extract it
|
||||
// and override the value set at client initialization time.
|
||||
ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
|
||||
}
|
||||
ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
|
||||
ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
|
||||
ctx = s3cust.SetSignerVersion(ctx, v4a.Version)
|
||||
break
|
||||
case *internalauth.AuthenticationSchemeNone:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return next.HandleSerialize(ctx, in)
|
||||
}
|
||||
|
||||
func addGetObjectTorrentResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
|
||||
return stack.Serialize.Insert(&opGetObjectTorrentResolveEndpointMiddleware{
|
||||
EndpointResolver: options.EndpointResolverV2,
|
||||
BuiltInResolver: &builtInResolver{
|
||||
Region: options.Region,
|
||||
UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
|
||||
UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
|
||||
Endpoint: options.BaseEndpoint,
|
||||
ForcePathStyle: options.UsePathStyle,
|
||||
Accelerate: options.UseAccelerate,
|
||||
DisableMultiRegionAccessPoints: options.DisableMultiRegionAccessPoints,
|
||||
UseArnRegion: options.UseARNRegion,
|
||||
},
|
||||
}, "ResolveEndpoint", middleware.After)
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user