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