Sha256: c5c62b203519c515e51986f7567eaa5f23c72217db30fc130b15654c8d7aa016

Contents?: true

Size: 1.17 KB

Versions: 3

Compression:

Stored size: 1.17 KB

Contents

require 'sms_broker/message_sender'
require 'sms_broker/voice_message_sender'
require 'sms_broker/client/base'
require 'sms_broker/client/nexmo'
require 'sms_broker/client/twilio'
require 'sms_broker/exceptions/invalid_service'
require 'sms_broker/exceptions/not_implemented'

module SmsBroker
  CLIENTS = {
    nexmo: Client::Nexmo,
    twilio: Client::Twilio
  }.freeze

  class Service
    def self.get(name)
      options = service_configuration(name)

      result = Service.validate(name, options)

      unless result.valid?
        raise Exceptions::InvalidService, name.to_sym => result.errors
      end

      new CLIENTS[name.to_sym].new(options)
    end

    def self.service_configuration(name)
      SmsBroker.configuration[:services_setups][name.to_sym]
    end

    def self.validate(name, options)
      Setup.service_validation_schemas[name.to_sym].validate(options)
    end

    attr_reader :client

    def initialize(client)
      @client = client
    end

    def message(message)
      MessageSender.new(client).message(message)
    end

    def voice_message(message) #could have another params like lang
      VoiceMessageSender.new(client).message(message)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
sms_broker-1.0.5 lib/sms_broker/service.rb
sms_broker-1.0.4 lib/sms_broker/service.rb
sms_broker-1.0.3 lib/sms_broker/service.rb