From d584ae5a0f36367286116da3f1474074017c27a5 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Wed, 7 Dec 2022 14:43:07 +0100 Subject: [PATCH] :sparkles: Improve json encode/decode api --- backend/src/app/auth/oidc.clj | 8 ++++---- backend/src/app/db.clj | 9 +++++---- backend/src/app/http/middleware.clj | 2 +- backend/src/app/loggers/loki.clj | 2 +- backend/src/app/loggers/mattermost.clj | 2 +- backend/src/app/loggers/zmq.clj | 2 +- backend/src/app/tasks/telemetry.clj | 2 +- backend/src/app/util/json.clj | 27 +++++++++++++------------- 8 files changed, 27 insertions(+), 27 deletions(-) diff --git a/backend/src/app/auth/oidc.clj b/backend/src/app/auth/oidc.clj index 6463c7075..8440b650e 100644 --- a/backend/src/app/auth/oidc.clj +++ b/backend/src/app/auth/oidc.clj @@ -64,7 +64,7 @@ nil) (= 200 (:status response)) - (let [data (json/read (:body response))] + (let [data (json/decode (:body response))] {:token-uri (get data :token_endpoint) :auth-uri (get data :authorization_endpoint) :user-uri (get data :userinfo_endpoint)}) @@ -172,7 +172,7 @@ :hint "unable to retrieve github emails" :http-status status :http-body body)) - (->> response :body json/read (filter :primary) first :email)))))) + (->> response :body json/decode (filter :primary) first :email)))))) (defmethod ig/pre-init-spec ::providers/github [_] (s/keys :req [::http/client])) @@ -278,7 +278,7 @@ (->> (http/req! cfg req) (p/map (fn [{:keys [status body] :as res}] (if (= status 200) - (let [data (json/read body)] + (let [data (json/decode body)] {:token (get data :access_token) :type (get data :token_type)}) (ex/raise :type :internal @@ -316,7 +316,7 @@ (get info attr-kw))) (process-response [response] - (p/let [info (-> response :body json/read) + (p/let [info (-> response :body json/decode) email (get-email info)] {:backend (:name provider) :email email diff --git a/backend/src/app/db.clj b/backend/src/app/db.clj index e897535da..9848a943a 100644 --- a/backend/src/app/db.clj +++ b/backend/src/app/db.clj @@ -427,7 +427,7 @@ val (.getValue o)] (if (or (= typ "json") (= typ "jsonb")) - (json/read val) + (json/decode val) val)))) (defn decode-transit-pgobject @@ -462,9 +462,10 @@ (defn json "Encode as plain json." [data] - (doto (org.postgresql.util.PGobject.) - (.setType "jsonb") - (.setValue (json/write-str data)))) + (when data + (doto (org.postgresql.util.PGobject.) + (.setType "jsonb") + (.setValue (json/encode-str data))))) ;; --- Locks diff --git a/backend/src/app/http/middleware.clj b/backend/src/app/http/middleware.clj index ce0471aff..5f687be12 100644 --- a/backend/src/app/http/middleware.clj +++ b/backend/src/app/http/middleware.clj @@ -46,7 +46,7 @@ (str/starts-with? header "application/json") (with-open [is (yrq/body request)] - (let [params (json/read is)] + (let [params (json/decode is)] (-> request (assoc :body-params params) (update :params merge params)))) diff --git a/backend/src/app/loggers/loki.clj b/backend/src/app/loggers/loki.clj index 3f95d3ad6..68f5ee74a 100644 --- a/backend/src/app/loggers/loki.clj +++ b/backend/src/app/loggers/loki.clj @@ -73,7 +73,7 @@ :timeout 3000 :method :post :headers {"content-type" "application/json"} - :body (json/write payload)} + :body (json/encode payload)} {:sync? true})) (defn- handle-event diff --git a/backend/src/app/loggers/mattermost.clj b/backend/src/app/loggers/mattermost.clj index 15c51d044..f7a1efb49 100644 --- a/backend/src/app/loggers/mattermost.clj +++ b/backend/src/app/loggers/mattermost.clj @@ -29,7 +29,7 @@ {:uri (cf/get :error-report-webhook) :method :post :headers {"content-type" "application/json"} - :body (json/write-str {:text text})} + :body (json/encode-str {:text text})} {:sync? true})] (when (not= 200 (:status resp)) diff --git a/backend/src/app/loggers/zmq.clj b/backend/src/app/loggers/zmq.clj index 19a7e9800..77b7de549 100644 --- a/backend/src/app/loggers/zmq.clj +++ b/backend/src/app/loggers/zmq.clj @@ -92,7 +92,7 @@ (.. socket (setReceiveTimeOut 5000)) (loop [] (let [msg (.recv ^ZMQ$Socket socket) - msg (ex/ignoring (json/read msg json-mapper)) + msg (ex/ignoring (json/decode msg json-mapper)) msg (if (nil? msg) :empty msg)] (when (a/>!! output msg) (recur)))) diff --git a/backend/src/app/tasks/telemetry.clj b/backend/src/app/tasks/telemetry.clj index e6323ebdb..7754f699e 100644 --- a/backend/src/app/tasks/telemetry.clj +++ b/backend/src/app/tasks/telemetry.clj @@ -81,7 +81,7 @@ {:method :post :uri (cf/get :telemetry-uri) :headers {"content-type" "application/json"} - :body (json/write-str data)} + :body (json/encode-str data)} {:sync? true})] (when (> (:status response) 206) (ex/raise :type :internal diff --git a/backend/src/app/util/json.clj b/backend/src/app/util/json.clj index 3547bfebd..abcb4154b 100644 --- a/backend/src/app/util/json.clj +++ b/backend/src/app/util/json.clj @@ -5,7 +5,6 @@ ;; Copyright (c) KALEIDOS INC (ns app.util.json - (:refer-clojure :exclude [read]) (:require [jsonista.core :as j])) @@ -13,23 +12,23 @@ [params] (j/object-mapper params)) -(defn write +(defn read! + ([from] (j/read-value from j/keyword-keys-object-mapper)) + ([from mapper] (j/read-value from mapper))) + +(defn write! + ([to v] (j/write-value to v j/keyword-keys-object-mapper)) + ([to v mapper] (j/write-value to v mapper))) + +(defn encode ([v] (j/write-value-as-bytes v j/keyword-keys-object-mapper)) ([v mapper] (j/write-value-as-bytes v mapper))) -(defn write-str - ([v] (j/write-value-as-string v j/keyword-keys-object-mapper)) - ([v mapper] (j/write-value-as-string v mapper))) - -(defn read +(defn decode ([v] (j/read-value v j/keyword-keys-object-mapper)) ([v mapper] (j/read-value v mapper))) -(defn encode - [v] - (j/write-value-as-bytes v j/keyword-keys-object-mapper)) - -(defn decode - [v] - (j/read-value v j/keyword-keys-object-mapper)) +(defn encode-str + ([v] (j/write-value-as-string v j/keyword-keys-object-mapper)) + ([v mapper] (j/write-value-as-string v mapper)))