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