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