File tree Expand file tree Collapse file tree 2 files changed +30
-11
lines changed Expand file tree Collapse file tree 2 files changed +30
-11
lines changed Original file line number Diff line number Diff line change 965965 ([req respnd raise]
966966 (client (form-params-request req) respnd raise))))
967967
968+ (defn- subscript [k i]
969+ (str (name k) \[ i \]))
970+
971+ (defn- unnest-1 [param-assoc]
972+ (mapcat (fn [[k v]]
973+ (if (sequential? v)
974+ (map-indexed (fn [i sv] [(subscript k (str i)) sv]) v)
975+ (map (fn [[i sv]] [(subscript k (name i)) sv]) (seq v))))
976+ param-assoc))
977+
978+ (defn- unnest-inner [param-assoc]
979+ (let [{nested true flat false } (group-by (comp coll? second) param-assoc)]
980+ (if (empty? nested)
981+ param-assoc
982+ (concat flat (unnest-inner (unnest-1 nested))))))
983+
984+ (defn- unnest [params]
985+ (->> (unnest-inner (seq params))
986+ (apply concat)
987+ (apply hash-map)))
988+
968989(defn- nest-params
969990 [request param-key]
970991 (if-let [params (request param-key)]
971- (assoc request param-key (prewalk
972- #(if (and (vector? %) (map? (second %)))
973- (let [[fk m] %]
974- (reduce
975- (fn [m [sk v]]
976- (assoc m (str (name fk)
977- \[ (name sk) \]) v))
978- {}
979- m))
980- %)
981- params))
992+ (assoc request param-key (unnest params))
982993 request))
983994
984995(defn- nest-params-request
Original file line number Diff line number Diff line change 12721272 {:query-params {" a" {" b" {" c" " d" }}}
12731273 :form-params {" a[b][c]" " d" }
12741274 :flatten-nested-keys [:form-params ]})
1275+ (is-applied (comp client/wrap-form-params
1276+ client/wrap-nested-params)
1277+ {:query-params {" a" [{" c" " d" } " e" ]}
1278+ :form-params {" a" [{" c" " d" } " e" ]}
1279+ :flatten-nested-keys [:form-params ]}
1280+ {:query-params {" a" [{" c" " d" } " e" ]}
1281+ :form-params {" a[0][c]" " d" " a[1]" " e" }
1282+ :flatten-nested-keys [:form-params ]})
12751283 (is-applied (comp client/wrap-form-params
12761284 client/wrap-nested-params)
12771285 {:query-params {" a" {" b" {" c" " d" }}}
You can’t perform that action at this time.
0 commit comments