Sha256: bf49fa43dd74e0b0943e67415763036c1ec9701e1e92ed6180f71b13b222b2c3

Contents?: true

Size: 957 Bytes

Versions: 1

Compression:

Stored size: 957 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.each_key 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

1 entries across 1 versions & 1 rubygems

Version Path
fawry-1.2.1 lib/fawry/utils.rb