Class: Arafa::Airtime::Wasiliana

Inherits:
Airtime::Base
  • Object
show all
Defined in:
lib/arafa/airtime/wasiliana.rb

Overview

Wasiliana airtime request adapter (§1.6). Like Wasiliana's SMS adapter, the response carries no per-recipient breakdown — just an overall status/message pair — so success/failure is decided once for the whole request rather than per phone number.

Constant Summary collapse

CONTRACT =
Contracts::AirtimeContract

Instance Method Summary collapse

Instance Method Details

#build_payloadObject



26
27
28
29
30
31
32
33
34
35
# File 'lib/arafa/airtime/wasiliana.rb', line 26

def build_payload
  payload = {
    phone_number: phone_number,
    currency_code: currency_code,
    amount: amount,
    callback: callback
  }
  payload[:airtime_uid] = airtime_uid unless airtime_uid.nil?
  payload
end

#endpointObject



15
16
17
# File 'lib/arafa/airtime/wasiliana.rb', line 15

def endpoint
  "https://api.wasiliana.com/api/v1/airtime/request"
end

#headersObject



19
20
21
22
23
24
# File 'lib/arafa/airtime/wasiliana.rb', line 19

def headers
  {
    "Content-Type" => "application/json",
    "apiKey" => Arafa.config.wasiliana.api_key
  }
end

#parse_response(response) ⇒ Object



37
38
39
40
41
42
43
44
45
# File 'lib/arafa/airtime/wasiliana.rb', line 37

def parse_response(response)
  body = response.body

  if response.status.between?(200, 299) && body.is_a?(Hash) && body["status"] == "success"
    build_success(body)
  else
    build_failure(response)
  end
end