Sha256: 2ed5bc6aacaea2a6467e47845884e96c7057258edb04f5932935b42373634dc8

Contents?: true

Size: 958 Bytes

Versions: 3

Compression:

Stored size: 958 Bytes

Contents

# frozen_string_literal: true

module Fawry
  module Utils
    # Adds keys from fawry API response as methods
    # on object instance that return the value
    # of each key
    #
    # type => type
    # referenceNumber => reference_number
    # merchantRefNumber => merchant_ref_number
    # expirationTime => expiration_time
    # statusCode => status_code
    # statusDescription => status_description
    #
    # fawry_res = FawryResponse.new(response)
    # fawry_res.status_code => 200
    # fawry_res.reference_number => 1234567
    def enrich_object(fawry_params)
      fawry_params.keys.each do |key|
        method_name = key.to_s.split(/(?=[A-Z])/).map(&:downcase).join('_') # statusCode => status_code
        instance_variable_set("@#{method_name}", fawry_params[key])
        method_body = proc { instance_variable_get("@#{method_name}") }

        self.class.public_send(:define_method, method_name, method_body)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
fawry-1.1.1 lib/fawry/utils.rb
fawry-1.0.0 lib/fawry/utils.rb
fawry-0.3.0 lib/fawry/utils.rb