class AfricaTalking::Client

Constants

API_BASE_URL
API_BASE_URL_SANDBOX

Public Class Methods

new(username, apiKey, sandbox_mode = false) click to toggle source
# File lib/africa_talking/client.rb, line 11
def initialize(username, apiKey, sandbox_mode = false)
  @username = username
  @apiKey = apiKey
  @sandbox_mode = sandbox_mode
end

Public Instance Methods

client_headers() click to toggle source
# File lib/africa_talking/client.rb, line 48
def client_headers
  hsh = {
      'User-Agent': "favour121/AfricaTalking-#{AfricaTalking::VERSION}",
      'Content-Type': 'application/x-www-form-urlencoded',
      'accept': 'application/json',
      'apiKey': @apiKey
  }
  hsh
end
client_payload() click to toggle source
# File lib/africa_talking/client.rb, line 44
def client_payload
  {'username': self.username}
end
send_request(sms_request) click to toggle source
# File lib/africa_talking/client.rb, line 21
def send_request(sms_request)
  if @sandbox_mode
    url = API_BASE_URL_SANDBOX + sms_request.route
  else
    url = API_BASE_URL + sms_request.route
  end
  method = sms_request.http_method
  payload = {}
  headers = client_headers.merge(sms_request.headers)

  headers = headers.merge(params: client_payload) if sms_request.http_method == :get
  payload = client_payload.merge(sms_request.payload) if method != :get

  begin
    response = RestClient::Request.execute(method: method, url: url, payload: payload, headers: headers)
  rescue RestClient::ExceptionWithResponse => err
    raise err
  end

  response_hash = JSON.parse(response.body)
  sms_request.response_class.new(response_hash)
end
username() click to toggle source
# File lib/africa_talking/client.rb, line 17
def username
  @sandbox_mode ? 'sandbox' : @username
end