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