Module: K2ConnectRuby::K2Utilities::K2ProcessWebhook

Extended by:
K2ProcessWebhook
Included in:
K2ProcessWebhook
Defined in:
lib/k2-connect-ruby/k2_utilities/k2_process_webhook.rb

Instance Method Summary collapse

Instance Method Details

#daraja_payload?(payload) ⇒ Boolean

Returns:

  • (Boolean)


48
49
50
# File 'lib/k2-connect-ruby/k2_utilities/k2_process_webhook.rb', line 48

def daraja_payload?(payload)
  payload.key?("TransactionType")
end

#process(payload, secret_key, signature) ⇒ Object

Raises:

  • (ArgumentError)


8
9
10
11
12
# File 'lib/k2-connect-ruby/k2_utilities/k2_process_webhook.rb', line 8

def process(payload, secret_key, signature)
  raise ArgumentError, "Empty/Nil Request Body Argument!" if payload.blank?

  process_webhook(payload) if K2ConnectRuby::K2Utilities::K2Authenticator.authenticate(payload, secret_key, signature)
end

#process_k2_connect_payload(payload) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/k2-connect-ruby/k2_utilities/k2_process_webhook.rb', line 22

def process_k2_connect_payload(payload)
  result_topic = payload.dig("topic")
  case result_topic
    # Buygoods Transaction Received
  when "buygoods_transaction_received"
    K2ConnectRuby::K2Services::Payloads::Webhooks::BuygoodsTransactionReceived.new(payload)
    # Buygoods Transaction Reversed
  when "buygoods_transaction_reversed"
    K2ConnectRuby::K2Services::Payloads::Webhooks::BuygoodsTransactionReversed.new(payload)
    # B2B Transaction
  when "b2b_transaction_received"
    K2ConnectRuby::K2Services::Payloads::Webhooks::B2bTransactionReceived.new(payload)
    # B2B Transaction Reversed
  when "b2b_transaction_reversed"
    K2ConnectRuby::K2Services::Payloads::Webhooks::B2bTransactionReversed.new(payload)
    # Settlement Transfer
  when "settlement_transfer_completed"
    K2ConnectRuby::K2Services::Payloads::Webhooks::TransferWebhook.new(payload)
    # Customer Created
  when "customer_created"
    K2ConnectRuby::K2Services::Payloads::Webhooks::CustomerCreated.new(payload)
  else
    raise ArgumentError, "No Other Specified Event!"
  end
end

#process_webhook(payload) ⇒ Object



14
15
16
17
18
19
20
# File 'lib/k2-connect-ruby/k2_utilities/k2_process_webhook.rb', line 14

def process_webhook(payload)
  if daraja_payload?(payload)
    K2ConnectRuby::K2Services::Payloads::DarajaWebhooks.new(payload)
  else
    process_k2_connect_payload(payload)
  end
end

#return_obj_array(instance_array = [], obj) ⇒ Object

Returns an Array Object



61
62
63
64
65
66
# File 'lib/k2-connect-ruby/k2_utilities/k2_process_webhook.rb', line 61

def return_obj_array(instance_array = [], obj)
  obj.instance_variables.each do |value|
    instance_array << obj.instance_variable_get(value)
  end
  instance_array.each(&:freeze).freeze
end

#return_obj_hash(instance_hash = HashWithIndifferentAccess.new, obj) ⇒ Object

Returns a Hash Object



53
54
55
56
57
58
# File 'lib/k2-connect-ruby/k2_utilities/k2_process_webhook.rb', line 53

def return_obj_hash(instance_hash = HashWithIndifferentAccess.new, obj)
  obj.instance_variables.each do |value|
    instance_hash[:"#{value.to_s.tr('@', '')}"] = obj.instance_variable_get(value)
  end
  instance_hash.each(&:freeze).freeze
end