Module: Arafa

Defined in:
lib/arafa.rb,
lib/arafa/types.rb,
lib/arafa/errors.rb,
lib/arafa/message.rb,
lib/arafa/version.rb,
lib/arafa/send_result.rb,
lib/arafa/airtime/base.rb,
lib/arafa/phone_number.rb,
lib/arafa/ussd/request.rb,
lib/arafa/configuration.rb,
lib/arafa/ussd/response.rb,
lib/arafa/providers/base.rb,
lib/arafa/ussd/wasiliana.rb,
lib/arafa/airtime/wasiliana.rb,
lib/arafa/providers/wasiliana.rb,
lib/arafa/data/africas_talking.rb,
lib/arafa/ussd/africas_talking.rb,
lib/arafa/whatsapp/message_body.rb,
lib/arafa/airtime/africas_talking.rb,
lib/arafa/contracts/base_contract.rb,
lib/arafa/whatsapp/africas_talking.rb,
lib/arafa/providers/africas_talking.rb,
lib/arafa/contracts/airtime_contract.rb,
lib/arafa/contracts/wasiliana_contract.rb,
lib/arafa/schemas/ussd_callback_schema.rb,
lib/arafa/contracts/mobile_data_contract.rb,
lib/arafa/schemas/airtime_request_schema.rb,
lib/arafa/schemas/delivery_report_schema.rb,
lib/arafa/contracts/africas_talking_contract.rb,
lib/arafa/contracts/africas_talking_airtime_contract.rb,
sig/arafa.rbs

Overview

A single, uniform interface to Kenyan SMS/USSD/Airtime gateways.

Defined Under Namespace

Modules: Airtime, Configuration, Contracts, Data, PhoneNumber, Providers, Schemas, Types, Ussd, Whatsapp Classes: AfricasTalking, AuthenticationError, Error, InvalidRequestError, Message, NetworkError, ProviderServerError, RateLimitError, SendResult, ValidationError, Wasiliana

Constant Summary collapse

VERSION =

Returns:

  • (String)
"0.1.0"

Class Method Summary collapse

Class Method Details

.configObject



33
34
35
# File 'lib/arafa.rb', line 33

def config
  Configuration.config
end

.configure(&block) ⇒ Object



29
30
31
# File 'lib/arafa.rb', line 29

def configure(&block)
  Configuration.configure(&block)
end

.loggerObject



37
38
39
# File 'lib/arafa.rb', line 37

def logger
  config.logger
end

.register(name, klass) ⇒ Object

Registers a provider class under a name so it can be dispatched to at runtime, e.g. Arafa.register(:wasiliana, Arafa::Wasiliana).



43
44
45
# File 'lib/arafa.rb', line 43

def register(name, klass)
  registry[name.to_sym] = klass
end

.send(name, **kwargs) ⇒ Object

Dispatches to a registered provider by name, e.g. Arafa.send(:wasiliana, text: "Hello", to: "0712345678").



49
50
51
52
# File 'lib/arafa.rb', line 49

def send(name, **kwargs)
  provider = registry.fetch(name.to_sym) { raise ArgumentError, "unknown provider: #{name.inspect}" }
  provider.send(**kwargs)
end