class Adyen::AdyenError

def mask_fields(request)

mask PCI data in 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