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