Sha256: dce30a7d2e5ba0522bfd06a7140f90299fcd6ca3c24b6759ca27361b3e5b1f1f

Contents?: true

Size: 1.78 KB

Versions: 1

Compression:

Stored size: 1.78 KB

Contents

require "aws_sms/version"
require 'aws-sdk'
require 'configatron'
require 'aws_sms/config'

class AwsSms
  class SNSClientError < StandardError; end
  class InvalidNumber < StandardError; end

  def initialize(region: nil, access_key_id: nil, secret_key: nil, sms_attributes: nil)
    @region            = region            || Config.region
    @access_key_id     = access_key_id     || Config.access_key
    @secret_key        = secret_key        || Config.secret_key
    @default_sms_type  = default_sms_type  || Config.sms_type
    @default_sender_id = default_sender_id || Config.default_sender_id
    @sms_attributes    = sms_attributes    || Config.sms_attributes
    validate_args!
    set_config!
  end

  def send(phone_number, message)
    client.publish(phone_number: phone_number, message: message)
  end

  private
  attr_reader :region, :access_key_id, :secret_key, :default_sender_id,
              :default_sms_type

  def client
    @client ||= begin
      sns = ::Aws::SNS::Client.new()
      sns.set_sms_attributes({ attributes: {
        "DefaultSMSType" => default_sms_type,
        "DefaultSenderID" => default_sender_id
      }})
      sns
    end
  end

  def set_config!
    ::Aws.config.update({
      region: region,
      credentials: Aws::Credentials.new(access_key_id, secret_key)
    })
  end

  def validate_args!
    if region.nil? || access_key_id.nil? || secret_key.nil?
      message = 'ERROR: region, access_key_id, and secret_key arguments must '\
              'be provided. You can explicitly set them when initializing '\
              'AwsSms, set them in your Environment Variables as: '\
              'AWS_DEFAULT_REGION, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, '\
              'or use AwsSms::Config.set_credentials'
      raise ArgumentError, message
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
aws_sms-0.3.1 lib/aws_sms.rb