github.com/wormhole-foundation/wormhole-explorer/common@v0.0.0-20240604151348-09585b5b97c5/client/sns/producer.go (about) 1 package sns 2 3 import ( 4 "context" 5 6 "github.com/aws/aws-sdk-go-v2/aws" 7 aws_sns "github.com/aws/aws-sdk-go-v2/service/sns" 8 ) 9 10 // Producer represents SNS producer. 11 type Producer struct { 12 api *aws_sns.Client 13 url string 14 } 15 16 func NewProducer(awsConfig aws.Config, url string) (*Producer, error) { 17 return &Producer{ 18 api: aws_sns.NewFromConfig(awsConfig), 19 url: url, 20 }, nil 21 } 22 23 // SendMessage sends messages to SQS. 24 func (p *Producer) SendMessage(ctx context.Context, groupID, deduplicationID, body string) error { 25 _, err := p.api.Publish(ctx, 26 &aws_sns.PublishInput{ 27 MessageGroupId: aws.String(groupID), 28 MessageDeduplicationId: aws.String(deduplicationID), 29 Message: aws.String(body), 30 TopicArn: aws.String(p.url), 31 }) 32 return err 33 }