1// Code generated by smithy-go-codegen DO NOT EDIT. 2 3package codecommit 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/smithy-go/middleware" 11 smithyhttp "github.com/aws/smithy-go/transport/http" 12) 13 14// Lists all approval rule templates in the specified AWS Region in your AWS 15// account. If an AWS Region is not specified, the AWS Region where you are signed 16// in is used. 17func (c *Client) ListApprovalRuleTemplates(ctx context.Context, params *ListApprovalRuleTemplatesInput, optFns ...func(*Options)) (*ListApprovalRuleTemplatesOutput, error) { 18 if params == nil { 19 params = &ListApprovalRuleTemplatesInput{} 20 } 21 22 result, metadata, err := c.invokeOperation(ctx, "ListApprovalRuleTemplates", params, optFns, addOperationListApprovalRuleTemplatesMiddlewares) 23 if err != nil { 24 return nil, err 25 } 26 27 out := result.(*ListApprovalRuleTemplatesOutput) 28 out.ResultMetadata = metadata 29 return out, nil 30} 31 32type ListApprovalRuleTemplatesInput struct { 33 34 // A non-zero, non-negative integer used to limit the number of returned results. 35 MaxResults *int32 36 37 // An enumeration token that, when provided in a request, returns the next batch of 38 // the results. 39 NextToken *string 40} 41 42type ListApprovalRuleTemplatesOutput struct { 43 44 // The names of all the approval rule templates found in the AWS Region for your 45 // AWS account. 46 ApprovalRuleTemplateNames []string 47 48 // An enumeration token that allows the operation to batch the next results of the 49 // operation. 50 NextToken *string 51 52 // Metadata pertaining to the operation's result. 53 ResultMetadata middleware.Metadata 54} 55 56func addOperationListApprovalRuleTemplatesMiddlewares(stack *middleware.Stack, options Options) (err error) { 57 err = stack.Serialize.Add(&awsAwsjson11_serializeOpListApprovalRuleTemplates{}, middleware.After) 58 if err != nil { 59 return err 60 } 61 err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpListApprovalRuleTemplates{}, middleware.After) 62 if err != nil { 63 return err 64 } 65 if err = addSetLoggerMiddleware(stack, options); err != nil { 66 return err 67 } 68 if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { 69 return err 70 } 71 if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { 72 return err 73 } 74 if err = addResolveEndpointMiddleware(stack, options); err != nil { 75 return err 76 } 77 if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { 78 return err 79 } 80 if err = addRetryMiddlewares(stack, options); err != nil { 81 return err 82 } 83 if err = addHTTPSignerV4Middleware(stack, options); err != nil { 84 return err 85 } 86 if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { 87 return err 88 } 89 if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { 90 return err 91 } 92 if err = addClientUserAgent(stack); err != nil { 93 return err 94 } 95 if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { 96 return err 97 } 98 if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { 99 return err 100 } 101 if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListApprovalRuleTemplates(options.Region), middleware.Before); err != nil { 102 return err 103 } 104 if err = addRequestIDRetrieverMiddleware(stack); err != nil { 105 return err 106 } 107 if err = addResponseErrorMiddleware(stack); err != nil { 108 return err 109 } 110 if err = addRequestResponseLogging(stack, options); err != nil { 111 return err 112 } 113 return nil 114} 115 116// ListApprovalRuleTemplatesAPIClient is a client that implements the 117// ListApprovalRuleTemplates operation. 118type ListApprovalRuleTemplatesAPIClient interface { 119 ListApprovalRuleTemplates(context.Context, *ListApprovalRuleTemplatesInput, ...func(*Options)) (*ListApprovalRuleTemplatesOutput, error) 120} 121 122var _ ListApprovalRuleTemplatesAPIClient = (*Client)(nil) 123 124// ListApprovalRuleTemplatesPaginatorOptions is the paginator options for 125// ListApprovalRuleTemplates 126type ListApprovalRuleTemplatesPaginatorOptions struct { 127 // A non-zero, non-negative integer used to limit the number of returned results. 128 Limit int32 129 130 // Set to true if pagination should stop if the service returns a pagination token 131 // that matches the most recent token provided to the service. 132 StopOnDuplicateToken bool 133} 134 135// ListApprovalRuleTemplatesPaginator is a paginator for ListApprovalRuleTemplates 136type ListApprovalRuleTemplatesPaginator struct { 137 options ListApprovalRuleTemplatesPaginatorOptions 138 client ListApprovalRuleTemplatesAPIClient 139 params *ListApprovalRuleTemplatesInput 140 nextToken *string 141 firstPage bool 142} 143 144// NewListApprovalRuleTemplatesPaginator returns a new 145// ListApprovalRuleTemplatesPaginator 146func NewListApprovalRuleTemplatesPaginator(client ListApprovalRuleTemplatesAPIClient, params *ListApprovalRuleTemplatesInput, optFns ...func(*ListApprovalRuleTemplatesPaginatorOptions)) *ListApprovalRuleTemplatesPaginator { 147 if params == nil { 148 params = &ListApprovalRuleTemplatesInput{} 149 } 150 151 options := ListApprovalRuleTemplatesPaginatorOptions{} 152 if params.MaxResults != nil { 153 options.Limit = *params.MaxResults 154 } 155 156 for _, fn := range optFns { 157 fn(&options) 158 } 159 160 return &ListApprovalRuleTemplatesPaginator{ 161 options: options, 162 client: client, 163 params: params, 164 firstPage: true, 165 } 166} 167 168// HasMorePages returns a boolean indicating whether more pages are available 169func (p *ListApprovalRuleTemplatesPaginator) HasMorePages() bool { 170 return p.firstPage || p.nextToken != nil 171} 172 173// NextPage retrieves the next ListApprovalRuleTemplates page. 174func (p *ListApprovalRuleTemplatesPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*ListApprovalRuleTemplatesOutput, error) { 175 if !p.HasMorePages() { 176 return nil, fmt.Errorf("no more pages available") 177 } 178 179 params := *p.params 180 params.NextToken = p.nextToken 181 182 var limit *int32 183 if p.options.Limit > 0 { 184 limit = &p.options.Limit 185 } 186 params.MaxResults = limit 187 188 result, err := p.client.ListApprovalRuleTemplates(ctx, ¶ms, optFns...) 189 if err != nil { 190 return nil, err 191 } 192 p.firstPage = false 193 194 prevToken := p.nextToken 195 p.nextToken = result.NextToken 196 197 if p.options.StopOnDuplicateToken && prevToken != nil && p.nextToken != nil && *prevToken == *p.nextToken { 198 p.nextToken = nil 199 } 200 201 return result, nil 202} 203 204func newServiceMetadataMiddleware_opListApprovalRuleTemplates(region string) *awsmiddleware.RegisterServiceMetadata { 205 return &awsmiddleware.RegisterServiceMetadata{ 206 Region: region, 207 ServiceID: ServiceID, 208 SigningName: "codecommit", 209 OperationName: "ListApprovalRuleTemplates", 210 } 211} 212