class BabySMS::Adapter

Attributes

client[RW]
from[R]

Public Class Methods

adapter_name() click to toggle source
# File lib/babysms/adapter.rb, line 20
def self.adapter_name
  bare_name = name.split('::').last
  bare_name.gsub(/Adapter\z/, '').downcase
end
for_adapter_id(adapter_id, pool: BabySMS.adapters) click to toggle source
# File lib/babysms/adapter.rb, line 16
def self.for_adapter_id(adapter_id, pool: BabySMS.adapters)
  pool.find { |adapter| adapter.adapter_id == adapter_id }
end
for_number(number, pool: BabySMS.adapters) click to toggle source

Locates an adapter instance associated with a phone number

# File lib/babysms/adapter.rb, line 11
def self.for_number(number, pool: BabySMS.adapters)
  number = Phony.normalize(number)
  pool.find { |adapter| adapter.from == number }
end
new(from:) click to toggle source
# File lib/babysms/adapter.rb, line 6
def initialize(from:)
  @from = Phony.normalize(from)
end

Public Instance Methods

adapter_id() click to toggle source

e.g., “15555555555@twilio”

# File lib/babysms/adapter.rb, line 31
def adapter_id
  "#{from}@#{adapter_name}"
end
adapter_name() click to toggle source

e.g., “twilio”

# File lib/babysms/adapter.rb, line 26
def adapter_name
  self.class.adapter_name
end
web_hook() click to toggle source

Returns an instance of the web hook handler, if it exists

# File lib/babysms/adapter.rb, line 46
def web_hook
  unless instance_variable_defined?(:@web_hook)
    @web_hook = if (cls = web_hook_class)
      cls.new(self)
    end
  end

  @web_hook
end
web_hook?() click to toggle source
# File lib/babysms/adapter.rb, line 41
def web_hook?
  !!web_hook_class
end
web_hook_class() click to toggle source

if the adapter supports web hooks, it'll have a nested class called “WebHook”. This returns the class

# File lib/babysms/adapter.rb, line 37
def web_hook_class
  self.class.const_get(:WebHook)
end