Sha256: 628e35fe487c33a2b85d7f11c279131b3c2253f10b7e6dc4709f3638ed7c36c0

Contents?: true

Size: 1.88 KB

Versions: 5

Compression:

Stored size: 1.88 KB

Contents

# Processes Webhook
module K2ProcessWebhook
  def self.process(payload, secret_key, signature)
    raise ArgumentError, 'Empty/Nil Request Body Argument!' if payload.blank?
    self.check_topic(payload) if K2Authenticator.authenticate(payload, secret_key, signature)
  end

  def self.check_topic(payload)
    result_topic = payload.dig('topic')
    case result_topic
      # Buygoods Transaction Received
    when 'buygoods_transaction_received'
      buygoods_received = BuygoodsTransactionReceived.new(payload)
      return buygoods_received
      # Buygoods Transaction Reversed
    when 'buygoods_transaction_reversed'
      buygoods_reversed = BuygoodsTransactionReversed.new(payload)
      return buygoods_reversed
      # B2b Transaction
    when 'b2b_transaction_received'
      b2b_transaction = B2b.new(payload)
      return b2b_transaction
      # Merchant to Merchant
    when 'm2m_transaction_received'
      m2m_transaction_received = MerchantToMerchant.new(payload)
      return m2m_transaction_received
      # Settlement Transfer
    when 'settlement_transfer_completed'
      settlement_transfer = SettlementWebhook.new(payload)
      return settlement_transfer
      # Customer Created
    when 'customer_created'
      customer_created = CustomerCreated.new(payload)
      return customer_created
    else
      raise ArgumentError, 'No Other Specified Event!'
    end
  end

  # Returns a Hash Object
  def self.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

  # Returns an Array Object
  def self.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
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
k2-connect-ruby-2.0.0 lib/k2-connect-ruby/k2_utilities/k2_process_webhook.rb
k2-connect-ruby-1.0.0 lib/k2-connect-ruby/k2_utilities/k2_process_webhook.rb
k2-connect-ruby-0.0.3 lib/k2-connect-ruby/k2_utilities/k2_process_webhook.rb
k2-connect-ruby-0.0.2 lib/k2-connect-ruby/k2_utilities/k2_process_webhook.rb
k2-connect-ruby-0.0.1 lib/k2-connect-ruby/k2_utilities/k2_process_webhook.rb