class Adyen::AdyenError
def mask_fields(request)
def mask_fields(request) return if request.nil? # sensitive fields fields_to_mask = %i[ expiryMonth expiryYear encryptedCardNumber encryptedExpiryMonth encryptedExpiryYear encryptedSecurityCode ] # convert to hash if necessary request = request.is_a?(Hash) ? request : JSON.parse(request, symbolize_names: true) # iterate through request to find fields to mask request.each do |k, v| if request[k].is_a?(Hash) # recursively traverse multi-level hashes mask_fields(request[k]) elsif k == :number request[k] = "#{v[0, 6]}******#{v[12, 16]}" # show first 6 and last 4 for cards elsif k == :cvc # show length of cvc for debugging request[k] = '*' * v.length elsif fields_to_mask.include? k # generic mask for other fields request[k] = '***' end end end