Sha256: 1508d5fa5382d390f5c387a53e8716d93494a5bd1d36d741d1ac6665082b69cf

Contents?: true

Size: 872 Bytes

Versions: 2

Compression:

Stored size: 872 Bytes

Contents

# frozen_string_literal: true

module TwilioBase
  class PhoneNumber
    COUNTRY_CODE = ENV.fetch('COUNTRY_CODE')

    class << self
      include TwilioBase::Clients

      def find_or_create(phone_number)
        phone_number ? find(phone_number) : create
      end

      private

      def find(phone_number)
        incoming_phone_numbers.list(phone_number: phone_number).first
      end

      def create
        number = available_numbers.first.phone_number
        purchase_number(number)
      end

      def available_numbers
        rest_client.api.available_phone_numbers(COUNTRY_CODE).local.list(
          sms_enabled: true
        )
      end

      def purchase_number(number)
        incoming_phone_numbers.create(phone_number: number)
      end

      def incoming_phone_numbers
        rest_client.api.incoming_phone_numbers
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
twilio_base-1.9.0 app/services/twilio_base/phone_number.rb
twilio_base-1.8.0 app/services/twilio_base/phone_number.rb