diff --git a/lib/passwordstate/client.rb b/lib/passwordstate/client.rb index b8a5da696b2edd38f7feb53de72dec81e4bb8b65..9444ecf505c24f77d72d3563a9b19cc32571669f 100644 --- a/lib/passwordstate/client.rb +++ b/lib/passwordstate/client.rb @@ -152,9 +152,17 @@ module Passwordstate return if http.body.nil? + body_cleaner = lambda do |obj| + obj.each { |k, v| v.replace('[ REDACTED ]') if k.is_a?(String) && %w[password apikey].include?(k.downcase) } if obj.is_a? Hash + end + clean_body = JSON.parse(http.body) rescue nil if clean_body - clean_body = clean_body.each { |k, v| v.replace('[ REDACTED ]') if k.is_a?(String) && %w[password apikey].include?(k.downcase) }.to_json if http.body + if clean_body.is_a? Array + clean_body.each { |val| body_cleaner.call(val) } + else + body_cleaner.call(clean_body) + end else clean_body = http.body end