class PayU::Validator

Public Class Methods

validate_hash_params(**kwargs) click to toggle source
# File lib/payu/validator.rb, line 4
def validate_hash_params(**kwargs)
  kwargs.each do |k, v|
    if not v&.is_a? String
      raise PayU::PayuError.new "#{k} should be of type String"
    end
    
    if kwargs[:txn_id].length > 25
      raise PayU::PayuError.new "txn_id length should be less than equal to 25"
    end
    
    if kwargs[:product_info].length > 100
      raise PayU::PayuError.new "product_info length should be less than equal to 100"
    end
    
    if kwargs[:first_name].length > 60
      raise PayU::PayuError.new "first_name length should be less than equal to 60"
    end
    
    if kwargs[:email].length > 50
      raise PayU::PayuError.new "email length should be less than equal to 50"
    end
    
    if !PayU::EMAIL_REGEX.match(kwargs[:email])
      raise PayU::PayuError.new "Invalid Email"
    end

    if !PayU::AMOUNT_REGEX.match(kwargs[:amount])
      raise PayU::PayuError.new "amount should contain digits with upto 2 decimal places"
    end
    
    [kwargs[:udf1], kwargs[:udf2], kwargs[:udf3], kwargs[:udf4], kwargs[:udf5]].each do |udf|
      if udf.length > 255
        raise PayuError.new "udf length should be less than equal to 255"
      end
    end
  end
end