All Downloads are FREE. Search and download functionalities are using the official Maven repository.

br.com.simpli.ws.AwsSNS.kt Maven / Gradle / Ivy

package br.com.simpli.ws

import com.amazonaws.auth.PropertiesCredentials
import com.amazonaws.regions.Regions
import com.amazonaws.services.sns.model.PublishRequest
import br.com.simpli.tools.Validator
import com.amazonaws.auth.AWSCredentialsProvider
import com.amazonaws.auth.AWSStaticCredentialsProvider
import com.amazonaws.auth.DefaultAWSCredentialsProviderChain
import com.amazonaws.services.sns.AmazonSNS
import com.amazonaws.services.sns.AmazonSNSClientBuilder
import com.amazonaws.util.ClassLoaderHelper.getResourceAsStream

/**
 *
 * @author ricardoprado
 */
class AwsSNS {

    private val provider: AWSCredentialsProvider
    private var snsClient: AmazonSNS

    constructor(region: String, credentialsFileName: String)
            : this(Regions.fromName(region.toLowerCase().replace('_', '-')), credentialsFileName)

    @JvmOverloads
    constructor(region: Regions = Regions.US_EAST_1, credentialsFileName: String) {

        provider = try {
            AWSStaticCredentialsProvider(PropertiesCredentials(getResourceAsStream(credentialsFileName)))
        } catch (e: Exception) {
            DefaultAWSCredentialsProviderChain()
        }

        snsClient = AmazonSNSClientBuilder.standard()
                .withRegion(region)
                .withCredentials(provider)
                .build()
    }

    @Deprecated("Method in portuguese has been deprecated.", ReplaceWith("sendSMS(recipient, message)"))
    fun enviarSMS(destinatario: String, mensagem: String) = sendSMS(destinatario, mensagem)

    fun sendSMS(recipient: String, message: String) {
        if (!Validator.isValidPhoneNumber(recipient)) {
            return
        }

        val publishRequest = PublishRequest()
                .withMessage(message)
                .withPhoneNumber(recipient)
        snsClient.publish(publishRequest)
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy