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