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