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// Sends a message to a particular channel that the member is a part of. STANDARD 16// messages can contain 4KB of data and the 1KB of metadata. CONTROL messages can 17// contain 30 bytes of data and no metadata. 18func (c *Client) SendChannelMessage(ctx context.Context, params *SendChannelMessageInput, optFns ...func(*Options)) (*SendChannelMessageOutput, error) { 19 if params == nil { 20 params = &SendChannelMessageInput{} 21 } 22 23 result, metadata, err := c.invokeOperation(ctx, "SendChannelMessage", params, optFns, addOperationSendChannelMessageMiddlewares) 24 if err != nil { 25 return nil, err 26 } 27 28 out := result.(*SendChannelMessageOutput) 29 out.ResultMetadata = metadata 30 return out, nil 31} 32 33type SendChannelMessageInput struct { 34 35 // The ARN of the channel. 36 // 37 // This member is required. 38 ChannelArn *string 39 40 // The Idempotency token for each client request. 41 // 42 // This member is required. 43 ClientRequestToken *string 44 45 // The content of the message. 46 // 47 // This member is required. 48 Content *string 49 50 // Boolean that controls whether the message is persisted on the back end. 51 // Required. 52 // 53 // This member is required. 54 Persistence types.ChannelMessagePersistenceType 55 56 // The type of message, STANDARD or CONTROL. 57 // 58 // This member is required. 59 Type types.ChannelMessageType 60 61 // The optional metadata for each message. 62 Metadata *string 63} 64 65type SendChannelMessageOutput struct { 66 67 // The ARN of the channel. 68 ChannelArn *string 69 70 // The ID string assigned to each message. 71 MessageId *string 72 73 // Metadata pertaining to the operation's result. 74 ResultMetadata middleware.Metadata 75} 76 77func addOperationSendChannelMessageMiddlewares(stack *middleware.Stack, options Options) (err error) { 78 err = stack.Serialize.Add(&awsRestjson1_serializeOpSendChannelMessage{}, middleware.After) 79 if err != nil { 80 return err 81 } 82 err = stack.Deserialize.Add(&awsRestjson1_deserializeOpSendChannelMessage{}, middleware.After) 83 if err != nil { 84 return err 85 } 86 if err = addSetLoggerMiddleware(stack, options); err != nil { 87 return err 88 } 89 if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { 90 return err 91 } 92 if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { 93 return err 94 } 95 if err = addResolveEndpointMiddleware(stack, options); err != nil { 96 return err 97 } 98 if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { 99 return err 100 } 101 if err = addRetryMiddlewares(stack, options); err != nil { 102 return err 103 } 104 if err = addHTTPSignerV4Middleware(stack, options); err != nil { 105 return err 106 } 107 if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { 108 return err 109 } 110 if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { 111 return err 112 } 113 if err = addClientUserAgent(stack); err != nil { 114 return err 115 } 116 if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { 117 return err 118 } 119 if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { 120 return err 121 } 122 if err = addEndpointPrefix_opSendChannelMessageMiddleware(stack); err != nil { 123 return err 124 } 125 if err = addIdempotencyToken_opSendChannelMessageMiddleware(stack, options); err != nil { 126 return err 127 } 128 if err = addOpSendChannelMessageValidationMiddleware(stack); err != nil { 129 return err 130 } 131 if err = stack.Initialize.Add(newServiceMetadataMiddleware_opSendChannelMessage(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 146type endpointPrefix_opSendChannelMessageMiddleware struct { 147} 148 149func (*endpointPrefix_opSendChannelMessageMiddleware) ID() string { 150 return "EndpointHostPrefix" 151} 152 153func (m *endpointPrefix_opSendChannelMessageMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( 154 out middleware.SerializeOutput, metadata middleware.Metadata, err error, 155) { 156 if smithyhttp.GetHostnameImmutable(ctx) || smithyhttp.IsEndpointHostPrefixDisabled(ctx) { 157 return next.HandleSerialize(ctx, in) 158 } 159 160 req, ok := in.Request.(*smithyhttp.Request) 161 if !ok { 162 return out, metadata, fmt.Errorf("unknown transport type %T", in.Request) 163 } 164 165 req.URL.Host = "messaging-" + req.URL.Host 166 167 return next.HandleSerialize(ctx, in) 168} 169func addEndpointPrefix_opSendChannelMessageMiddleware(stack *middleware.Stack) error { 170 return stack.Serialize.Insert(&endpointPrefix_opSendChannelMessageMiddleware{}, `OperationSerializer`, middleware.After) 171} 172 173type idempotencyToken_initializeOpSendChannelMessage struct { 174 tokenProvider IdempotencyTokenProvider 175} 176 177func (*idempotencyToken_initializeOpSendChannelMessage) ID() string { 178 return "OperationIdempotencyTokenAutoFill" 179} 180 181func (m *idempotencyToken_initializeOpSendChannelMessage) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( 182 out middleware.InitializeOutput, metadata middleware.Metadata, err error, 183) { 184 if m.tokenProvider == nil { 185 return next.HandleInitialize(ctx, in) 186 } 187 188 input, ok := in.Parameters.(*SendChannelMessageInput) 189 if !ok { 190 return out, metadata, fmt.Errorf("expected middleware input to be of type *SendChannelMessageInput ") 191 } 192 193 if input.ClientRequestToken == nil { 194 t, err := m.tokenProvider.GetIdempotencyToken() 195 if err != nil { 196 return out, metadata, err 197 } 198 input.ClientRequestToken = &t 199 } 200 return next.HandleInitialize(ctx, in) 201} 202func addIdempotencyToken_opSendChannelMessageMiddleware(stack *middleware.Stack, cfg Options) error { 203 return stack.Initialize.Add(&idempotencyToken_initializeOpSendChannelMessage{tokenProvider: cfg.IdempotencyTokenProvider}, middleware.Before) 204} 205 206func newServiceMetadataMiddleware_opSendChannelMessage(region string) *awsmiddleware.RegisterServiceMetadata { 207 return &awsmiddleware.RegisterServiceMetadata{ 208 Region: region, 209 ServiceID: ServiceID, 210 SigningName: "chime", 211 OperationName: "SendChannelMessage", 212 } 213} 214