You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by va...@apache.org on 2020/10/05 19:29:58 UTC

[couchdb] 01/01: Keep auth properties as a map in replicator's httpdb record

This is an automated email from the ASF dual-hosted git repository.

vatamane pushed a commit to branch replicator-auth-props-as-map
in repository https://gitbox.apache.org/repos/asf/couchdb.git

commit 5f9ebbea9e872e334a756fd5f3e7b68104a0efdf
Author: Nick Vatamaniuc <va...@apache.org>
AuthorDate: Mon Oct 5 15:25:12 2020 -0400

    Keep auth properties as a map in replicator's httpdb record
    
    Previously there was an attempt to keep backwards compatibility with 3.x
    replicator plugins by transforming the auth into a proplist with
    `maps:to_list/1`. However, that didn't account for nested properties, so we
    could have ended up with a top level of props with maps for some values.
    Instead of making things too complicating, and doing a nested transform to
    proplists, just keep the auth object as a map and let the plugins handle the
    compatibility issue.
---
 src/couch_replicator/include/couch_replicator_api_wrap.hrl | 2 +-
 src/couch_replicator/src/couch_replicator_api_wrap.erl     | 2 +-
 src/couch_replicator/src/couch_replicator_utils.erl        | 5 ++++-
 3 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/couch_replicator/include/couch_replicator_api_wrap.hrl b/src/couch_replicator/include/couch_replicator_api_wrap.hrl
index 0f8213c..6212ab4 100644
--- a/src/couch_replicator/include/couch_replicator_api_wrap.hrl
+++ b/src/couch_replicator/include/couch_replicator_api_wrap.hrl
@@ -14,7 +14,7 @@
 
 -record(httpdb, {
     url,
-    auth_props = [],
+    auth_props = #{},
     headers = [
         {"Accept", "application/json"},
         {"User-Agent", "CouchDB-Replicator/" ++ couch_server:get_version()}
diff --git a/src/couch_replicator/src/couch_replicator_api_wrap.erl b/src/couch_replicator/src/couch_replicator_api_wrap.erl
index da6f288..1df8ee0 100644
--- a/src/couch_replicator/src/couch_replicator_api_wrap.erl
+++ b/src/couch_replicator/src/couch_replicator_api_wrap.erl
@@ -917,7 +917,7 @@ db_from_json(#{} = DbMap) ->
     end,
     #httpdb{
         url = binary_to_list(Url),
-        auth_props = maps:to_list(Auth),
+        auth_props = Auth,
         headers = Headers,
         ibrowse_options = IBrowseOptions,
         timeout = Timeout,
diff --git a/src/couch_replicator/src/couch_replicator_utils.erl b/src/couch_replicator/src/couch_replicator_utils.erl
index cbed78e..523de5f 100644
--- a/src/couch_replicator/src/couch_replicator_utils.erl
+++ b/src/couch_replicator/src/couch_replicator_utils.erl
@@ -281,7 +281,10 @@ normalize_rep_test_() ->
 normalize_endpoint() ->
     HttpDb =  #httpdb{
         url = "http://host/db",
-        auth_props = [{"key", "val"}],
+        auth_props = #{
+            "key" => "val",
+            "nested" => #{<<"other_key">> => "other_val"}
+        },
         headers = [{"k2","v2"}, {"k1","v1"}],
         timeout = 30000,
         ibrowse_options = [{k2, v2}, {k1, v1}],