1// Code generated by smithy-go-codegen DO NOT EDIT. 2 3package ecrpublic 4 5import ( 6 "context" 7 "fmt" 8 awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" 9 "github.com/aws/aws-sdk-go-v2/aws/signer/v4" 10 "github.com/aws/aws-sdk-go-v2/service/ecrpublic/types" 11 "github.com/aws/smithy-go/middleware" 12 smithyhttp "github.com/aws/smithy-go/transport/http" 13) 14 15// Returns metadata about the images in a repository in a public registry. 16// Beginning with Docker version 1.9, the Docker client compresses image layers 17// before pushing them to a V2 Docker registry. The output of the docker images 18// command shows the uncompressed image size, so it may return a larger image size 19// than the image sizes returned by DescribeImages. 20func (c *Client) DescribeImages(ctx context.Context, params *DescribeImagesInput, optFns ...func(*Options)) (*DescribeImagesOutput, error) { 21 if params == nil { 22 params = &DescribeImagesInput{} 23 } 24 25 result, metadata, err := c.invokeOperation(ctx, "DescribeImages", params, optFns, addOperationDescribeImagesMiddlewares) 26 if err != nil { 27 return nil, err 28 } 29 30 out := result.(*DescribeImagesOutput) 31 out.ResultMetadata = metadata 32 return out, nil 33} 34 35type DescribeImagesInput struct { 36 37 // The repository that contains the images to describe. 38 // 39 // This member is required. 40 RepositoryName *string 41 42 // The list of image IDs for the requested repository. 43 ImageIds []types.ImageIdentifier 44 45 // The maximum number of repository results returned by DescribeImages in paginated 46 // output. When this parameter is used, DescribeImages only returns maxResults 47 // results in a single page along with a nextToken response element. The remaining 48 // results of the initial request can be seen by sending another DescribeImages 49 // request with the returned nextToken value. This value can be between 1 and 1000. 50 // If this parameter is not used, then DescribeImages returns up to 100 results and 51 // a nextToken value, if applicable. This option cannot be used when you specify 52 // images with imageIds. 53 MaxResults *int32 54 55 // The nextToken value returned from a previous paginated DescribeImages request 56 // where maxResults was used and the results exceeded the value of that parameter. 57 // Pagination continues from the end of the previous results that returned the 58 // nextToken value. This value is null when there are no more results to return. 59 // This option cannot be used when you specify images with imageIds. 60 NextToken *string 61 62 // The AWS account ID associated with the public registry that contains the 63 // repository in which to describe images. If you do not specify a registry, the 64 // default public registry is assumed. 65 RegistryId *string 66} 67 68type DescribeImagesOutput struct { 69 70 // A list of ImageDetail objects that contain data about the image. 71 ImageDetails []types.ImageDetail 72 73 // The nextToken value to include in a future DescribeImages request. When the 74 // results of a DescribeImages request exceed maxResults, this value can be used to 75 // retrieve the next page of results. This value is null when there are no more 76 // results to return. 77 NextToken *string 78 79 // Metadata pertaining to the operation's result. 80 ResultMetadata middleware.Metadata 81} 82 83func addOperationDescribeImagesMiddlewares(stack *middleware.Stack, options Options) (err error) { 84 err = stack.Serialize.Add(&awsAwsjson11_serializeOpDescribeImages{}, middleware.After) 85 if err != nil { 86 return err 87 } 88 err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpDescribeImages{}, middleware.After) 89 if err != nil { 90 return err 91 } 92 if err = addSetLoggerMiddleware(stack, options); err != nil { 93 return err 94 } 95 if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { 96 return err 97 } 98 if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { 99 return err 100 } 101 if err = addResolveEndpointMiddleware(stack, options); err != nil { 102 return err 103 } 104 if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { 105 return err 106 } 107 if err = addRetryMiddlewares(stack, options); err != nil { 108 return err 109 } 110 if err = addHTTPSignerV4Middleware(stack, options); err != nil { 111 return err 112 } 113 if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { 114 return err 115 } 116 if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { 117 return err 118 } 119 if err = addClientUserAgent(stack); err != nil { 120 return err 121 } 122 if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { 123 return err 124 } 125 if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { 126 return err 127 } 128 if err = addOpDescribeImagesValidationMiddleware(stack); err != nil { 129 return err 130 } 131 if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDescribeImages(options.Region), middleware.Before); err != nil { 132 return err 133 } 134 if err = addRequestIDRetrieverMiddleware(stack); err != nil { 135 return err 136 } 137 if err = addResponseErrorMiddleware(stack); err != nil { 138 return err 139 } 140 if err = addRequestResponseLogging(stack, options); err != nil { 141 return err 142 } 143 return nil 144} 145 146// DescribeImagesAPIClient is a client that implements the DescribeImages 147// operation. 148type DescribeImagesAPIClient interface { 149 DescribeImages(context.Context, *DescribeImagesInput, ...func(*Options)) (*DescribeImagesOutput, error) 150} 151 152var _ DescribeImagesAPIClient = (*Client)(nil) 153 154// DescribeImagesPaginatorOptions is the paginator options for DescribeImages 155type DescribeImagesPaginatorOptions struct { 156 // The maximum number of repository results returned by DescribeImages in paginated 157 // output. When this parameter is used, DescribeImages only returns maxResults 158 // results in a single page along with a nextToken response element. The remaining 159 // results of the initial request can be seen by sending another DescribeImages 160 // request with the returned nextToken value. This value can be between 1 and 1000. 161 // If this parameter is not used, then DescribeImages returns up to 100 results and 162 // a nextToken value, if applicable. This option cannot be used when you specify 163 // images with imageIds. 164 Limit int32 165 166 // Set to true if pagination should stop if the service returns a pagination token 167 // that matches the most recent token provided to the service. 168 StopOnDuplicateToken bool 169} 170 171// DescribeImagesPaginator is a paginator for DescribeImages 172type DescribeImagesPaginator struct { 173 options DescribeImagesPaginatorOptions 174 client DescribeImagesAPIClient 175 params *DescribeImagesInput 176 nextToken *string 177 firstPage bool 178} 179 180// NewDescribeImagesPaginator returns a new DescribeImagesPaginator 181func NewDescribeImagesPaginator(client DescribeImagesAPIClient, params *DescribeImagesInput, optFns ...func(*DescribeImagesPaginatorOptions)) *DescribeImagesPaginator { 182 options := DescribeImagesPaginatorOptions{} 183 if params.MaxResults != nil { 184 options.Limit = *params.MaxResults 185 } 186 187 for _, fn := range optFns { 188 fn(&options) 189 } 190 191 if params == nil { 192 params = &DescribeImagesInput{} 193 } 194 195 return &DescribeImagesPaginator{ 196 options: options, 197 client: client, 198 params: params, 199 firstPage: true, 200 } 201} 202 203// HasMorePages returns a boolean indicating whether more pages are available 204func (p *DescribeImagesPaginator) HasMorePages() bool { 205 return p.firstPage || p.nextToken != nil 206} 207 208// NextPage retrieves the next DescribeImages page. 209func (p *DescribeImagesPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*DescribeImagesOutput, error) { 210 if !p.HasMorePages() { 211 return nil, fmt.Errorf("no more pages available") 212 } 213 214 params := *p.params 215 params.NextToken = p.nextToken 216 217 var limit *int32 218 if p.options.Limit > 0 { 219 limit = &p.options.Limit 220 } 221 params.MaxResults = limit 222 223 result, err := p.client.DescribeImages(ctx, ¶ms, optFns...) 224 if err != nil { 225 return nil, err 226 } 227 p.firstPage = false 228 229 prevToken := p.nextToken 230 p.nextToken = result.NextToken 231 232 if p.options.StopOnDuplicateToken && prevToken != nil && p.nextToken != nil && *prevToken == *p.nextToken { 233 p.nextToken = nil 234 } 235 236 return result, nil 237} 238 239func newServiceMetadataMiddleware_opDescribeImages(region string) *awsmiddleware.RegisterServiceMetadata { 240 return &awsmiddleware.RegisterServiceMetadata{ 241 Region: region, 242 ServiceID: ServiceID, 243 SigningName: "ecr-public", 244 OperationName: "DescribeImages", 245 } 246} 247