Update dependencies
This commit is contained in:
45
vendor/github.com/aws/aws-sdk-go-v2/internal/auth/auth.go
generated
vendored
Normal file
45
vendor/github.com/aws/aws-sdk-go-v2/internal/auth/auth.go
generated
vendored
Normal file
@@ -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)
|
||||
}
|
||||
191
vendor/github.com/aws/aws-sdk-go-v2/internal/auth/scheme.go
generated
vendored
Normal file
191
vendor/github.com/aws/aws-sdk-go-v2/internal/auth/scheme.go
generated
vendored
Normal file
@@ -0,0 +1,191 @@
|
||||
package auth
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
smithy "github.com/aws/smithy-go"
|
||||
"github.com/aws/smithy-go/middleware"
|
||||
)
|
||||
|
||||
// SigV4 is a constant representing
|
||||
// Authentication Scheme Signature Version 4
|
||||
const SigV4 = "sigv4"
|
||||
|
||||
// SigV4A is a constant representing
|
||||
// Authentication Scheme Signature Version 4A
|
||||
const SigV4A = "sigv4a"
|
||||
|
||||
// SigV4S3Express identifies the S3 S3Express auth scheme.
|
||||
const SigV4S3Express = "sigv4-s3express"
|
||||
|
||||
// None is a constant representing the
|
||||
// None Authentication Scheme
|
||||
const None = "none"
|
||||
|
||||
// SupportedSchemes is a data structure
|
||||
// that indicates the list of supported AWS
|
||||
// authentication schemes
|
||||
var SupportedSchemes = map[string]bool{
|
||||
SigV4: true,
|
||||
SigV4A: true,
|
||||
SigV4S3Express: true,
|
||||
None: true,
|
||||
}
|
||||
|
||||
// AuthenticationScheme is a representation of
|
||||
// AWS authentication schemes
|
||||
type AuthenticationScheme interface {
|
||||
isAuthenticationScheme()
|
||||
}
|
||||
|
||||
// AuthenticationSchemeV4 is a AWS SigV4 representation
|
||||
type AuthenticationSchemeV4 struct {
|
||||
Name string
|
||||
SigningName *string
|
||||
SigningRegion *string
|
||||
DisableDoubleEncoding *bool
|
||||
}
|
||||
|
||||
func (a *AuthenticationSchemeV4) isAuthenticationScheme() {}
|
||||
|
||||
// AuthenticationSchemeV4A is a AWS SigV4A representation
|
||||
type AuthenticationSchemeV4A struct {
|
||||
Name string
|
||||
SigningName *string
|
||||
SigningRegionSet []string
|
||||
DisableDoubleEncoding *bool
|
||||
}
|
||||
|
||||
func (a *AuthenticationSchemeV4A) isAuthenticationScheme() {}
|
||||
|
||||
// AuthenticationSchemeNone is a representation for the none auth scheme
|
||||
type AuthenticationSchemeNone struct{}
|
||||
|
||||
func (a *AuthenticationSchemeNone) isAuthenticationScheme() {}
|
||||
|
||||
// NoAuthenticationSchemesFoundError is used in signaling
|
||||
// that no authentication schemes have been specified.
|
||||
type NoAuthenticationSchemesFoundError struct{}
|
||||
|
||||
func (e *NoAuthenticationSchemesFoundError) Error() string {
|
||||
return fmt.Sprint("No authentication schemes specified.")
|
||||
}
|
||||
|
||||
// UnSupportedAuthenticationSchemeSpecifiedError is used in
|
||||
// signaling that only unsupported authentication schemes
|
||||
// were specified.
|
||||
type UnSupportedAuthenticationSchemeSpecifiedError struct {
|
||||
UnsupportedSchemes []string
|
||||
}
|
||||
|
||||
func (e *UnSupportedAuthenticationSchemeSpecifiedError) Error() string {
|
||||
return fmt.Sprint("Unsupported authentication scheme specified.")
|
||||
}
|
||||
|
||||
// GetAuthenticationSchemes extracts the relevant authentication scheme data
|
||||
// into a custom strongly typed Go data structure.
|
||||
func GetAuthenticationSchemes(p *smithy.Properties) ([]AuthenticationScheme, error) {
|
||||
var result []AuthenticationScheme
|
||||
if !p.Has("authSchemes") {
|
||||
return nil, &NoAuthenticationSchemesFoundError{}
|
||||
}
|
||||
|
||||
authSchemes, _ := p.Get("authSchemes").([]interface{})
|
||||
|
||||
var unsupportedSchemes []string
|
||||
for _, scheme := range authSchemes {
|
||||
authScheme, _ := scheme.(map[string]interface{})
|
||||
|
||||
version := authScheme["name"].(string)
|
||||
switch version {
|
||||
case SigV4, SigV4S3Express:
|
||||
v4Scheme := AuthenticationSchemeV4{
|
||||
Name: version,
|
||||
SigningName: getSigningName(authScheme),
|
||||
SigningRegion: getSigningRegion(authScheme),
|
||||
DisableDoubleEncoding: getDisableDoubleEncoding(authScheme),
|
||||
}
|
||||
result = append(result, AuthenticationScheme(&v4Scheme))
|
||||
case SigV4A:
|
||||
v4aScheme := AuthenticationSchemeV4A{
|
||||
Name: SigV4A,
|
||||
SigningName: getSigningName(authScheme),
|
||||
SigningRegionSet: getSigningRegionSet(authScheme),
|
||||
DisableDoubleEncoding: getDisableDoubleEncoding(authScheme),
|
||||
}
|
||||
result = append(result, AuthenticationScheme(&v4aScheme))
|
||||
case None:
|
||||
noneScheme := AuthenticationSchemeNone{}
|
||||
result = append(result, AuthenticationScheme(&noneScheme))
|
||||
default:
|
||||
unsupportedSchemes = append(unsupportedSchemes, authScheme["name"].(string))
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
if len(result) == 0 {
|
||||
return nil, &UnSupportedAuthenticationSchemeSpecifiedError{
|
||||
UnsupportedSchemes: unsupportedSchemes,
|
||||
}
|
||||
}
|
||||
|
||||
return result, nil
|
||||
}
|
||||
|
||||
type disableDoubleEncoding struct{}
|
||||
|
||||
// SetDisableDoubleEncoding sets or modifies the disable double encoding option
|
||||
// on the context.
|
||||
//
|
||||
// Scoped to stack values. Use github.com/aws/smithy-go/middleware#ClearStackValues
|
||||
// to clear all stack values.
|
||||
func SetDisableDoubleEncoding(ctx context.Context, value bool) context.Context {
|
||||
return middleware.WithStackValue(ctx, disableDoubleEncoding{}, value)
|
||||
}
|
||||
|
||||
// GetDisableDoubleEncoding retrieves the disable double encoding option
|
||||
// from the context.
|
||||
//
|
||||
// Scoped to stack values. Use github.com/aws/smithy-go/middleware#ClearStackValues
|
||||
// to clear all stack values.
|
||||
func GetDisableDoubleEncoding(ctx context.Context) (value bool, ok bool) {
|
||||
value, ok = middleware.GetStackValue(ctx, disableDoubleEncoding{}).(bool)
|
||||
return value, ok
|
||||
}
|
||||
|
||||
func getSigningName(authScheme map[string]interface{}) *string {
|
||||
signingName, ok := authScheme["signingName"].(string)
|
||||
if !ok || signingName == "" {
|
||||
return nil
|
||||
}
|
||||
return &signingName
|
||||
}
|
||||
|
||||
func getSigningRegionSet(authScheme map[string]interface{}) []string {
|
||||
untypedSigningRegionSet, ok := authScheme["signingRegionSet"].([]interface{})
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
signingRegionSet := []string{}
|
||||
for _, item := range untypedSigningRegionSet {
|
||||
signingRegionSet = append(signingRegionSet, item.(string))
|
||||
}
|
||||
return signingRegionSet
|
||||
}
|
||||
|
||||
func getSigningRegion(authScheme map[string]interface{}) *string {
|
||||
signingRegion, ok := authScheme["signingRegion"].(string)
|
||||
if !ok || signingRegion == "" {
|
||||
return nil
|
||||
}
|
||||
return &signingRegion
|
||||
}
|
||||
|
||||
func getDisableDoubleEncoding(authScheme map[string]interface{}) *bool {
|
||||
disableDoubleEncoding, ok := authScheme["disableDoubleEncoding"].(bool)
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
return &disableDoubleEncoding
|
||||
}
|
||||
43
vendor/github.com/aws/aws-sdk-go-v2/internal/auth/smithy/bearer_token_adapter.go
generated
vendored
Normal file
43
vendor/github.com/aws/aws-sdk-go-v2/internal/auth/smithy/bearer_token_adapter.go
generated
vendored
Normal file
@@ -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: %w", err)
|
||||
}
|
||||
|
||||
return &BearerTokenAdapter{Token: token}, nil
|
||||
}
|
||||
35
vendor/github.com/aws/aws-sdk-go-v2/internal/auth/smithy/bearer_token_signer_adapter.go
generated
vendored
Normal file
35
vendor/github.com/aws/aws-sdk-go-v2/internal/auth/smithy/bearer_token_signer_adapter.go
generated
vendored
Normal file
@@ -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: %w", err)
|
||||
}
|
||||
|
||||
*r = *signed.(*smithyhttp.Request)
|
||||
return nil
|
||||
}
|
||||
46
vendor/github.com/aws/aws-sdk-go-v2/internal/auth/smithy/credentials_adapter.go
generated
vendored
Normal file
46
vendor/github.com/aws/aws-sdk-go-v2/internal/auth/smithy/credentials_adapter.go
generated
vendored
Normal file
@@ -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: %w", err)
|
||||
}
|
||||
|
||||
return &CredentialsAdapter{Credentials: creds}, nil
|
||||
}
|
||||
2
vendor/github.com/aws/aws-sdk-go-v2/internal/auth/smithy/smithy.go
generated
vendored
Normal file
2
vendor/github.com/aws/aws-sdk-go-v2/internal/auth/smithy/smithy.go
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
// Package smithy adapts concrete AWS auth and signing types to the generic smithy versions.
|
||||
package smithy
|
||||
53
vendor/github.com/aws/aws-sdk-go-v2/internal/auth/smithy/v4signer_adapter.go
generated
vendored
Normal file
53
vendor/github.com/aws/aws-sdk-go-v2/internal/auth/smithy/v4signer_adapter.go
generated
vendored
Normal file
@@ -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: %w", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
255
vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/CHANGELOG.md
generated
vendored
Normal file
255
vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/CHANGELOG.md
generated
vendored
Normal file
@@ -0,0 +1,255 @@
|
||||
# v1.2.10 (2024-01-04)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.2.9 (2023-12-07)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.2.8 (2023-12-01)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.2.7 (2023-11-30)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.2.6 (2023-11-29)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.2.5 (2023-11-28.2)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.2.4 (2023-11-20)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# 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
|
||||
|
||||
# v1.2.1 (2023-11-01)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.2.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/).
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.43 (2023-10-12)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.42 (2023-10-06)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.41 (2023-08-21)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.40 (2023-08-18)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.39 (2023-08-17)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.38 (2023-08-07)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.37 (2023-07-31)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.36 (2023-07-28)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.35 (2023-07-13)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.34 (2023-06-13)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.33 (2023-04-24)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.32 (2023-04-07)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.31 (2023-03-21)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.30 (2023-03-10)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.29 (2023-02-20)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.28 (2023-02-03)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.27 (2022-12-15)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.26 (2022-12-02)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.25 (2022-10-24)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.24 (2022-10-21)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.23 (2022-09-20)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.22 (2022-09-14)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.21 (2022-09-02)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.20 (2022-08-31)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.19 (2022-08-29)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.18 (2022-08-11)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.17 (2022-08-09)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.16 (2022-08-08)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.15 (2022-08-01)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.14 (2022-07-05)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.13 (2022-06-29)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.12 (2022-06-07)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.11 (2022-05-17)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.10 (2022-04-25)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.9 (2022-03-30)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.8 (2022-03-24)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.7 (2022-03-23)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.6 (2022-03-08)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.5 (2022-02-24)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.4 (2022-01-14)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.3 (2022-01-07)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.2 (2021-12-02)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.1 (2021-11-19)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.0 (2021-11-06)
|
||||
|
||||
* **Feature**: The SDK now supports configuration of FIPS and DualStack endpoints using environment variables, shared configuration, or programmatically.
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.0.7 (2021-10-21)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.0.6 (2021-10-11)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.0.5 (2021-09-17)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.0.4 (2021-08-27)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.0.3 (2021-08-19)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.0.2 (2021-08-04)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.0.1 (2021-07-15)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.0.0 (2021-06-25)
|
||||
|
||||
* **Release**: Release new modules
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
202
vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/LICENSE.txt
generated
vendored
Normal file
202
vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/LICENSE.txt
generated
vendored
Normal file
@@ -0,0 +1,202 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
65
vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/config.go
generated
vendored
Normal file
65
vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/config.go
generated
vendored
Normal file
@@ -0,0 +1,65 @@
|
||||
package configsources
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
)
|
||||
|
||||
// EnableEndpointDiscoveryProvider is an interface for retrieving external configuration value
|
||||
// for Enable Endpoint Discovery
|
||||
type EnableEndpointDiscoveryProvider interface {
|
||||
GetEnableEndpointDiscovery(ctx context.Context) (value aws.EndpointDiscoveryEnableState, found bool, err error)
|
||||
}
|
||||
|
||||
// ResolveEnableEndpointDiscovery extracts the first instance of a EnableEndpointDiscoveryProvider from the config slice.
|
||||
// Additionally returns a aws.EndpointDiscoveryEnableState to indicate if the value was found in provided configs,
|
||||
// and error if one is encountered.
|
||||
func ResolveEnableEndpointDiscovery(ctx context.Context, configs []interface{}) (value aws.EndpointDiscoveryEnableState, found bool, err error) {
|
||||
for _, cfg := range configs {
|
||||
if p, ok := cfg.(EnableEndpointDiscoveryProvider); ok {
|
||||
value, found, err = p.GetEnableEndpointDiscovery(ctx)
|
||||
if err != nil || found {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// UseDualStackEndpointProvider is an interface for retrieving external configuration values for UseDualStackEndpoint
|
||||
type UseDualStackEndpointProvider interface {
|
||||
GetUseDualStackEndpoint(context.Context) (value aws.DualStackEndpointState, found bool, err error)
|
||||
}
|
||||
|
||||
// ResolveUseDualStackEndpoint extracts the first instance of a UseDualStackEndpoint from the config slice.
|
||||
// Additionally returns a boolean to indicate if the value was found in provided configs, and error if one is encountered.
|
||||
func ResolveUseDualStackEndpoint(ctx context.Context, configs []interface{}) (value aws.DualStackEndpointState, found bool, err error) {
|
||||
for _, cfg := range configs {
|
||||
if p, ok := cfg.(UseDualStackEndpointProvider); ok {
|
||||
value, found, err = p.GetUseDualStackEndpoint(ctx)
|
||||
if err != nil || found {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// UseFIPSEndpointProvider is an interface for retrieving external configuration values for UseFIPSEndpoint
|
||||
type UseFIPSEndpointProvider interface {
|
||||
GetUseFIPSEndpoint(context.Context) (value aws.FIPSEndpointState, found bool, err error)
|
||||
}
|
||||
|
||||
// ResolveUseFIPSEndpoint extracts the first instance of a UseFIPSEndpointProvider from the config slice.
|
||||
// Additionally, returns a boolean to indicate if the value was found in provided configs, and error if one is encountered.
|
||||
func ResolveUseFIPSEndpoint(ctx context.Context, configs []interface{}) (value aws.FIPSEndpointState, found bool, err error) {
|
||||
for _, cfg := range configs {
|
||||
if p, ok := cfg.(UseFIPSEndpointProvider); ok {
|
||||
value, found, err = p.GetUseFIPSEndpoint(ctx)
|
||||
if err != nil || found {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
57
vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/endpoints.go
generated
vendored
Normal file
57
vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/endpoints.go
generated
vendored
Normal file
@@ -0,0 +1,57 @@
|
||||
package configsources
|
||||
|
||||
import (
|
||||
"context"
|
||||
)
|
||||
|
||||
// ServiceBaseEndpointProvider is needed to search for all providers
|
||||
// that provide a configured service endpoint
|
||||
type ServiceBaseEndpointProvider interface {
|
||||
GetServiceBaseEndpoint(ctx context.Context, sdkID string) (string, bool, error)
|
||||
}
|
||||
|
||||
// IgnoreConfiguredEndpointsProvider is needed to search for all providers
|
||||
// that provide a flag to disable configured endpoints.
|
||||
//
|
||||
// Currently duplicated from github.com/aws/aws-sdk-go-v2/config because
|
||||
// service packages cannot import github.com/aws/aws-sdk-go-v2/config
|
||||
// due to result import cycle error.
|
||||
type IgnoreConfiguredEndpointsProvider interface {
|
||||
GetIgnoreConfiguredEndpoints(ctx context.Context) (bool, bool, error)
|
||||
}
|
||||
|
||||
// GetIgnoreConfiguredEndpoints is used in knowing when to disable configured
|
||||
// endpoints feature.
|
||||
//
|
||||
// Currently duplicated from github.com/aws/aws-sdk-go-v2/config because
|
||||
// service packages cannot import github.com/aws/aws-sdk-go-v2/config
|
||||
// due to result import cycle error.
|
||||
func GetIgnoreConfiguredEndpoints(ctx context.Context, configs []interface{}) (value bool, found bool, err error) {
|
||||
for _, cfg := range configs {
|
||||
if p, ok := cfg.(IgnoreConfiguredEndpointsProvider); ok {
|
||||
value, found, err = p.GetIgnoreConfiguredEndpoints(ctx)
|
||||
if err != nil || found {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// ResolveServiceBaseEndpoint is used to retrieve service endpoints from configured sources
|
||||
// while allowing for configured endpoints to be disabled
|
||||
func ResolveServiceBaseEndpoint(ctx context.Context, sdkID string, configs []interface{}) (value string, found bool, err error) {
|
||||
if val, found, _ := GetIgnoreConfiguredEndpoints(ctx, configs); found && val {
|
||||
return "", false, nil
|
||||
}
|
||||
|
||||
for _, cs := range configs {
|
||||
if p, ok := cs.(ServiceBaseEndpointProvider); ok {
|
||||
value, found, err = p.GetServiceBaseEndpoint(context.Background(), sdkID)
|
||||
if err != nil || found {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
6
vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/go_module_metadata.go
generated
vendored
Normal file
6
vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/go_module_metadata.go
generated
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
// Code generated by internal/repotools/cmd/updatemodulemeta DO NOT EDIT.
|
||||
|
||||
package configsources
|
||||
|
||||
// goModuleVersion is the tagged release for this module
|
||||
const goModuleVersion = "1.2.10"
|
||||
94
vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/arn.go
generated
vendored
Normal file
94
vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/arn.go
generated
vendored
Normal file
@@ -0,0 +1,94 @@
|
||||
package awsrulesfn
|
||||
|
||||
import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
// ARN provides AWS ARN components broken out into a data structure.
|
||||
type ARN struct {
|
||||
Partition string
|
||||
Service string
|
||||
Region string
|
||||
AccountId string
|
||||
ResourceId OptionalStringSlice
|
||||
}
|
||||
|
||||
const (
|
||||
arnDelimiters = ":"
|
||||
resourceDelimiters = "/:"
|
||||
arnSections = 6
|
||||
arnPrefix = "arn:"
|
||||
|
||||
// zero-indexed
|
||||
sectionPartition = 1
|
||||
sectionService = 2
|
||||
sectionRegion = 3
|
||||
sectionAccountID = 4
|
||||
sectionResource = 5
|
||||
)
|
||||
|
||||
// ParseARN returns an [ARN] value parsed from the input string provided. If
|
||||
// the ARN cannot be parsed nil will be returned, and error added to
|
||||
// [ErrorCollector].
|
||||
func ParseARN(input string) *ARN {
|
||||
if !strings.HasPrefix(input, arnPrefix) {
|
||||
return nil
|
||||
}
|
||||
|
||||
sections := strings.SplitN(input, arnDelimiters, arnSections)
|
||||
if numSections := len(sections); numSections != arnSections {
|
||||
return nil
|
||||
}
|
||||
|
||||
if sections[sectionPartition] == "" {
|
||||
return nil
|
||||
}
|
||||
if sections[sectionService] == "" {
|
||||
return nil
|
||||
}
|
||||
if sections[sectionResource] == "" {
|
||||
return nil
|
||||
}
|
||||
|
||||
return &ARN{
|
||||
Partition: sections[sectionPartition],
|
||||
Service: sections[sectionService],
|
||||
Region: sections[sectionRegion],
|
||||
AccountId: sections[sectionAccountID],
|
||||
ResourceId: splitResource(sections[sectionResource]),
|
||||
}
|
||||
}
|
||||
|
||||
// splitResource splits the resource components by the ARN resource delimiters.
|
||||
func splitResource(v string) []string {
|
||||
var parts []string
|
||||
var offset int
|
||||
|
||||
for offset <= len(v) {
|
||||
idx := strings.IndexAny(v[offset:], "/:")
|
||||
if idx < 0 {
|
||||
parts = append(parts, v[offset:])
|
||||
break
|
||||
}
|
||||
parts = append(parts, v[offset:idx+offset])
|
||||
offset += idx + 1
|
||||
}
|
||||
|
||||
return parts
|
||||
}
|
||||
|
||||
// OptionalStringSlice provides a helper to safely get the index of a string
|
||||
// slice that may be out of bounds. Returns pointer to string if index is
|
||||
// valid. Otherwise returns nil.
|
||||
type OptionalStringSlice []string
|
||||
|
||||
// Get returns a string pointer of the string at index i if the index is valid.
|
||||
// Otherwise returns nil.
|
||||
func (s OptionalStringSlice) Get(i int) *string {
|
||||
if i < 0 || i >= len(s) {
|
||||
return nil
|
||||
}
|
||||
|
||||
v := s[i]
|
||||
return &v
|
||||
}
|
||||
3
vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/doc.go
generated
vendored
Normal file
3
vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/doc.go
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
// Package awsrulesfn provides AWS focused endpoint rule functions for
|
||||
// evaluating endpoint resolution rules.
|
||||
package awsrulesfn
|
||||
7
vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/generate.go
generated
vendored
Normal file
7
vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/generate.go
generated
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
//go:build codegen
|
||||
// +build codegen
|
||||
|
||||
package awsrulesfn
|
||||
|
||||
//go:generate go run -tags codegen ./internal/partition/codegen.go -model partitions.json -output partitions.go
|
||||
//go:generate gofmt -w -s .
|
||||
51
vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/host.go
generated
vendored
Normal file
51
vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/host.go
generated
vendored
Normal file
@@ -0,0 +1,51 @@
|
||||
package awsrulesfn
|
||||
|
||||
import (
|
||||
"net"
|
||||
"strings"
|
||||
|
||||
smithyhttp "github.com/aws/smithy-go/transport/http"
|
||||
)
|
||||
|
||||
// IsVirtualHostableS3Bucket returns if the input is a DNS compatible bucket
|
||||
// name and can be used with Amazon S3 virtual hosted style addressing. Similar
|
||||
// to [rulesfn.IsValidHostLabel] with the added restriction that the length of label
|
||||
// must be [3:63] characters long, all lowercase, and not formatted as an IP
|
||||
// address.
|
||||
func IsVirtualHostableS3Bucket(input string, allowSubDomains bool) bool {
|
||||
// input should not be formatted as an IP address
|
||||
// NOTE: this will technically trip up on IPv6 hosts with zone IDs, but
|
||||
// validation further down will catch that anyway (it's guaranteed to have
|
||||
// unfriendly characters % and : if that's the case)
|
||||
if net.ParseIP(input) != nil {
|
||||
return false
|
||||
}
|
||||
|
||||
var labels []string
|
||||
if allowSubDomains {
|
||||
labels = strings.Split(input, ".")
|
||||
} else {
|
||||
labels = []string{input}
|
||||
}
|
||||
|
||||
for _, label := range labels {
|
||||
// validate special length constraints
|
||||
if l := len(label); l < 3 || l > 63 {
|
||||
return false
|
||||
}
|
||||
|
||||
// Validate no capital letters
|
||||
for _, r := range label {
|
||||
if r >= 'A' && r <= 'Z' {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
// Validate valid host label
|
||||
if !smithyhttp.ValidHostLabel(label) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
75
vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partition.go
generated
vendored
Normal file
75
vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partition.go
generated
vendored
Normal file
@@ -0,0 +1,75 @@
|
||||
package awsrulesfn
|
||||
|
||||
import "regexp"
|
||||
|
||||
// Partition provides the metadata describing an AWS partition.
|
||||
type Partition struct {
|
||||
ID string `json:"id"`
|
||||
Regions map[string]RegionOverrides `json:"regions"`
|
||||
RegionRegex string `json:"regionRegex"`
|
||||
DefaultConfig PartitionConfig `json:"outputs"`
|
||||
}
|
||||
|
||||
// PartitionConfig provides the endpoint metadata for an AWS region or partition.
|
||||
type PartitionConfig struct {
|
||||
Name string `json:"name"`
|
||||
DnsSuffix string `json:"dnsSuffix"`
|
||||
DualStackDnsSuffix string `json:"dualStackDnsSuffix"`
|
||||
SupportsFIPS bool `json:"supportsFIPS"`
|
||||
SupportsDualStack bool `json:"supportsDualStack"`
|
||||
}
|
||||
|
||||
type RegionOverrides struct {
|
||||
Name *string `json:"name"`
|
||||
DnsSuffix *string `json:"dnsSuffix"`
|
||||
DualStackDnsSuffix *string `json:"dualStackDnsSuffix"`
|
||||
SupportsFIPS *bool `json:"supportsFIPS"`
|
||||
SupportsDualStack *bool `json:"supportsDualStack"`
|
||||
}
|
||||
|
||||
const defaultPartition = "aws"
|
||||
|
||||
func getPartition(partitions []Partition, region string) *PartitionConfig {
|
||||
for _, partition := range partitions {
|
||||
if v, ok := partition.Regions[region]; ok {
|
||||
p := mergeOverrides(partition.DefaultConfig, v)
|
||||
return &p
|
||||
}
|
||||
}
|
||||
|
||||
for _, partition := range partitions {
|
||||
regionRegex := regexp.MustCompile(partition.RegionRegex)
|
||||
if regionRegex.MatchString(region) {
|
||||
v := partition.DefaultConfig
|
||||
return &v
|
||||
}
|
||||
}
|
||||
|
||||
for _, partition := range partitions {
|
||||
if partition.ID == defaultPartition {
|
||||
v := partition.DefaultConfig
|
||||
return &v
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func mergeOverrides(into PartitionConfig, from RegionOverrides) PartitionConfig {
|
||||
if from.Name != nil {
|
||||
into.Name = *from.Name
|
||||
}
|
||||
if from.DnsSuffix != nil {
|
||||
into.DnsSuffix = *from.DnsSuffix
|
||||
}
|
||||
if from.DualStackDnsSuffix != nil {
|
||||
into.DualStackDnsSuffix = *from.DualStackDnsSuffix
|
||||
}
|
||||
if from.SupportsFIPS != nil {
|
||||
into.SupportsFIPS = *from.SupportsFIPS
|
||||
}
|
||||
if from.SupportsDualStack != nil {
|
||||
into.SupportsDualStack = *from.SupportsDualStack
|
||||
}
|
||||
return into
|
||||
}
|
||||
381
vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partitions.go
generated
vendored
Normal file
381
vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partitions.go
generated
vendored
Normal file
@@ -0,0 +1,381 @@
|
||||
// Code generated by endpoint/awsrulesfn/internal/partition. DO NOT EDIT.
|
||||
|
||||
package awsrulesfn
|
||||
|
||||
// GetPartition returns an AWS [Partition] for the region provided. If the
|
||||
// partition cannot be determined nil will be returned.
|
||||
func GetPartition(region string) *PartitionConfig {
|
||||
return getPartition(partitions, region)
|
||||
}
|
||||
|
||||
var partitions = []Partition{
|
||||
{
|
||||
ID: "aws",
|
||||
RegionRegex: "^(us|eu|ap|sa|ca|me|af|il)\\-\\w+\\-\\d+$",
|
||||
DefaultConfig: PartitionConfig{
|
||||
Name: "aws",
|
||||
DnsSuffix: "amazonaws.com",
|
||||
DualStackDnsSuffix: "api.aws",
|
||||
SupportsFIPS: true,
|
||||
SupportsDualStack: true,
|
||||
},
|
||||
Regions: map[string]RegionOverrides{
|
||||
"af-south-1": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
"ap-east-1": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
"ap-northeast-1": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
"ap-northeast-2": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
"ap-northeast-3": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
"ap-south-1": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
"ap-south-2": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
"ap-southeast-1": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
"ap-southeast-2": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
"ap-southeast-3": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
"ap-southeast-4": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
"aws-global": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
"ca-central-1": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
"eu-central-1": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
"eu-central-2": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
"eu-north-1": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
"eu-south-1": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
"eu-south-2": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
"eu-west-1": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
"eu-west-2": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
"eu-west-3": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
"il-central-1": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
"me-central-1": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
"me-south-1": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
"sa-east-1": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
"us-east-1": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
"us-east-2": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
"us-west-1": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
"us-west-2": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
ID: "aws-cn",
|
||||
RegionRegex: "^cn\\-\\w+\\-\\d+$",
|
||||
DefaultConfig: PartitionConfig{
|
||||
Name: "aws-cn",
|
||||
DnsSuffix: "amazonaws.com.cn",
|
||||
DualStackDnsSuffix: "api.amazonwebservices.com.cn",
|
||||
SupportsFIPS: true,
|
||||
SupportsDualStack: true,
|
||||
},
|
||||
Regions: map[string]RegionOverrides{
|
||||
"aws-cn-global": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
"cn-north-1": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
"cn-northwest-1": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
ID: "aws-us-gov",
|
||||
RegionRegex: "^us\\-gov\\-\\w+\\-\\d+$",
|
||||
DefaultConfig: PartitionConfig{
|
||||
Name: "aws-us-gov",
|
||||
DnsSuffix: "amazonaws.com",
|
||||
DualStackDnsSuffix: "api.aws",
|
||||
SupportsFIPS: true,
|
||||
SupportsDualStack: true,
|
||||
},
|
||||
Regions: map[string]RegionOverrides{
|
||||
"aws-us-gov-global": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
"us-gov-east-1": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
"us-gov-west-1": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
ID: "aws-iso",
|
||||
RegionRegex: "^us\\-iso\\-\\w+\\-\\d+$",
|
||||
DefaultConfig: PartitionConfig{
|
||||
Name: "aws-iso",
|
||||
DnsSuffix: "c2s.ic.gov",
|
||||
DualStackDnsSuffix: "c2s.ic.gov",
|
||||
SupportsFIPS: true,
|
||||
SupportsDualStack: false,
|
||||
},
|
||||
Regions: map[string]RegionOverrides{
|
||||
"aws-iso-global": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
"us-iso-east-1": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
"us-iso-west-1": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
ID: "aws-iso-b",
|
||||
RegionRegex: "^us\\-isob\\-\\w+\\-\\d+$",
|
||||
DefaultConfig: PartitionConfig{
|
||||
Name: "aws-iso-b",
|
||||
DnsSuffix: "sc2s.sgov.gov",
|
||||
DualStackDnsSuffix: "sc2s.sgov.gov",
|
||||
SupportsFIPS: true,
|
||||
SupportsDualStack: false,
|
||||
},
|
||||
Regions: map[string]RegionOverrides{
|
||||
"aws-iso-b-global": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
"us-isob-east-1": {
|
||||
Name: nil,
|
||||
DnsSuffix: nil,
|
||||
DualStackDnsSuffix: nil,
|
||||
SupportsFIPS: nil,
|
||||
SupportsDualStack: nil,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
ID: "aws-iso-e",
|
||||
RegionRegex: "^eu\\-isoe\\-\\w+\\-\\d+$",
|
||||
DefaultConfig: PartitionConfig{
|
||||
Name: "aws-iso-e",
|
||||
DnsSuffix: "cloud.adc-e.uk",
|
||||
DualStackDnsSuffix: "cloud.adc-e.uk",
|
||||
SupportsFIPS: true,
|
||||
SupportsDualStack: false,
|
||||
},
|
||||
Regions: map[string]RegionOverrides{},
|
||||
},
|
||||
{
|
||||
ID: "aws-iso-f",
|
||||
RegionRegex: "^us\\-isof\\-\\w+\\-\\d+$",
|
||||
DefaultConfig: PartitionConfig{
|
||||
Name: "aws-iso-f",
|
||||
DnsSuffix: "csp.hci.ic.gov",
|
||||
DualStackDnsSuffix: "csp.hci.ic.gov",
|
||||
SupportsFIPS: true,
|
||||
SupportsDualStack: false,
|
||||
},
|
||||
Regions: map[string]RegionOverrides{},
|
||||
},
|
||||
}
|
||||
216
vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partitions.json
generated
vendored
Normal file
216
vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partitions.json
generated
vendored
Normal file
@@ -0,0 +1,216 @@
|
||||
{
|
||||
"partitions" : [ {
|
||||
"id" : "aws",
|
||||
"outputs" : {
|
||||
"dnsSuffix" : "amazonaws.com",
|
||||
"dualStackDnsSuffix" : "api.aws",
|
||||
"implicitGlobalRegion" : "us-east-1",
|
||||
"name" : "aws",
|
||||
"supportsDualStack" : true,
|
||||
"supportsFIPS" : true
|
||||
},
|
||||
"regionRegex" : "^(us|eu|ap|sa|ca|me|af|il)\\-\\w+\\-\\d+$",
|
||||
"regions" : {
|
||||
"af-south-1" : {
|
||||
"description" : "Africa (Cape Town)"
|
||||
},
|
||||
"ap-east-1" : {
|
||||
"description" : "Asia Pacific (Hong Kong)"
|
||||
},
|
||||
"ap-northeast-1" : {
|
||||
"description" : "Asia Pacific (Tokyo)"
|
||||
},
|
||||
"ap-northeast-2" : {
|
||||
"description" : "Asia Pacific (Seoul)"
|
||||
},
|
||||
"ap-northeast-3" : {
|
||||
"description" : "Asia Pacific (Osaka)"
|
||||
},
|
||||
"ap-south-1" : {
|
||||
"description" : "Asia Pacific (Mumbai)"
|
||||
},
|
||||
"ap-south-2" : {
|
||||
"description" : "Asia Pacific (Hyderabad)"
|
||||
},
|
||||
"ap-southeast-1" : {
|
||||
"description" : "Asia Pacific (Singapore)"
|
||||
},
|
||||
"ap-southeast-2" : {
|
||||
"description" : "Asia Pacific (Sydney)"
|
||||
},
|
||||
"ap-southeast-3" : {
|
||||
"description" : "Asia Pacific (Jakarta)"
|
||||
},
|
||||
"ap-southeast-4" : {
|
||||
"description" : "Asia Pacific (Melbourne)"
|
||||
},
|
||||
"aws-global" : {
|
||||
"description" : "AWS Standard global region"
|
||||
},
|
||||
"ca-central-1" : {
|
||||
"description" : "Canada (Central)"
|
||||
},
|
||||
"ca-west-1" : {
|
||||
"description" : "Canada West (Calgary)"
|
||||
},
|
||||
"eu-central-1" : {
|
||||
"description" : "Europe (Frankfurt)"
|
||||
},
|
||||
"eu-central-2" : {
|
||||
"description" : "Europe (Zurich)"
|
||||
},
|
||||
"eu-north-1" : {
|
||||
"description" : "Europe (Stockholm)"
|
||||
},
|
||||
"eu-south-1" : {
|
||||
"description" : "Europe (Milan)"
|
||||
},
|
||||
"eu-south-2" : {
|
||||
"description" : "Europe (Spain)"
|
||||
},
|
||||
"eu-west-1" : {
|
||||
"description" : "Europe (Ireland)"
|
||||
},
|
||||
"eu-west-2" : {
|
||||
"description" : "Europe (London)"
|
||||
},
|
||||
"eu-west-3" : {
|
||||
"description" : "Europe (Paris)"
|
||||
},
|
||||
"il-central-1" : {
|
||||
"description" : "Israel (Tel Aviv)"
|
||||
},
|
||||
"me-central-1" : {
|
||||
"description" : "Middle East (UAE)"
|
||||
},
|
||||
"me-south-1" : {
|
||||
"description" : "Middle East (Bahrain)"
|
||||
},
|
||||
"sa-east-1" : {
|
||||
"description" : "South America (Sao Paulo)"
|
||||
},
|
||||
"us-east-1" : {
|
||||
"description" : "US East (N. Virginia)"
|
||||
},
|
||||
"us-east-2" : {
|
||||
"description" : "US East (Ohio)"
|
||||
},
|
||||
"us-west-1" : {
|
||||
"description" : "US West (N. California)"
|
||||
},
|
||||
"us-west-2" : {
|
||||
"description" : "US West (Oregon)"
|
||||
}
|
||||
}
|
||||
}, {
|
||||
"id" : "aws-cn",
|
||||
"outputs" : {
|
||||
"dnsSuffix" : "amazonaws.com.cn",
|
||||
"dualStackDnsSuffix" : "api.amazonwebservices.com.cn",
|
||||
"implicitGlobalRegion" : "cn-northwest-1",
|
||||
"name" : "aws-cn",
|
||||
"supportsDualStack" : true,
|
||||
"supportsFIPS" : true
|
||||
},
|
||||
"regionRegex" : "^cn\\-\\w+\\-\\d+$",
|
||||
"regions" : {
|
||||
"aws-cn-global" : {
|
||||
"description" : "AWS China global region"
|
||||
},
|
||||
"cn-north-1" : {
|
||||
"description" : "China (Beijing)"
|
||||
},
|
||||
"cn-northwest-1" : {
|
||||
"description" : "China (Ningxia)"
|
||||
}
|
||||
}
|
||||
}, {
|
||||
"id" : "aws-us-gov",
|
||||
"outputs" : {
|
||||
"dnsSuffix" : "amazonaws.com",
|
||||
"dualStackDnsSuffix" : "api.aws",
|
||||
"implicitGlobalRegion" : "us-gov-west-1",
|
||||
"name" : "aws-us-gov",
|
||||
"supportsDualStack" : true,
|
||||
"supportsFIPS" : true
|
||||
},
|
||||
"regionRegex" : "^us\\-gov\\-\\w+\\-\\d+$",
|
||||
"regions" : {
|
||||
"aws-us-gov-global" : {
|
||||
"description" : "AWS GovCloud (US) global region"
|
||||
},
|
||||
"us-gov-east-1" : {
|
||||
"description" : "AWS GovCloud (US-East)"
|
||||
},
|
||||
"us-gov-west-1" : {
|
||||
"description" : "AWS GovCloud (US-West)"
|
||||
}
|
||||
}
|
||||
}, {
|
||||
"id" : "aws-iso",
|
||||
"outputs" : {
|
||||
"dnsSuffix" : "c2s.ic.gov",
|
||||
"dualStackDnsSuffix" : "c2s.ic.gov",
|
||||
"implicitGlobalRegion" : "us-iso-east-1",
|
||||
"name" : "aws-iso",
|
||||
"supportsDualStack" : false,
|
||||
"supportsFIPS" : true
|
||||
},
|
||||
"regionRegex" : "^us\\-iso\\-\\w+\\-\\d+$",
|
||||
"regions" : {
|
||||
"aws-iso-global" : {
|
||||
"description" : "AWS ISO (US) global region"
|
||||
},
|
||||
"us-iso-east-1" : {
|
||||
"description" : "US ISO East"
|
||||
},
|
||||
"us-iso-west-1" : {
|
||||
"description" : "US ISO WEST"
|
||||
}
|
||||
}
|
||||
}, {
|
||||
"id" : "aws-iso-b",
|
||||
"outputs" : {
|
||||
"dnsSuffix" : "sc2s.sgov.gov",
|
||||
"dualStackDnsSuffix" : "sc2s.sgov.gov",
|
||||
"implicitGlobalRegion" : "us-isob-east-1",
|
||||
"name" : "aws-iso-b",
|
||||
"supportsDualStack" : false,
|
||||
"supportsFIPS" : true
|
||||
},
|
||||
"regionRegex" : "^us\\-isob\\-\\w+\\-\\d+$",
|
||||
"regions" : {
|
||||
"aws-iso-b-global" : {
|
||||
"description" : "AWS ISOB (US) global region"
|
||||
},
|
||||
"us-isob-east-1" : {
|
||||
"description" : "US ISOB East (Ohio)"
|
||||
}
|
||||
}
|
||||
}, {
|
||||
"id" : "aws-iso-e",
|
||||
"outputs" : {
|
||||
"dnsSuffix" : "cloud.adc-e.uk",
|
||||
"dualStackDnsSuffix" : "cloud.adc-e.uk",
|
||||
"implicitGlobalRegion" : "eu-isoe-west-1",
|
||||
"name" : "aws-iso-e",
|
||||
"supportsDualStack" : false,
|
||||
"supportsFIPS" : true
|
||||
},
|
||||
"regionRegex" : "^eu\\-isoe\\-\\w+\\-\\d+$",
|
||||
"regions" : { }
|
||||
}, {
|
||||
"id" : "aws-iso-f",
|
||||
"outputs" : {
|
||||
"dnsSuffix" : "csp.hci.ic.gov",
|
||||
"dualStackDnsSuffix" : "csp.hci.ic.gov",
|
||||
"implicitGlobalRegion" : "us-isof-south-1",
|
||||
"name" : "aws-iso-f",
|
||||
"supportsDualStack" : false,
|
||||
"supportsFIPS" : true
|
||||
},
|
||||
"regionRegex" : "^us\\-isof\\-\\w+\\-\\d+$",
|
||||
"regions" : { }
|
||||
} ],
|
||||
"version" : "1.1"
|
||||
}
|
||||
201
vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/endpoints.go
generated
vendored
Normal file
201
vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/endpoints.go
generated
vendored
Normal file
@@ -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
|
||||
}
|
||||
228
vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/CHANGELOG.md
generated
vendored
Normal file
228
vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/CHANGELOG.md
generated
vendored
Normal file
@@ -0,0 +1,228 @@
|
||||
# v2.5.10 (2024-01-04)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.5.9 (2023-12-07)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.5.8 (2023-12-01)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.5.7 (2023-11-30)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.5.6 (2023-11-29)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.5.5 (2023-11-28.2)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.5.4 (2023-11-20)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# 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
|
||||
|
||||
# v2.5.1 (2023-11-01)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.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/).
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.37 (2023-10-12)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.36 (2023-10-06)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.35 (2023-08-21)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.34 (2023-08-18)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.33 (2023-08-17)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.32 (2023-08-07)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.31 (2023-07-31)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.30 (2023-07-28)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.29 (2023-07-13)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.28 (2023-06-13)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.27 (2023-04-24)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.26 (2023-04-07)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.25 (2023-03-21)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.24 (2023-03-10)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.23 (2023-02-20)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.22 (2023-02-03)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.21 (2022-12-15)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.20 (2022-12-02)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.19 (2022-10-24)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.18 (2022-10-21)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.17 (2022-09-20)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.16 (2022-09-14)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.15 (2022-09-02)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.14 (2022-08-31)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.13 (2022-08-29)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.12 (2022-08-11)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.11 (2022-08-09)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.10 (2022-08-08)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.9 (2022-08-01)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.8 (2022-07-05)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.7 (2022-06-29)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.6 (2022-06-07)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.5 (2022-05-17)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.4 (2022-04-25)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.3 (2022-03-30)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.2 (2022-03-24)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.1 (2022-03-23)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.4.0 (2022-03-08)
|
||||
|
||||
* **Feature**: Updated `github.com/aws/smithy-go` to latest version
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.3.0 (2022-02-24)
|
||||
|
||||
* **Feature**: Updated `github.com/aws/smithy-go` to latest version
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.2.0 (2022-01-14)
|
||||
|
||||
* **Feature**: Updated `github.com/aws/smithy-go` to latest version
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.1.0 (2022-01-07)
|
||||
|
||||
* **Feature**: Updated `github.com/aws/smithy-go` to latest version
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.0.2 (2021-12-02)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.0.1 (2021-11-19)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v2.0.0 (2021-11-06)
|
||||
|
||||
* **Release**: Endpoint Variant Model Support
|
||||
* **Feature**: The SDK now supports configuration of FIPS and DualStack endpoints using environment variables, shared configuration, or programmatically.
|
||||
* **Feature**: Updated `github.com/aws/smithy-go` to latest version
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
202
vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/LICENSE.txt
generated
vendored
Normal file
202
vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/LICENSE.txt
generated
vendored
Normal file
@@ -0,0 +1,202 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
302
vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/endpoints.go
generated
vendored
Normal file
302
vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/endpoints.go
generated
vendored
Normal file
@@ -0,0 +1,302 @@
|
||||
package endpoints
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/aws/smithy-go/logging"
|
||||
"regexp"
|
||||
"strings"
|
||||
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
)
|
||||
|
||||
// DefaultKey is a compound map key of a variant and other values.
|
||||
type DefaultKey struct {
|
||||
Variant EndpointVariant
|
||||
ServiceVariant ServiceVariant
|
||||
}
|
||||
|
||||
// EndpointKey is a compound map key of a region and associated variant value.
|
||||
type EndpointKey struct {
|
||||
Region string
|
||||
Variant EndpointVariant
|
||||
ServiceVariant ServiceVariant
|
||||
}
|
||||
|
||||
// EndpointVariant is a bit field to describe the endpoints attributes.
|
||||
type EndpointVariant uint64
|
||||
|
||||
const (
|
||||
// FIPSVariant indicates that the endpoint is FIPS capable.
|
||||
FIPSVariant EndpointVariant = 1 << (64 - 1 - iota)
|
||||
|
||||
// DualStackVariant indicates that the endpoint is DualStack capable.
|
||||
DualStackVariant
|
||||
)
|
||||
|
||||
// ServiceVariant is a bit field to describe the service endpoint attributes.
|
||||
type ServiceVariant uint64
|
||||
|
||||
const (
|
||||
defaultProtocol = "https"
|
||||
defaultSigner = "v4"
|
||||
)
|
||||
|
||||
var (
|
||||
protocolPriority = []string{"https", "http"}
|
||||
signerPriority = []string{"v4", "s3v4"}
|
||||
)
|
||||
|
||||
// Options provide configuration needed to direct how endpoints are resolved.
|
||||
type Options struct {
|
||||
// Logger is a logging implementation that log events should be sent to.
|
||||
Logger logging.Logger
|
||||
|
||||
// LogDeprecated indicates that deprecated endpoints should be logged to the provided logger.
|
||||
LogDeprecated bool
|
||||
|
||||
// ResolvedRegion is the resolved region string. If provided (non-zero length) it takes priority
|
||||
// over the region name passed to the ResolveEndpoint call.
|
||||
ResolvedRegion string
|
||||
|
||||
// Disable usage of HTTPS (TLS / SSL)
|
||||
DisableHTTPS bool
|
||||
|
||||
// Instruct the resolver to use a service endpoint that supports dual-stack.
|
||||
// If a service does not have a dual-stack endpoint an error will be returned by the resolver.
|
||||
UseDualStackEndpoint aws.DualStackEndpointState
|
||||
|
||||
// Instruct the resolver to use a service endpoint that supports FIPS.
|
||||
// If a service does not have a FIPS endpoint an error will be returned by the resolver.
|
||||
UseFIPSEndpoint aws.FIPSEndpointState
|
||||
|
||||
// ServiceVariant is a bitfield of service specified endpoint variant data.
|
||||
ServiceVariant ServiceVariant
|
||||
}
|
||||
|
||||
// GetEndpointVariant returns the EndpointVariant for the variant associated options.
|
||||
func (o Options) GetEndpointVariant() (v EndpointVariant) {
|
||||
if o.UseDualStackEndpoint == aws.DualStackEndpointStateEnabled {
|
||||
v |= DualStackVariant
|
||||
}
|
||||
if o.UseFIPSEndpoint == aws.FIPSEndpointStateEnabled {
|
||||
v |= FIPSVariant
|
||||
}
|
||||
return v
|
||||
}
|
||||
|
||||
// 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")
|
||||
}
|
||||
|
||||
if opts.Logger == nil {
|
||||
opts.Logger = logging.Nop{}
|
||||
}
|
||||
|
||||
if len(opts.ResolvedRegion) > 0 {
|
||||
region = opts.ResolvedRegion
|
||||
}
|
||||
|
||||
for i := 0; i < len(ps); i++ {
|
||||
if !ps[i].canResolveEndpoint(region, opts) {
|
||||
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 map[DefaultKey]Endpoint
|
||||
Endpoints Endpoints
|
||||
}
|
||||
|
||||
func (p Partition) canResolveEndpoint(region string, opts Options) bool {
|
||||
_, ok := p.Endpoints[EndpointKey{
|
||||
Region: region,
|
||||
Variant: opts.GetEndpointVariant(),
|
||||
}]
|
||||
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
|
||||
}
|
||||
|
||||
endpoints := p.Endpoints
|
||||
|
||||
variant := options.GetEndpointVariant()
|
||||
serviceVariant := options.ServiceVariant
|
||||
|
||||
defaults := p.Defaults[DefaultKey{
|
||||
Variant: variant,
|
||||
ServiceVariant: serviceVariant,
|
||||
}]
|
||||
|
||||
return p.endpointForRegion(region, variant, serviceVariant, endpoints).resolve(p.ID, region, defaults, options)
|
||||
}
|
||||
|
||||
func (p Partition) endpointForRegion(region string, variant EndpointVariant, serviceVariant ServiceVariant, endpoints Endpoints) Endpoint {
|
||||
key := EndpointKey{
|
||||
Region: region,
|
||||
Variant: variant,
|
||||
}
|
||||
|
||||
if e, ok := endpoints[key]; ok {
|
||||
return e
|
||||
}
|
||||
|
||||
if !p.IsRegionalized {
|
||||
return endpoints[EndpointKey{
|
||||
Region: p.PartitionEndpoint,
|
||||
Variant: variant,
|
||||
ServiceVariant: serviceVariant,
|
||||
}]
|
||||
}
|
||||
|
||||
// Unable to find any matching endpoint, return
|
||||
// blank that will be used for generic endpoint creation.
|
||||
return Endpoint{}
|
||||
}
|
||||
|
||||
// Endpoints is a map of service config regions to endpoints
|
||||
type Endpoints map[EndpointKey]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
|
||||
|
||||
// Indicates that this endpoint is deprecated.
|
||||
Deprecated aws.Ternary
|
||||
}
|
||||
|
||||
// IsZero returns whether the endpoint structure is an empty (zero) value.
|
||||
func (e Endpoint) IsZero() bool {
|
||||
switch {
|
||||
case e.Unresolveable != aws.UnknownTernary:
|
||||
return false
|
||||
case len(e.Hostname) != 0:
|
||||
return false
|
||||
case len(e.Protocols) != 0:
|
||||
return false
|
||||
case e.CredentialScope != (CredentialScope{}):
|
||||
return false
|
||||
case len(e.SignatureVersions) != 0:
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func (e Endpoint) resolve(partition, region string, def Endpoint, options Options) (aws.Endpoint, error) {
|
||||
var merged Endpoint
|
||||
merged.mergeIn(def)
|
||||
merged.mergeIn(e)
|
||||
e = merged
|
||||
|
||||
if e.IsZero() {
|
||||
return aws.Endpoint{}, fmt.Errorf("unable to resolve endpoint for region: %v", region)
|
||||
}
|
||||
|
||||
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
|
||||
|
||||
if e.Deprecated == aws.TrueTernary && options.LogDeprecated {
|
||||
options.Logger.Logf(logging.Warn, "endpoint identifier %q, url %q marked as deprecated", region, u)
|
||||
}
|
||||
|
||||
return aws.Endpoint{
|
||||
URL: u,
|
||||
PartitionID: partition,
|
||||
SigningRegion: signingRegion,
|
||||
SigningName: signingName,
|
||||
SigningMethod: getByPriority(e.SignatureVersions, signerPriority, defaultSigner),
|
||||
}, nil
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
if other.Deprecated != aws.UnknownTernary {
|
||||
e.Deprecated = other.Deprecated
|
||||
}
|
||||
}
|
||||
|
||||
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]
|
||||
}
|
||||
6
vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/go_module_metadata.go
generated
vendored
Normal file
6
vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/go_module_metadata.go
generated
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
// Code generated by internal/repotools/cmd/updatemodulemeta DO NOT EDIT.
|
||||
|
||||
package endpoints
|
||||
|
||||
// goModuleVersion is the tagged release for this module
|
||||
const goModuleVersion = "2.5.10"
|
||||
263
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/CHANGELOG.md
generated
vendored
Normal file
263
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/CHANGELOG.md
generated
vendored
Normal file
@@ -0,0 +1,263 @@
|
||||
# v1.7.2 (2023-12-08)
|
||||
|
||||
* **Bug Fix**: Correct loading of [services *] sections into shared config.
|
||||
|
||||
# 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.
|
||||
|
||||
# v1.6.0 (2023-11-09.2)
|
||||
|
||||
* **Feature**: BREAKFIX: In order to support subproperty parsing, invalid property definitions must not be ignored
|
||||
|
||||
# v1.5.2 (2023-11-09)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.5.1 (2023-11-07)
|
||||
|
||||
* **Bug Fix**: Fix subproperty performance regression
|
||||
|
||||
# v1.5.0 (2023-11-01)
|
||||
|
||||
* **Feature**: Adds support for configured endpoints via environment variables and the AWS shared configuration file.
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.4.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/).
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.45 (2023-10-12)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.44 (2023-10-06)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.43 (2023-09-22)
|
||||
|
||||
* **Bug Fix**: Fixed a bug where merging `max_attempts` or `duration_seconds` fields across shared config files with invalid values would silently default them to 0.
|
||||
* **Bug Fix**: Move type assertion of config values out of the parsing stage, which resolves an issue where the contents of a profile would silently be dropped with certain numeric formats.
|
||||
|
||||
# v1.3.42 (2023-08-21)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.41 (2023-08-18)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.40 (2023-08-17)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.39 (2023-08-07)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.38 (2023-07-31)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.37 (2023-07-28)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.36 (2023-07-13)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.35 (2023-06-13)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.34 (2023-04-24)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.33 (2023-04-07)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.32 (2023-03-21)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.31 (2023-03-10)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.30 (2023-02-20)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.29 (2023-02-03)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.28 (2022-12-15)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.27 (2022-12-02)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.26 (2022-10-24)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.25 (2022-10-21)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.24 (2022-09-20)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.23 (2022-09-14)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.22 (2022-09-02)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.21 (2022-08-31)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.20 (2022-08-29)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.19 (2022-08-11)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.18 (2022-08-09)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.17 (2022-08-08)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.16 (2022-08-01)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.15 (2022-07-05)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.14 (2022-06-29)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.13 (2022-06-07)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.12 (2022-05-17)
|
||||
|
||||
* **Bug Fix**: Removes the fuzz testing files from the module, as they are invalid and not used.
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.11 (2022-04-25)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.10 (2022-03-30)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.9 (2022-03-24)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.8 (2022-03-23)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.7 (2022-03-08)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.6 (2022-02-24)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.5 (2022-01-28)
|
||||
|
||||
* **Bug Fix**: Fixes the SDK's handling of `duration_sections` in the shared credentials file or specified in multiple shared config and shared credentials files under the same profile. [#1568](https://github.com/aws/aws-sdk-go-v2/pull/1568). Thanks to [Amir Szekely](https://github.com/kichik) for help reproduce this bug.
|
||||
|
||||
# v1.3.4 (2022-01-14)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.3 (2022-01-07)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.2 (2021-12-02)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.1 (2021-11-19)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.3.0 (2021-11-06)
|
||||
|
||||
* **Feature**: The SDK now supports configuration of FIPS and DualStack endpoints using environment variables, shared configuration, or programmatically.
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.2.5 (2021-10-21)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.2.4 (2021-10-11)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.2.3 (2021-09-17)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.2.2 (2021-08-27)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.2.1 (2021-08-19)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.2.0 (2021-08-04)
|
||||
|
||||
* **Feature**: adds error handling for defered close calls
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.1 (2021-07-15)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.1.0 (2021-07-01)
|
||||
|
||||
* **Feature**: Support for `:`, `=`, `[`, `]` being present in expression values.
|
||||
|
||||
# v1.0.1 (2021-06-25)
|
||||
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
# v1.0.0 (2021-05-20)
|
||||
|
||||
* **Release**: The `github.com/aws/aws-sdk-go-v2/internal/ini` package is now a Go Module.
|
||||
* **Dependency Update**: Updated to the latest SDK module versions
|
||||
|
||||
202
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/LICENSE.txt
generated
vendored
Normal file
202
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/LICENSE.txt
generated
vendored
Normal file
@@ -0,0 +1,202 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
22
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/errors.go
generated
vendored
Normal file
22
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/errors.go
generated
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
package ini
|
||||
|
||||
import "fmt"
|
||||
|
||||
// UnableToReadFile is an error indicating that a ini file could not be read
|
||||
type UnableToReadFile struct {
|
||||
Err error
|
||||
}
|
||||
|
||||
// Error returns an error message and the underlying error message if present
|
||||
func (e *UnableToReadFile) Error() string {
|
||||
base := "unable to read file"
|
||||
if e.Err == nil {
|
||||
return base
|
||||
}
|
||||
return fmt.Sprintf("%s: %v", base, e.Err)
|
||||
}
|
||||
|
||||
// Unwrap returns the underlying error
|
||||
func (e *UnableToReadFile) Unwrap() error {
|
||||
return e.Err
|
||||
}
|
||||
6
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/go_module_metadata.go
generated
vendored
Normal file
6
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/go_module_metadata.go
generated
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
// Code generated by internal/repotools/cmd/updatemodulemeta DO NOT EDIT.
|
||||
|
||||
package ini
|
||||
|
||||
// goModuleVersion is the tagged release for this module
|
||||
const goModuleVersion = "1.7.2"
|
||||
56
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/ini.go
generated
vendored
Normal file
56
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/ini.go
generated
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
// Package ini implements parsing of the AWS shared config file.
|
||||
//
|
||||
// Example:
|
||||
// sections, err := ini.OpenFile("/path/to/file")
|
||||
// if err != nil {
|
||||
// panic(err)
|
||||
// }
|
||||
//
|
||||
// profile := "foo"
|
||||
// section, ok := sections.GetSection(profile)
|
||||
// if !ok {
|
||||
// fmt.Printf("section %q could not be found", profile)
|
||||
// }
|
||||
package ini
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// OpenFile parses shared config from the given file path.
|
||||
func OpenFile(path string) (sections Sections, err error) {
|
||||
f, oerr := os.Open(path)
|
||||
if oerr != nil {
|
||||
return Sections{}, &UnableToReadFile{Err: oerr}
|
||||
}
|
||||
|
||||
defer func() {
|
||||
closeErr := f.Close()
|
||||
if err == nil {
|
||||
err = closeErr
|
||||
} else if closeErr != nil {
|
||||
err = fmt.Errorf("close error: %v, original error: %w", closeErr, err)
|
||||
}
|
||||
}()
|
||||
|
||||
return Parse(f, path)
|
||||
}
|
||||
|
||||
// Parse parses shared config from the given reader.
|
||||
func Parse(r io.Reader, path string) (Sections, error) {
|
||||
contents, err := io.ReadAll(r)
|
||||
if err != nil {
|
||||
return Sections{}, fmt.Errorf("read all: %v", err)
|
||||
}
|
||||
|
||||
lines := strings.Split(string(contents), "\n")
|
||||
tokens, err := tokenize(lines)
|
||||
if err != nil {
|
||||
return Sections{}, fmt.Errorf("tokenize: %v", err)
|
||||
}
|
||||
|
||||
return parse(tokens, path), nil
|
||||
}
|
||||
109
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/parse.go
generated
vendored
Normal file
109
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/parse.go
generated
vendored
Normal file
@@ -0,0 +1,109 @@
|
||||
package ini
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func parse(tokens []lineToken, path string) Sections {
|
||||
parser := &parser{
|
||||
path: path,
|
||||
sections: NewSections(),
|
||||
}
|
||||
parser.parse(tokens)
|
||||
return parser.sections
|
||||
}
|
||||
|
||||
type parser struct {
|
||||
csection, ckey string // current state
|
||||
path string // source file path
|
||||
sections Sections // parse result
|
||||
}
|
||||
|
||||
func (p *parser) parse(tokens []lineToken) {
|
||||
for _, otok := range tokens {
|
||||
switch tok := otok.(type) {
|
||||
case *lineTokenProfile:
|
||||
p.handleProfile(tok)
|
||||
case *lineTokenProperty:
|
||||
p.handleProperty(tok)
|
||||
case *lineTokenSubProperty:
|
||||
p.handleSubProperty(tok)
|
||||
case *lineTokenContinuation:
|
||||
p.handleContinuation(tok)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (p *parser) handleProfile(tok *lineTokenProfile) {
|
||||
name := tok.Name
|
||||
if tok.Type != "" {
|
||||
name = fmt.Sprintf("%s %s", tok.Type, tok.Name)
|
||||
}
|
||||
p.ckey = ""
|
||||
p.csection = name
|
||||
if _, ok := p.sections.container[name]; !ok {
|
||||
p.sections.container[name] = NewSection(name)
|
||||
}
|
||||
}
|
||||
|
||||
func (p *parser) handleProperty(tok *lineTokenProperty) {
|
||||
if p.csection == "" {
|
||||
return // LEGACY: don't error on "global" properties
|
||||
}
|
||||
|
||||
p.ckey = tok.Key
|
||||
if _, ok := p.sections.container[p.csection].values[tok.Key]; ok {
|
||||
section := p.sections.container[p.csection]
|
||||
section.Logs = append(p.sections.container[p.csection].Logs,
|
||||
fmt.Sprintf(
|
||||
"For profile: %v, overriding %v value, with a %v value found in a duplicate profile defined later in the same file %v. \n",
|
||||
p.csection, tok.Key, tok.Key, p.path,
|
||||
),
|
||||
)
|
||||
p.sections.container[p.csection] = section
|
||||
}
|
||||
|
||||
p.sections.container[p.csection].values[tok.Key] = Value{
|
||||
str: tok.Value,
|
||||
}
|
||||
p.sections.container[p.csection].SourceFile[tok.Key] = p.path
|
||||
}
|
||||
|
||||
func (p *parser) handleSubProperty(tok *lineTokenSubProperty) {
|
||||
if p.csection == "" {
|
||||
return // LEGACY: don't error on "global" properties
|
||||
}
|
||||
|
||||
if p.ckey == "" || p.sections.container[p.csection].values[p.ckey].str != "" {
|
||||
// This is an "orphaned" subproperty, either because it's at
|
||||
// the beginning of a section or because the last property's
|
||||
// value isn't empty. Either way we're lenient here and
|
||||
// "promote" this to a normal property.
|
||||
p.handleProperty(&lineTokenProperty{
|
||||
Key: tok.Key,
|
||||
Value: strings.TrimSpace(trimPropertyComment(tok.Value)),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
if p.sections.container[p.csection].values[p.ckey].mp == nil {
|
||||
p.sections.container[p.csection].values[p.ckey] = Value{
|
||||
mp: map[string]string{},
|
||||
}
|
||||
}
|
||||
p.sections.container[p.csection].values[p.ckey].mp[tok.Key] = tok.Value
|
||||
}
|
||||
|
||||
func (p *parser) handleContinuation(tok *lineTokenContinuation) {
|
||||
if p.ckey == "" {
|
||||
return
|
||||
}
|
||||
|
||||
value, _ := p.sections.container[p.csection].values[p.ckey]
|
||||
if value.str != "" && value.mp == nil {
|
||||
value.str = fmt.Sprintf("%s\n%s", value.str, tok.Value)
|
||||
}
|
||||
|
||||
p.sections.container[p.csection].values[p.ckey] = value
|
||||
}
|
||||
157
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/sections.go
generated
vendored
Normal file
157
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/sections.go
generated
vendored
Normal file
@@ -0,0 +1,157 @@
|
||||
package ini
|
||||
|
||||
import (
|
||||
"sort"
|
||||
)
|
||||
|
||||
// Sections is a map of Section structures that represent
|
||||
// a configuration.
|
||||
type Sections struct {
|
||||
container map[string]Section
|
||||
}
|
||||
|
||||
// NewSections returns empty ini Sections
|
||||
func NewSections() Sections {
|
||||
return Sections{
|
||||
container: make(map[string]Section, 0),
|
||||
}
|
||||
}
|
||||
|
||||
// GetSection will return section p. If section p does not exist,
|
||||
// false will be returned in the second parameter.
|
||||
func (t Sections) GetSection(p string) (Section, bool) {
|
||||
v, ok := t.container[p]
|
||||
return v, ok
|
||||
}
|
||||
|
||||
// HasSection denotes if Sections consist of a section with
|
||||
// provided name.
|
||||
func (t Sections) HasSection(p string) bool {
|
||||
_, ok := t.container[p]
|
||||
return ok
|
||||
}
|
||||
|
||||
// SetSection sets a section value for provided section name.
|
||||
func (t Sections) SetSection(p string, v Section) Sections {
|
||||
t.container[p] = v
|
||||
return t
|
||||
}
|
||||
|
||||
// DeleteSection deletes a section entry/value for provided section name./
|
||||
func (t Sections) DeleteSection(p string) {
|
||||
delete(t.container, p)
|
||||
}
|
||||
|
||||
// values represents a map of union values.
|
||||
type values map[string]Value
|
||||
|
||||
// List will return a list of all sections that were successfully
|
||||
// parsed.
|
||||
func (t Sections) List() []string {
|
||||
keys := make([]string, len(t.container))
|
||||
i := 0
|
||||
for k := range t.container {
|
||||
keys[i] = k
|
||||
i++
|
||||
}
|
||||
|
||||
sort.Strings(keys)
|
||||
return keys
|
||||
}
|
||||
|
||||
// Section contains a name and values. This represent
|
||||
// a sectioned entry in a configuration file.
|
||||
type Section struct {
|
||||
// Name is the Section profile name
|
||||
Name string
|
||||
|
||||
// values are the values within parsed profile
|
||||
values values
|
||||
|
||||
// Errors is the list of errors
|
||||
Errors []error
|
||||
|
||||
// Logs is the list of logs
|
||||
Logs []string
|
||||
|
||||
// SourceFile is the INI Source file from where this section
|
||||
// was retrieved. They key is the property, value is the
|
||||
// source file the property was retrieved from.
|
||||
SourceFile map[string]string
|
||||
}
|
||||
|
||||
// NewSection returns an initialize section for the name
|
||||
func NewSection(name string) Section {
|
||||
return Section{
|
||||
Name: name,
|
||||
values: values{},
|
||||
SourceFile: map[string]string{},
|
||||
}
|
||||
}
|
||||
|
||||
// List will return a list of all
|
||||
// services in values
|
||||
func (t Section) List() []string {
|
||||
keys := make([]string, len(t.values))
|
||||
i := 0
|
||||
for k := range t.values {
|
||||
keys[i] = k
|
||||
i++
|
||||
}
|
||||
|
||||
sort.Strings(keys)
|
||||
return keys
|
||||
}
|
||||
|
||||
// UpdateSourceFile updates source file for a property to provided filepath.
|
||||
func (t Section) UpdateSourceFile(property string, filepath string) {
|
||||
t.SourceFile[property] = filepath
|
||||
}
|
||||
|
||||
// UpdateValue updates value for a provided key with provided value
|
||||
func (t Section) UpdateValue(k string, v Value) error {
|
||||
t.values[k] = v
|
||||
return nil
|
||||
}
|
||||
|
||||
// Has will return whether or not an entry exists in a given section
|
||||
func (t Section) Has(k string) bool {
|
||||
_, ok := t.values[k]
|
||||
return ok
|
||||
}
|
||||
|
||||
// ValueType will returned what type the union is set to. If
|
||||
// k was not found, the NoneType will be returned.
|
||||
func (t Section) ValueType(k string) (ValueType, bool) {
|
||||
v, ok := t.values[k]
|
||||
return v.Type, ok
|
||||
}
|
||||
|
||||
// Bool returns a bool value at k
|
||||
func (t Section) Bool(k string) (bool, bool) {
|
||||
return t.values[k].BoolValue()
|
||||
}
|
||||
|
||||
// Int returns an integer value at k
|
||||
func (t Section) Int(k string) (int64, bool) {
|
||||
return t.values[k].IntValue()
|
||||
}
|
||||
|
||||
// Map returns a map value at k
|
||||
func (t Section) Map(k string) map[string]string {
|
||||
return t.values[k].MapValue()
|
||||
}
|
||||
|
||||
// Float64 returns a float value at k
|
||||
func (t Section) Float64(k string) (float64, bool) {
|
||||
return t.values[k].FloatValue()
|
||||
}
|
||||
|
||||
// String returns the string value at k
|
||||
func (t Section) String(k string) string {
|
||||
_, ok := t.values[k]
|
||||
if !ok {
|
||||
return ""
|
||||
}
|
||||
return t.values[k].StringValue()
|
||||
}
|
||||
93
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/strings.go
generated
vendored
Normal file
93
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/strings.go
generated
vendored
Normal file
@@ -0,0 +1,93 @@
|
||||
package ini
|
||||
|
||||
import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
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
|
||||
func splitProperty(s string) (string, string, bool) {
|
||||
equalsi := strings.Index(s, "=")
|
||||
coloni := strings.Index(s, ":") // LEGACY: also supported for property assignment
|
||||
sep := "="
|
||||
if equalsi == -1 || coloni != -1 && coloni < equalsi {
|
||||
sep = ":"
|
||||
}
|
||||
|
||||
k, v, ok := strings.Cut(s, sep)
|
||||
if !ok {
|
||||
return "", "", false
|
||||
}
|
||||
return strings.TrimSpace(k), strings.TrimSpace(v), true
|
||||
}
|
||||
|
||||
// assumes no surrounding comment, whitespace, or profile brackets
|
||||
func splitProfile(s string) (string, string) {
|
||||
var first int
|
||||
for i, r := range s {
|
||||
if isLineSpace(r) {
|
||||
if first == 0 {
|
||||
first = i
|
||||
}
|
||||
} else {
|
||||
if first != 0 {
|
||||
return s[:first], s[i:]
|
||||
}
|
||||
}
|
||||
}
|
||||
if first == 0 {
|
||||
return "", s // type component is effectively blank
|
||||
}
|
||||
return "", ""
|
||||
}
|
||||
|
||||
func isLineSpace(r rune) bool {
|
||||
return r == ' ' || r == '\t'
|
||||
}
|
||||
|
||||
func unquote(s string) string {
|
||||
if isSingleQuoted(s) || isDoubleQuoted(s) {
|
||||
return s[1 : len(s)-1]
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
||||
// applies various legacy conversions to property values:
|
||||
// - remote wrapping single/doublequotes
|
||||
// - expand escaped quote and newline sequences
|
||||
func legacyStrconv(s string) string {
|
||||
s = unquote(s)
|
||||
s = strings.ReplaceAll(s, `\"`, `"`)
|
||||
s = strings.ReplaceAll(s, `\'`, `'`)
|
||||
s = strings.ReplaceAll(s, `\n`, "\n")
|
||||
return s
|
||||
}
|
||||
|
||||
func isSingleQuoted(s string) bool {
|
||||
return hasAffixes(s, "'", "'")
|
||||
}
|
||||
|
||||
func isDoubleQuoted(s string) bool {
|
||||
return hasAffixes(s, `"`, `"`)
|
||||
}
|
||||
|
||||
func isBracketed(s string) bool {
|
||||
return hasAffixes(s, "[", "]")
|
||||
}
|
||||
|
||||
func hasAffixes(s, left, right string) bool {
|
||||
return strings.HasPrefix(s, left) && strings.HasSuffix(s, right)
|
||||
}
|
||||
32
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/token.go
generated
vendored
Normal file
32
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/token.go
generated
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
package ini
|
||||
|
||||
type lineToken interface {
|
||||
isLineToken()
|
||||
}
|
||||
|
||||
type lineTokenProfile struct {
|
||||
Type string
|
||||
Name string
|
||||
}
|
||||
|
||||
func (*lineTokenProfile) isLineToken() {}
|
||||
|
||||
type lineTokenProperty struct {
|
||||
Key string
|
||||
Value string
|
||||
}
|
||||
|
||||
func (*lineTokenProperty) isLineToken() {}
|
||||
|
||||
type lineTokenContinuation struct {
|
||||
Value string
|
||||
}
|
||||
|
||||
func (*lineTokenContinuation) isLineToken() {}
|
||||
|
||||
type lineTokenSubProperty struct {
|
||||
Key string
|
||||
Value string
|
||||
}
|
||||
|
||||
func (*lineTokenSubProperty) isLineToken() {}
|
||||
92
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/tokenize.go
generated
vendored
Normal file
92
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/tokenize.go
generated
vendored
Normal file
@@ -0,0 +1,92 @@
|
||||
package ini
|
||||
|
||||
import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
func tokenize(lines []string) ([]lineToken, error) {
|
||||
tokens := make([]lineToken, 0, len(lines))
|
||||
for _, line := range lines {
|
||||
if len(strings.TrimSpace(line)) == 0 || isLineComment(line) {
|
||||
continue
|
||||
}
|
||||
|
||||
if tok := asProfile(line); tok != nil {
|
||||
tokens = append(tokens, tok)
|
||||
} else if tok := asProperty(line); tok != nil {
|
||||
tokens = append(tokens, tok)
|
||||
} else if tok := asSubProperty(line); tok != nil {
|
||||
tokens = append(tokens, tok)
|
||||
} else if tok := asContinuation(line); tok != nil {
|
||||
tokens = append(tokens, tok)
|
||||
} // unrecognized tokens are effectively ignored
|
||||
}
|
||||
return tokens, nil
|
||||
}
|
||||
|
||||
func isLineComment(line string) bool {
|
||||
trimmed := strings.TrimLeft(line, " \t")
|
||||
return strings.HasPrefix(trimmed, "#") || strings.HasPrefix(trimmed, ";")
|
||||
}
|
||||
|
||||
func asProfile(line string) *lineTokenProfile { // " [ type name ] ; comment"
|
||||
trimmed := strings.TrimSpace(trimProfileComment(line)) // "[ type name ]"
|
||||
if !isBracketed(trimmed) {
|
||||
return nil
|
||||
}
|
||||
trimmed = trimmed[1 : len(trimmed)-1] // " type name " (or just " name ")
|
||||
trimmed = strings.TrimSpace(trimmed) // "type name" / "name"
|
||||
typ, name := splitProfile(trimmed)
|
||||
return &lineTokenProfile{
|
||||
Type: typ,
|
||||
Name: name,
|
||||
}
|
||||
}
|
||||
|
||||
func asProperty(line string) *lineTokenProperty {
|
||||
if isLineSpace(rune(line[0])) {
|
||||
return nil
|
||||
}
|
||||
|
||||
trimmed := trimPropertyComment(line)
|
||||
trimmed = strings.TrimRight(trimmed, " \t")
|
||||
k, v, ok := splitProperty(trimmed)
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
return &lineTokenProperty{
|
||||
Key: strings.ToLower(k), // LEGACY: normalize key case
|
||||
Value: legacyStrconv(v), // LEGACY: see func docs
|
||||
}
|
||||
}
|
||||
|
||||
func asSubProperty(line string) *lineTokenSubProperty {
|
||||
if !isLineSpace(rune(line[0])) {
|
||||
return nil
|
||||
}
|
||||
|
||||
// comments on sub-properties are included in the value
|
||||
trimmed := strings.TrimLeft(line, " \t")
|
||||
k, v, ok := splitProperty(trimmed)
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
return &lineTokenSubProperty{ // same LEGACY constraints as in normal property
|
||||
Key: strings.ToLower(k),
|
||||
Value: legacyStrconv(v),
|
||||
}
|
||||
}
|
||||
|
||||
func asContinuation(line string) *lineTokenContinuation {
|
||||
if !isLineSpace(rune(line[0])) {
|
||||
return nil
|
||||
}
|
||||
|
||||
// includes comments like sub-properties
|
||||
trimmed := strings.TrimLeft(line, " \t")
|
||||
return &lineTokenContinuation{
|
||||
Value: trimmed,
|
||||
}
|
||||
}
|
||||
93
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/value.go
generated
vendored
Normal file
93
vendor/github.com/aws/aws-sdk-go-v2/internal/ini/value.go
generated
vendored
Normal file
@@ -0,0 +1,93 @@
|
||||
package ini
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// ValueType is an enum that will signify what type
|
||||
// the Value is
|
||||
type ValueType int
|
||||
|
||||
func (v ValueType) String() string {
|
||||
switch v {
|
||||
case NoneType:
|
||||
return "NONE"
|
||||
case StringType:
|
||||
return "STRING"
|
||||
}
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
// ValueType enums
|
||||
const (
|
||||
NoneType = ValueType(iota)
|
||||
StringType
|
||||
QuotedStringType
|
||||
)
|
||||
|
||||
// Value is a union container
|
||||
type Value struct {
|
||||
Type ValueType
|
||||
|
||||
str string
|
||||
mp map[string]string
|
||||
}
|
||||
|
||||
// NewStringValue returns a Value type generated using a string input.
|
||||
func NewStringValue(str string) (Value, error) {
|
||||
return Value{str: str}, nil
|
||||
}
|
||||
|
||||
func (v Value) String() string {
|
||||
switch v.Type {
|
||||
case StringType:
|
||||
return fmt.Sprintf("string: %s", string(v.str))
|
||||
case QuotedStringType:
|
||||
return fmt.Sprintf("quoted string: %s", string(v.str))
|
||||
default:
|
||||
return "union not set"
|
||||
}
|
||||
}
|
||||
|
||||
// MapValue returns a map value for sub properties
|
||||
func (v Value) MapValue() map[string]string {
|
||||
return v.mp
|
||||
}
|
||||
|
||||
// IntValue returns an integer value
|
||||
func (v Value) IntValue() (int64, bool) {
|
||||
i, err := strconv.ParseInt(string(v.str), 0, 64)
|
||||
if err != nil {
|
||||
return 0, false
|
||||
}
|
||||
return i, true
|
||||
}
|
||||
|
||||
// FloatValue returns a float value
|
||||
func (v Value) FloatValue() (float64, bool) {
|
||||
f, err := strconv.ParseFloat(string(v.str), 64)
|
||||
if err != nil {
|
||||
return 0, false
|
||||
}
|
||||
return f, true
|
||||
}
|
||||
|
||||
// BoolValue returns a bool value
|
||||
func (v Value) BoolValue() (bool, bool) {
|
||||
// we don't use ParseBool as it recognizes more than what we've
|
||||
// historically supported
|
||||
if strings.EqualFold(v.str, "true") {
|
||||
return true, true
|
||||
} else if strings.EqualFold(v.str, "false") {
|
||||
return false, true
|
||||
}
|
||||
return false, false
|
||||
}
|
||||
|
||||
// StringValue returns the string value
|
||||
func (v Value) StringValue() string {
|
||||
return v.str
|
||||
}
|
||||
33
vendor/github.com/aws/aws-sdk-go-v2/internal/rand/rand.go
generated
vendored
Normal file
33
vendor/github.com/aws/aws-sdk-go-v2/internal/rand/rand.go
generated
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
package rand
|
||||
|
||||
import (
|
||||
"crypto/rand"
|
||||
"fmt"
|
||||
"io"
|
||||
"math/big"
|
||||
)
|
||||
|
||||
func init() {
|
||||
Reader = rand.Reader
|
||||
}
|
||||
|
||||
// Reader provides a random reader that can reset during testing.
|
||||
var Reader io.Reader
|
||||
|
||||
var floatMaxBigInt = big.NewInt(1 << 53)
|
||||
|
||||
// Float64 returns a float64 read from an io.Reader source. The returned float will be between [0.0, 1.0).
|
||||
func Float64(reader io.Reader) (float64, error) {
|
||||
bi, err := rand.Int(reader, floatMaxBigInt)
|
||||
if err != nil {
|
||||
return 0, fmt.Errorf("failed to read random value, %v", err)
|
||||
}
|
||||
|
||||
return float64(bi.Int64()) / (1 << 53), nil
|
||||
}
|
||||
|
||||
// CryptoRandFloat64 returns a random float64 obtained from the crypto rand
|
||||
// source.
|
||||
func CryptoRandFloat64() (float64, error) {
|
||||
return Float64(Reader)
|
||||
}
|
||||
9
vendor/github.com/aws/aws-sdk-go-v2/internal/sdk/interfaces.go
generated
vendored
Normal file
9
vendor/github.com/aws/aws-sdk-go-v2/internal/sdk/interfaces.go
generated
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
package sdk
|
||||
|
||||
// Invalidator provides access to a type's invalidate method to make it
|
||||
// invalidate it cache.
|
||||
//
|
||||
// e.g aws.SafeCredentialsProvider's Invalidate method.
|
||||
type Invalidator interface {
|
||||
Invalidate()
|
||||
}
|
||||
74
vendor/github.com/aws/aws-sdk-go-v2/internal/sdk/time.go
generated
vendored
Normal file
74
vendor/github.com/aws/aws-sdk-go-v2/internal/sdk/time.go
generated
vendored
Normal file
@@ -0,0 +1,74 @@
|
||||
package sdk
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
)
|
||||
|
||||
func init() {
|
||||
NowTime = time.Now
|
||||
Sleep = time.Sleep
|
||||
SleepWithContext = sleepWithContext
|
||||
}
|
||||
|
||||
// NowTime is a value for getting the current time. This value can be overridden
|
||||
// for testing mocking out current time.
|
||||
var NowTime func() time.Time
|
||||
|
||||
// Sleep is a value for sleeping for a duration. This value can be overridden
|
||||
// for testing and mocking out sleep duration.
|
||||
var Sleep func(time.Duration)
|
||||
|
||||
// SleepWithContext will wait for the timer duration to expire, or the context
|
||||
// is canceled. Which ever happens first. If the context is canceled the Context's
|
||||
// error will be returned.
|
||||
//
|
||||
// This value can be overridden for testing and mocking out sleep duration.
|
||||
var SleepWithContext func(context.Context, time.Duration) error
|
||||
|
||||
// sleepWithContext will wait for the timer duration to expire, or the context
|
||||
// is canceled. Which ever happens first. If the context is canceled the
|
||||
// Context's error will be returned.
|
||||
func sleepWithContext(ctx context.Context, dur time.Duration) error {
|
||||
t := time.NewTimer(dur)
|
||||
defer t.Stop()
|
||||
|
||||
select {
|
||||
case <-t.C:
|
||||
break
|
||||
case <-ctx.Done():
|
||||
return ctx.Err()
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// noOpSleepWithContext does nothing, returns immediately.
|
||||
func noOpSleepWithContext(context.Context, time.Duration) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func noOpSleep(time.Duration) {}
|
||||
|
||||
// TestingUseNopSleep is a utility for disabling sleep across the SDK for
|
||||
// testing.
|
||||
func TestingUseNopSleep() func() {
|
||||
SleepWithContext = noOpSleepWithContext
|
||||
Sleep = noOpSleep
|
||||
|
||||
return func() {
|
||||
SleepWithContext = sleepWithContext
|
||||
Sleep = time.Sleep
|
||||
}
|
||||
}
|
||||
|
||||
// TestingUseReferenceTime is a utility for swapping the time function across the SDK to return a specific reference time
|
||||
// for testing purposes.
|
||||
func TestingUseReferenceTime(referenceTime time.Time) func() {
|
||||
NowTime = func() time.Time {
|
||||
return referenceTime
|
||||
}
|
||||
return func() {
|
||||
NowTime = time.Now
|
||||
}
|
||||
}
|
||||
12
vendor/github.com/aws/aws-sdk-go-v2/internal/sdkio/byte.go
generated
vendored
Normal file
12
vendor/github.com/aws/aws-sdk-go-v2/internal/sdkio/byte.go
generated
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
package sdkio
|
||||
|
||||
const (
|
||||
// Byte is 8 bits
|
||||
Byte int64 = 1
|
||||
// KibiByte (KiB) is 1024 Bytes
|
||||
KibiByte = Byte * 1024
|
||||
// MebiByte (MiB) is 1024 KiB
|
||||
MebiByte = KibiByte * 1024
|
||||
// GibiByte (GiB) is 1024 MiB
|
||||
GibiByte = MebiByte * 1024
|
||||
)
|
||||
47
vendor/github.com/aws/aws-sdk-go-v2/internal/shareddefaults/shared_config.go
generated
vendored
Normal file
47
vendor/github.com/aws/aws-sdk-go-v2/internal/shareddefaults/shared_config.go
generated
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
package shareddefaults
|
||||
|
||||
import (
|
||||
"os"
|
||||
"os/user"
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
// SharedCredentialsFilename returns the SDK's default file path
|
||||
// for the shared credentials file.
|
||||
//
|
||||
// Builds the shared config file path based on the OS's platform.
|
||||
//
|
||||
// - Linux/Unix: $HOME/.aws/credentials
|
||||
// - Windows: %USERPROFILE%\.aws\credentials
|
||||
func SharedCredentialsFilename() string {
|
||||
return filepath.Join(UserHomeDir(), ".aws", "credentials")
|
||||
}
|
||||
|
||||
// SharedConfigFilename returns the SDK's default file path for
|
||||
// the shared config file.
|
||||
//
|
||||
// Builds the shared config file path based on the OS's platform.
|
||||
//
|
||||
// - Linux/Unix: $HOME/.aws/config
|
||||
// - Windows: %USERPROFILE%\.aws\config
|
||||
func SharedConfigFilename() string {
|
||||
return filepath.Join(UserHomeDir(), ".aws", "config")
|
||||
}
|
||||
|
||||
// UserHomeDir returns the home directory for the user the process is
|
||||
// running under.
|
||||
func UserHomeDir() string {
|
||||
// Ignore errors since we only care about Windows and *nix.
|
||||
home, _ := os.UserHomeDir()
|
||||
|
||||
if len(home) > 0 {
|
||||
return home
|
||||
}
|
||||
|
||||
currUser, _ := user.Current()
|
||||
if currUser != nil {
|
||||
home = currUser.HomeDir
|
||||
}
|
||||
|
||||
return home
|
||||
}
|
||||
11
vendor/github.com/aws/aws-sdk-go-v2/internal/strings/strings.go
generated
vendored
Normal file
11
vendor/github.com/aws/aws-sdk-go-v2/internal/strings/strings.go
generated
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
package strings
|
||||
|
||||
import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
// HasPrefixFold tests whether the string s begins with prefix, interpreted as UTF-8 strings,
|
||||
// under Unicode case-folding.
|
||||
func HasPrefixFold(s, prefix string) bool {
|
||||
return len(s) >= len(prefix) && strings.EqualFold(s[0:len(prefix)], prefix)
|
||||
}
|
||||
28
vendor/github.com/aws/aws-sdk-go-v2/internal/sync/singleflight/LICENSE
generated
vendored
Normal file
28
vendor/github.com/aws/aws-sdk-go-v2/internal/sync/singleflight/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
Copyright (c) 2009 The Go Authors. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above
|
||||
copyright notice, this list of conditions and the following disclaimer
|
||||
in the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
* Neither the name of Google Inc. nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
7
vendor/github.com/aws/aws-sdk-go-v2/internal/sync/singleflight/docs.go
generated
vendored
Normal file
7
vendor/github.com/aws/aws-sdk-go-v2/internal/sync/singleflight/docs.go
generated
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
// Package singleflight provides a duplicate function call suppression
|
||||
// mechanism. This package is a fork of the Go golang.org/x/sync/singleflight
|
||||
// package. The package is forked, because the package a part of the unstable
|
||||
// and unversioned golang.org/x/sync module.
|
||||
//
|
||||
// https://github.com/golang/sync/tree/67f06af15bc961c363a7260195bcd53487529a21/singleflight
|
||||
package singleflight
|
||||
210
vendor/github.com/aws/aws-sdk-go-v2/internal/sync/singleflight/singleflight.go
generated
vendored
Normal file
210
vendor/github.com/aws/aws-sdk-go-v2/internal/sync/singleflight/singleflight.go
generated
vendored
Normal file
@@ -0,0 +1,210 @@
|
||||
// Copyright 2013 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package singleflight
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"fmt"
|
||||
"runtime"
|
||||
"runtime/debug"
|
||||
"sync"
|
||||
)
|
||||
|
||||
// errGoexit indicates the runtime.Goexit was called in
|
||||
// the user given function.
|
||||
var errGoexit = errors.New("runtime.Goexit was called")
|
||||
|
||||
// A panicError is an arbitrary value recovered from a panic
|
||||
// with the stack trace during the execution of given function.
|
||||
type panicError struct {
|
||||
value interface{}
|
||||
stack []byte
|
||||
}
|
||||
|
||||
// Error implements error interface.
|
||||
func (p *panicError) Error() string {
|
||||
return fmt.Sprintf("%v\n\n%s", p.value, p.stack)
|
||||
}
|
||||
|
||||
func newPanicError(v interface{}) error {
|
||||
stack := debug.Stack()
|
||||
|
||||
// The first line of the stack trace is of the form "goroutine N [status]:"
|
||||
// but by the time the panic reaches Do the goroutine may no longer exist
|
||||
// and its status will have changed. Trim out the misleading line.
|
||||
if line := bytes.IndexByte(stack[:], '\n'); line >= 0 {
|
||||
stack = stack[line+1:]
|
||||
}
|
||||
return &panicError{value: v, stack: stack}
|
||||
}
|
||||
|
||||
// call is an in-flight or completed singleflight.Do call
|
||||
type call struct {
|
||||
wg sync.WaitGroup
|
||||
|
||||
// These fields are written once before the WaitGroup is done
|
||||
// and are only read after the WaitGroup is done.
|
||||
val interface{}
|
||||
err error
|
||||
|
||||
// forgotten indicates whether Forget was called with this call's key
|
||||
// while the call was still in flight.
|
||||
forgotten bool
|
||||
|
||||
// These fields are read and written with the singleflight
|
||||
// mutex held before the WaitGroup is done, and are read but
|
||||
// not written after the WaitGroup is done.
|
||||
dups int
|
||||
chans []chan<- Result
|
||||
}
|
||||
|
||||
// Group represents a class of work and forms a namespace in
|
||||
// which units of work can be executed with duplicate suppression.
|
||||
type Group struct {
|
||||
mu sync.Mutex // protects m
|
||||
m map[string]*call // lazily initialized
|
||||
}
|
||||
|
||||
// Result holds the results of Do, so they can be passed
|
||||
// on a channel.
|
||||
type Result struct {
|
||||
Val interface{}
|
||||
Err error
|
||||
Shared bool
|
||||
}
|
||||
|
||||
// Do executes and returns the results of the given function, making
|
||||
// sure that only one execution is in-flight for a given key at a
|
||||
// time. If a duplicate comes in, the duplicate caller waits for the
|
||||
// original to complete and receives the same results.
|
||||
// The return value shared indicates whether v was given to multiple callers.
|
||||
func (g *Group) Do(key string, fn func() (interface{}, error)) (v interface{}, err error, shared bool) {
|
||||
g.mu.Lock()
|
||||
if g.m == nil {
|
||||
g.m = make(map[string]*call)
|
||||
}
|
||||
if c, ok := g.m[key]; ok {
|
||||
c.dups++
|
||||
g.mu.Unlock()
|
||||
c.wg.Wait()
|
||||
|
||||
if e, ok := c.err.(*panicError); ok {
|
||||
panic(e)
|
||||
} else if c.err == errGoexit {
|
||||
runtime.Goexit()
|
||||
}
|
||||
return c.val, c.err, true
|
||||
}
|
||||
c := new(call)
|
||||
c.wg.Add(1)
|
||||
g.m[key] = c
|
||||
g.mu.Unlock()
|
||||
|
||||
g.doCall(c, key, fn)
|
||||
return c.val, c.err, c.dups > 0
|
||||
}
|
||||
|
||||
// DoChan is like Do but returns a channel that will receive the
|
||||
// results when they are ready.
|
||||
//
|
||||
// The returned channel will not be closed.
|
||||
func (g *Group) DoChan(key string, fn func() (interface{}, error)) <-chan Result {
|
||||
ch := make(chan Result, 1)
|
||||
g.mu.Lock()
|
||||
if g.m == nil {
|
||||
g.m = make(map[string]*call)
|
||||
}
|
||||
if c, ok := g.m[key]; ok {
|
||||
c.dups++
|
||||
c.chans = append(c.chans, ch)
|
||||
g.mu.Unlock()
|
||||
return ch
|
||||
}
|
||||
c := &call{chans: []chan<- Result{ch}}
|
||||
c.wg.Add(1)
|
||||
g.m[key] = c
|
||||
g.mu.Unlock()
|
||||
|
||||
go g.doCall(c, key, fn)
|
||||
|
||||
return ch
|
||||
}
|
||||
|
||||
// doCall handles the single call for a key.
|
||||
func (g *Group) doCall(c *call, key string, fn func() (interface{}, error)) {
|
||||
normalReturn := false
|
||||
recovered := false
|
||||
|
||||
// use double-defer to distinguish panic from runtime.Goexit,
|
||||
// more details see https://golang.org/cl/134395
|
||||
defer func() {
|
||||
// the given function invoked runtime.Goexit
|
||||
if !normalReturn && !recovered {
|
||||
c.err = errGoexit
|
||||
}
|
||||
|
||||
c.wg.Done()
|
||||
g.mu.Lock()
|
||||
defer g.mu.Unlock()
|
||||
if !c.forgotten {
|
||||
delete(g.m, key)
|
||||
}
|
||||
|
||||
if e, ok := c.err.(*panicError); ok {
|
||||
// In order to prevent the waiting channels from being blocked forever,
|
||||
// needs to ensure that this panic cannot be recovered.
|
||||
if len(c.chans) > 0 {
|
||||
go panic(e)
|
||||
select {} // Keep this goroutine around so that it will appear in the crash dump.
|
||||
} else {
|
||||
panic(e)
|
||||
}
|
||||
} else if c.err == errGoexit {
|
||||
// Already in the process of goexit, no need to call again
|
||||
} else {
|
||||
// Normal return
|
||||
for _, ch := range c.chans {
|
||||
ch <- Result{c.val, c.err, c.dups > 0}
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
func() {
|
||||
defer func() {
|
||||
if !normalReturn {
|
||||
// Ideally, we would wait to take a stack trace until we've determined
|
||||
// whether this is a panic or a runtime.Goexit.
|
||||
//
|
||||
// Unfortunately, the only way we can distinguish the two is to see
|
||||
// whether the recover stopped the goroutine from terminating, and by
|
||||
// the time we know that, the part of the stack trace relevant to the
|
||||
// panic has been discarded.
|
||||
if r := recover(); r != nil {
|
||||
c.err = newPanicError(r)
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
c.val, c.err = fn()
|
||||
normalReturn = true
|
||||
}()
|
||||
|
||||
if !normalReturn {
|
||||
recovered = true
|
||||
}
|
||||
}
|
||||
|
||||
// Forget tells the singleflight to forget about a key. Future calls
|
||||
// to Do for this key will call the function rather than waiting for
|
||||
// an earlier call to complete.
|
||||
func (g *Group) Forget(key string) {
|
||||
g.mu.Lock()
|
||||
if c, ok := g.m[key]; ok {
|
||||
c.forgotten = true
|
||||
}
|
||||
delete(g.m, key)
|
||||
g.mu.Unlock()
|
||||
}
|
||||
13
vendor/github.com/aws/aws-sdk-go-v2/internal/timeconv/duration.go
generated
vendored
Normal file
13
vendor/github.com/aws/aws-sdk-go-v2/internal/timeconv/duration.go
generated
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
package timeconv
|
||||
|
||||
import "time"
|
||||
|
||||
// FloatSecondsDur converts a fractional seconds to duration.
|
||||
func FloatSecondsDur(v float64) time.Duration {
|
||||
return time.Duration(v * float64(time.Second))
|
||||
}
|
||||
|
||||
// DurSecondsFloat converts a duration into fractional seconds.
|
||||
func DurSecondsFloat(d time.Duration) float64 {
|
||||
return float64(d) / float64(time.Second)
|
||||
}
|
||||
Reference in New Issue
Block a user