1// Code generated by smithy-go-codegen DO NOT EDIT. 2 3package chime 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/chime/types" 11 "github.com/aws/smithy-go/middleware" 12 smithyhttp "github.com/aws/smithy-go/transport/http" 13) 14 15// Lists all the moderators for a channel. The x-amz-chime-bearer request header is 16// mandatory. Use the AppInstanceUserArn of the user that makes the API call as the 17// value in the header. 18func (c *Client) ListChannelModerators(ctx context.Context, params *ListChannelModeratorsInput, optFns ...func(*Options)) (*ListChannelModeratorsOutput, error) { 19 if params == nil { 20 params = &ListChannelModeratorsInput{} 21 } 22 23 result, metadata, err := c.invokeOperation(ctx, "ListChannelModerators", params, optFns, addOperationListChannelModeratorsMiddlewares) 24 if err != nil { 25 return nil, err 26 } 27 28 out := result.(*ListChannelModeratorsOutput) 29 out.ResultMetadata = metadata 30 return out, nil 31} 32 33type ListChannelModeratorsInput struct { 34 35 // The ARN of the channel. 36 // 37 // This member is required. 38 ChannelArn *string 39 40 // The AppInstanceUserArn of the user that makes the API call. 41 ChimeBearer *string 42 43 // The maximum number of moderators that you want returned. 44 MaxResults *int32 45 46 // The token passed by previous API calls until all requested moderators are 47 // returned. 48 NextToken *string 49} 50 51type ListChannelModeratorsOutput struct { 52 53 // The ARN of the channel. 54 ChannelArn *string 55 56 // The information about and names of each moderator. 57 ChannelModerators []types.ChannelModeratorSummary 58 59 // The token passed by previous API calls until all requested moderators are 60 // returned. 61 NextToken *string 62 63 // Metadata pertaining to the operation's result. 64 ResultMetadata middleware.Metadata 65} 66 67func addOperationListChannelModeratorsMiddlewares(stack *middleware.Stack, options Options) (err error) { 68 err = stack.Serialize.Add(&awsRestjson1_serializeOpListChannelModerators{}, middleware.After) 69 if err != nil { 70 return err 71 } 72 err = stack.Deserialize.Add(&awsRestjson1_deserializeOpListChannelModerators{}, middleware.After) 73 if err != nil { 74 return err 75 } 76 if err = addSetLoggerMiddleware(stack, options); err != nil { 77 return err 78 } 79 if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { 80 return err 81 } 82 if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { 83 return err 84 } 85 if err = addResolveEndpointMiddleware(stack, options); err != nil { 86 return err 87 } 88 if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { 89 return err 90 } 91 if err = addRetryMiddlewares(stack, options); err != nil { 92 return err 93 } 94 if err = addHTTPSignerV4Middleware(stack, options); err != nil { 95 return err 96 } 97 if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { 98 return err 99 } 100 if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { 101 return err 102 } 103 if err = addClientUserAgent(stack); err != nil { 104 return err 105 } 106 if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { 107 return err 108 } 109 if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { 110 return err 111 } 112 if err = addEndpointPrefix_opListChannelModeratorsMiddleware(stack); err != nil { 113 return err 114 } 115 if err = addOpListChannelModeratorsValidationMiddleware(stack); err != nil { 116 return err 117 } 118 if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListChannelModerators(options.Region), middleware.Before); err != nil { 119 return err 120 } 121 if err = addRequestIDRetrieverMiddleware(stack); err != nil { 122 return err 123 } 124 if err = addResponseErrorMiddleware(stack); err != nil { 125 return err 126 } 127 if err = addRequestResponseLogging(stack, options); err != nil { 128 return err 129 } 130 return nil 131} 132 133type endpointPrefix_opListChannelModeratorsMiddleware struct { 134} 135 136func (*endpointPrefix_opListChannelModeratorsMiddleware) ID() string { 137 return "EndpointHostPrefix" 138} 139 140func (m *endpointPrefix_opListChannelModeratorsMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( 141 out middleware.SerializeOutput, metadata middleware.Metadata, err error, 142) { 143 if smithyhttp.GetHostnameImmutable(ctx) || smithyhttp.IsEndpointHostPrefixDisabled(ctx) { 144 return next.HandleSerialize(ctx, in) 145 } 146 147 req, ok := in.Request.(*smithyhttp.Request) 148 if !ok { 149 return out, metadata, fmt.Errorf("unknown transport type %T", in.Request) 150 } 151 152 req.URL.Host = "messaging-" + req.URL.Host 153 154 return next.HandleSerialize(ctx, in) 155} 156func addEndpointPrefix_opListChannelModeratorsMiddleware(stack *middleware.Stack) error { 157 return stack.Serialize.Insert(&endpointPrefix_opListChannelModeratorsMiddleware{}, `OperationSerializer`, middleware.After) 158} 159 160// ListChannelModeratorsAPIClient is a client that implements the 161// ListChannelModerators operation. 162type ListChannelModeratorsAPIClient interface { 163 ListChannelModerators(context.Context, *ListChannelModeratorsInput, ...func(*Options)) (*ListChannelModeratorsOutput, error) 164} 165 166var _ ListChannelModeratorsAPIClient = (*Client)(nil) 167 168// ListChannelModeratorsPaginatorOptions is the paginator options for 169// ListChannelModerators 170type ListChannelModeratorsPaginatorOptions struct { 171 // The maximum number of moderators that you want returned. 172 Limit int32 173 174 // Set to true if pagination should stop if the service returns a pagination token 175 // that matches the most recent token provided to the service. 176 StopOnDuplicateToken bool 177} 178 179// ListChannelModeratorsPaginator is a paginator for ListChannelModerators 180type ListChannelModeratorsPaginator struct { 181 options ListChannelModeratorsPaginatorOptions 182 client ListChannelModeratorsAPIClient 183 params *ListChannelModeratorsInput 184 nextToken *string 185 firstPage bool 186} 187 188// NewListChannelModeratorsPaginator returns a new ListChannelModeratorsPaginator 189func NewListChannelModeratorsPaginator(client ListChannelModeratorsAPIClient, params *ListChannelModeratorsInput, optFns ...func(*ListChannelModeratorsPaginatorOptions)) *ListChannelModeratorsPaginator { 190 if params == nil { 191 params = &ListChannelModeratorsInput{} 192 } 193 194 options := ListChannelModeratorsPaginatorOptions{} 195 if params.MaxResults != nil { 196 options.Limit = *params.MaxResults 197 } 198 199 for _, fn := range optFns { 200 fn(&options) 201 } 202 203 return &ListChannelModeratorsPaginator{ 204 options: options, 205 client: client, 206 params: params, 207 firstPage: true, 208 } 209} 210 211// HasMorePages returns a boolean indicating whether more pages are available 212func (p *ListChannelModeratorsPaginator) HasMorePages() bool { 213 return p.firstPage || p.nextToken != nil 214} 215 216// NextPage retrieves the next ListChannelModerators page. 217func (p *ListChannelModeratorsPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*ListChannelModeratorsOutput, error) { 218 if !p.HasMorePages() { 219 return nil, fmt.Errorf("no more pages available") 220 } 221 222 params := *p.params 223 params.NextToken = p.nextToken 224 225 var limit *int32 226 if p.options.Limit > 0 { 227 limit = &p.options.Limit 228 } 229 params.MaxResults = limit 230 231 result, err := p.client.ListChannelModerators(ctx, ¶ms, optFns...) 232 if err != nil { 233 return nil, err 234 } 235 p.firstPage = false 236 237 prevToken := p.nextToken 238 p.nextToken = result.NextToken 239 240 if p.options.StopOnDuplicateToken && prevToken != nil && p.nextToken != nil && *prevToken == *p.nextToken { 241 p.nextToken = nil 242 } 243 244 return result, nil 245} 246 247func newServiceMetadataMiddleware_opListChannelModerators(region string) *awsmiddleware.RegisterServiceMetadata { 248 return &awsmiddleware.RegisterServiceMetadata{ 249 Region: region, 250 ServiceID: ServiceID, 251 SigningName: "chime", 252 OperationName: "ListChannelModerators", 253 } 254} 255