1
2
3 package ecr
4
5 import (
6 "context"
7 "errors"
8 "fmt"
9 "github.com/aws/aws-sdk-go-v2/aws"
10 awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
11 "github.com/aws/aws-sdk-go-v2/aws/signer/v4"
12 internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
13 "github.com/aws/aws-sdk-go-v2/service/ecr/types"
14 smithyendpoints "github.com/aws/smithy-go/endpoints"
15 "github.com/aws/smithy-go/middleware"
16 smithyhttp "github.com/aws/smithy-go/transport/http"
17 )
18
19
20
21
22
23
24
25
26
27
28
29 func (c *Client) PutReplicationConfiguration(ctx context.Context, params *PutReplicationConfigurationInput, optFns ...func(*Options)) (*PutReplicationConfigurationOutput, error) {
30 if params == nil {
31 params = &PutReplicationConfigurationInput{}
32 }
33
34 result, metadata, err := c.invokeOperation(ctx, "PutReplicationConfiguration", params, optFns, c.addOperationPutReplicationConfigurationMiddlewares)
35 if err != nil {
36 return nil, err
37 }
38
39 out := result.(*PutReplicationConfigurationOutput)
40 out.ResultMetadata = metadata
41 return out, nil
42 }
43
44 type PutReplicationConfigurationInput struct {
45
46
47
48
49 ReplicationConfiguration *types.ReplicationConfiguration
50
51 noSmithyDocumentSerde
52 }
53
54 type PutReplicationConfigurationOutput struct {
55
56
57 ReplicationConfiguration *types.ReplicationConfiguration
58
59
60 ResultMetadata middleware.Metadata
61
62 noSmithyDocumentSerde
63 }
64
65 func (c *Client) addOperationPutReplicationConfigurationMiddlewares(stack *middleware.Stack, options Options) (err error) {
66 err = stack.Serialize.Add(&awsAwsjson11_serializeOpPutReplicationConfiguration{}, middleware.After)
67 if err != nil {
68 return err
69 }
70 err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpPutReplicationConfiguration{}, middleware.After)
71 if err != nil {
72 return err
73 }
74 if err = addlegacyEndpointContextSetter(stack, options); err != nil {
75 return err
76 }
77 if err = addSetLoggerMiddleware(stack, options); err != nil {
78 return err
79 }
80 if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil {
81 return err
82 }
83 if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil {
84 return err
85 }
86 if err = addResolveEndpointMiddleware(stack, options); err != nil {
87 return err
88 }
89 if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil {
90 return err
91 }
92 if err = addRetryMiddlewares(stack, options); err != nil {
93 return err
94 }
95 if err = addHTTPSignerV4Middleware(stack, options); err != nil {
96 return err
97 }
98 if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
99 return err
100 }
101 if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil {
102 return err
103 }
104 if err = addClientUserAgent(stack, options); err != nil {
105 return err
106 }
107 if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil {
108 return err
109 }
110 if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
111 return err
112 }
113 if err = addPutReplicationConfigurationResolveEndpointMiddleware(stack, options); err != nil {
114 return err
115 }
116 if err = addOpPutReplicationConfigurationValidationMiddleware(stack); err != nil {
117 return err
118 }
119 if err = stack.Initialize.Add(newServiceMetadataMiddleware_opPutReplicationConfiguration(options.Region), middleware.Before); err != nil {
120 return err
121 }
122 if err = awsmiddleware.AddRecursionDetection(stack); err != nil {
123 return err
124 }
125 if err = addRequestIDRetrieverMiddleware(stack); err != nil {
126 return err
127 }
128 if err = addResponseErrorMiddleware(stack); err != nil {
129 return err
130 }
131 if err = addRequestResponseLogging(stack, options); err != nil {
132 return err
133 }
134 if err = addendpointDisableHTTPSMiddleware(stack, options); err != nil {
135 return err
136 }
137 return nil
138 }
139
140 func newServiceMetadataMiddleware_opPutReplicationConfiguration(region string) *awsmiddleware.RegisterServiceMetadata {
141 return &awsmiddleware.RegisterServiceMetadata{
142 Region: region,
143 ServiceID: ServiceID,
144 SigningName: "ecr",
145 OperationName: "PutReplicationConfiguration",
146 }
147 }
148
149 type opPutReplicationConfigurationResolveEndpointMiddleware struct {
150 EndpointResolver EndpointResolverV2
151 BuiltInResolver builtInParameterResolver
152 }
153
154 func (*opPutReplicationConfigurationResolveEndpointMiddleware) ID() string {
155 return "ResolveEndpointV2"
156 }
157
158 func (m *opPutReplicationConfigurationResolveEndpointMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
159 out middleware.SerializeOutput, metadata middleware.Metadata, err error,
160 ) {
161 if awsmiddleware.GetRequiresLegacyEndpoints(ctx) {
162 return next.HandleSerialize(ctx, in)
163 }
164
165 req, ok := in.Request.(*smithyhttp.Request)
166 if !ok {
167 return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
168 }
169
170 if m.EndpointResolver == nil {
171 return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil")
172 }
173
174 params := EndpointParameters{}
175
176 m.BuiltInResolver.ResolveBuiltIns(¶ms)
177
178 var resolvedEndpoint smithyendpoints.Endpoint
179 resolvedEndpoint, err = m.EndpointResolver.ResolveEndpoint(ctx, params)
180 if err != nil {
181 return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err)
182 }
183
184 req.URL = &resolvedEndpoint.URI
185
186 for k := range resolvedEndpoint.Headers {
187 req.Header.Set(
188 k,
189 resolvedEndpoint.Headers.Get(k),
190 )
191 }
192
193 authSchemes, err := internalauth.GetAuthenticationSchemes(&resolvedEndpoint.Properties)
194 if err != nil {
195 var nfe *internalauth.NoAuthenticationSchemesFoundError
196 if errors.As(err, &nfe) {
197
198 signingName := "ecr"
199 signingRegion := m.BuiltInResolver.(*builtInResolver).Region
200 ctx = awsmiddleware.SetSigningName(ctx, signingName)
201 ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
202
203 }
204 var ue *internalauth.UnSupportedAuthenticationSchemeSpecifiedError
205 if errors.As(err, &ue) {
206 return out, metadata, fmt.Errorf(
207 "This operation requests signer version(s) %v but the client only supports %v",
208 ue.UnsupportedSchemes,
209 internalauth.SupportedSchemes,
210 )
211 }
212 }
213
214 for _, authScheme := range authSchemes {
215 switch authScheme.(type) {
216 case *internalauth.AuthenticationSchemeV4:
217 v4Scheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4)
218 var signingName, signingRegion string
219 if v4Scheme.SigningName == nil {
220 signingName = "ecr"
221 } else {
222 signingName = *v4Scheme.SigningName
223 }
224 if v4Scheme.SigningRegion == nil {
225 signingRegion = m.BuiltInResolver.(*builtInResolver).Region
226 } else {
227 signingRegion = *v4Scheme.SigningRegion
228 }
229 if v4Scheme.DisableDoubleEncoding != nil {
230
231
232
233 ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4Scheme.DisableDoubleEncoding)
234 }
235 ctx = awsmiddleware.SetSigningName(ctx, signingName)
236 ctx = awsmiddleware.SetSigningRegion(ctx, signingRegion)
237 break
238 case *internalauth.AuthenticationSchemeV4A:
239 v4aScheme, _ := authScheme.(*internalauth.AuthenticationSchemeV4A)
240 if v4aScheme.SigningName == nil {
241 v4aScheme.SigningName = aws.String("ecr")
242 }
243 if v4aScheme.DisableDoubleEncoding != nil {
244
245
246
247 ctx = internalauth.SetDisableDoubleEncoding(ctx, *v4aScheme.DisableDoubleEncoding)
248 }
249 ctx = awsmiddleware.SetSigningName(ctx, *v4aScheme.SigningName)
250 ctx = awsmiddleware.SetSigningRegion(ctx, v4aScheme.SigningRegionSet[0])
251 break
252 case *internalauth.AuthenticationSchemeNone:
253 break
254 }
255 }
256
257 return next.HandleSerialize(ctx, in)
258 }
259
260 func addPutReplicationConfigurationResolveEndpointMiddleware(stack *middleware.Stack, options Options) error {
261 return stack.Serialize.Insert(&opPutReplicationConfigurationResolveEndpointMiddleware{
262 EndpointResolver: options.EndpointResolverV2,
263 BuiltInResolver: &builtInResolver{
264 Region: options.Region,
265 UseDualStack: options.EndpointOptions.UseDualStackEndpoint,
266 UseFIPS: options.EndpointOptions.UseFIPSEndpoint,
267 Endpoint: options.BaseEndpoint,
268 },
269 }, "ResolveEndpoint", middleware.After)
270 }
271
View as plain text