Sha256: 60d695269cd22961dec2efb7cea43592733e216a4c7653c4cdce56d8a99cf385

Contents?: true

Size: 1.19 KB

Versions: 6

Compression:

Stored size: 1.19 KB

Contents

module MangoPay
  module FilterParameters

    def self.request(body)
      begin
        body = JSON.load(body)
      rescue MultiJson::LoadError => e
        return body
      end
      filter_hash(body, req_confidential_params)
      JSON.dump(body)
    end

    def self.response(body)
      return '' if body.to_s.empty?

      begin
        body = JSON.load(body)
      rescue MultiJson::LoadError => e
        return body
      end
      filter_hash(body, res_confidential_params)
      JSON.dump(body)
    end

    private

    def self.filter_hash(hash, to_filter)
      hash.each do |k,v|
        if v.is_a?(Hash)
          filter_hash(v, to_filter)
        else
          hash[k] = '[FILTERED]' if to_filter.include?(k)
        end
      end
    end

    def self.res_confidential_params
      @@res_confidential_params ||= [
        'access_token', 'AccessKey', 'IBAN', 'CardRegistrationURL',
        'PreregistrationData', 'RedirectURL', 'RegistrationData',
        'SecureModeRedirectUrl', 'OwnerName', 'OwnerAddress', 'BIC'
      ].freeze
    end

    def self.req_confidential_params
      @@req_confidential_params ||= ['File', 'IBAN', 'OwnerName', 'OwnerAddress', 'BIC'].freeze
    end

  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
mangopay-3.5.0 lib/mangopay/filter_parameters.rb
mangopay-3.4.0 lib/mangopay/filter_parameters.rb
mangopay-3.3.0 lib/mangopay/filter_parameters.rb
mangopay-3.2.0 lib/mangopay/filter_parameters.rb
mangopay-3.1.0 lib/mangopay/filter_parameters.rb
mangopay-3.0.38 lib/mangopay/filter_parameters.rb