membership-attribute-service/app/services/mail/AwsSQSSend.scala (26 lines of code) (raw):
package services.mail
import play.api.libs.json.{JsObject, JsString, JsValue, Json}
import software.amazon.awssdk.auth.credentials.{AwsCredentialsProviderChain, InstanceProfileCredentialsProvider, ProfileCredentialsProvider}
case class QueueName(value: String) extends AnyVal
case class EmailData(emailAddress: String, salesforceContactId: String, campaignName: String, dataPoints: Map[String, String]) {
def toJson: JsValue = {
Json.parse(
s"""
|{
| "To":{
| "Address": "$emailAddress",
| "ContactAttributes":{
| "SubscriberAttributes": ${mapToJson(dataPoints)}
| }
| },
| "DataExtensionName": "$campaignName",
| "SfContactId": "$salesforceContactId"
|}""".stripMargin,
)
}
private def mapToJson(map: Map[String, String]): JsObject = {
JsObject(map.map { case (key, value) =>
key -> JsString(value)
}.toSeq)
}
}