From 5bf3542325d9288c1a8e4fac72fda1fabd2b7187 Mon Sep 17 00:00:00 2001
From: Alexander Olofsson <alexander.olofsson@liu.se>
Date: Tue, 15 Sep 2020 08:47:46 +0200
Subject: [PATCH] Improve body cleaner for debug output

---
 lib/passwordstate/client.rb | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/lib/passwordstate/client.rb b/lib/passwordstate/client.rb
index b8a5da6..9444ecf 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
-- 
GitLab