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  }