plattyp/sms_auth

View on GitHub
app/services/text_message_service.rb

Summary

Maintainability
A
0 mins
Test Coverage
require 'twilio-ruby'

class TextMessageService
  attr_reader :phone_number, :message

  def initialize(phone_number, message)
    @phone_number = phone_number
    @message = message
  end

  def send
    return false if recipient_trap? && !allowed_recipient?
    twilio_client.account.messages.create(
      from: from_phone_number,
      to: phone_number,
      body: formatted_message
    )
  end

  def formatted_message
    has_prefix? ? "#{prefix}: #{message}" : message
  end

  def has_prefix?
    !prefix.nil?
  end

  def from_phone_number
    SmsAuth::Engine.twilio_from_number
  end

  def prefix
    SmsAuth::Engine.message_prefix
  end

  def recipient_trap?
    SmsAuth::Engine.limited_recipients.count > 0
  end

  def allowed_recipient?
    !SmsAuth::Engine.limited_recipients.index(phone_number).nil?
  end

  def twilio_client
    @twilio_client ||= Twilio::REST::Client.new
  end
end