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