Sha256: 68ae4b7182f1513bc86642322dcd2e860de414de5a2225ab126b4125a46ce9a8

Contents?: true

Size: 1.37 KB

Versions: 2

Compression:

Stored size: 1.37 KB

Contents

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

module SmsBroker
  CLIENTS = {
    nexmo: Client::Nexmo,
    twilio: Client::Twilio,
    open_market: Client::OpenMarket
  }.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

    def status(message_id)
      StatusRequester.new(client).status(message_id)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
sms_broker-1.0.8 lib/sms_broker/service.rb
sms_broker-1.0.7 lib/sms_broker/service.rb