Makes logging unified

This commit is contained in:
2023-10-30 12:35:18 -07:00
parent f0a7c378f7
commit 930b900849
44 changed files with 485 additions and 555 deletions

View File

@@ -1,8 +1,7 @@
(ns auto-ap.yodlee.core2
(:require [clj-http.client :as client]
[auto-ap.utils :refer [by]]
[unilog.context :as lc]
[clojure.tools.logging :as log]
[auto-ap.logging :as alog]
[clojure.data.json :as json]
[clojure.core.async :as async]
[config.core :refer [env]]
@@ -11,11 +10,11 @@
#_{:clj-kondo/ignore [:unused-namespace]}
[yang.scheduler :as scheduler]
[clj-time.coerce :as coerce]
[com.brunobonacci.mulog :as mu]
[datomic.api :as dc]
[auto-ap.datomic :refer [conn]]
[auto-ap.datomic.clients :as d-clients]
[clojure.string :as str]
[auto-ap.logging :as alog]))
[clojure.string :as str]))
;; switch all of this to use tokens instead of passing around client codes, particularly because the codes
;; need to be tweaked for repeats
(defn client-code->login [client-code]
@@ -45,10 +44,10 @@
:socket-timeout 60000
:connection-timeout 60000
:retry-handler (fn [ex _ _]
(log/error "yodlee Error." ex)
(alog/error ::error :error ex)
false)}
{:retry-handler (fn [ex _ _]
(log/error "yodlee Error." ex)
(alog/error ::error :error ex)
false)
:socket-timeout 60000
:connection-timeout 60000}))
@@ -74,7 +73,7 @@
(defn login-user [client-code]
(retry-thrice
(fn []
(log/info "logging in as " client-code)
(alog/info ::logging-in :client client-code)
(-> (str (:yodlee2-base-url env) "/auth/token")
(client/post (merge {:headers (assoc base-headers
"loginName" (if (:yodlee2-test-user env)
@@ -111,14 +110,14 @@
:body
:account))
(catch Exception e
(log/error (str "Couldn't get accounts for provider account '" provider-account-id "'")
e)
(alog/error ::error
:error e)
[])))
(defn get-provider-accounts [client-code ]
(retry-thrice
(fn []
(log/info "logging in user " client-code)
(alog/info ::logging-in :client client-code)
(let [cob-session (login-user (client-code->login client-code))]
(-> (str (:yodlee2-base-url env) "/providerAccounts")
(-> (client/get (merge {:headers (merge base-headers {"Authorization" (auth-header cob-session )})
@@ -258,16 +257,15 @@
(async/pipeline-blocking concurrent
output-chan
(map (fn [provider-account]
(lc/with-context {:provider-account-id (:id provider-account)}
(mu/with-context {:provider-account-id (:id provider-account)}
(get-provider-account-detail client-code (:id provider-account)))))
(async/to-chan! provider-accounts))
(async/<!! (async/into [] output-chan))))
(defn get-accounts-for-providers [client-code provider-account-ids]
(log/info "looking up " (count provider-account-ids) " provider accounts's accounts for client " client-code ".")
(into {}
(mapv (fn [provider-account-id]
(lc/with-context {:provider-account-id provider-account-id}
(mu/with-context {:provider-account-id provider-account-id}
[provider-account-id
(get-accounts-for-provider-account client-code provider-account-id)]))
provider-account-ids)))
@@ -323,7 +321,9 @@
provider-accounts))))
(defn refresh-provider-account [client-code id]
(log/info "refreshing yodlee provider account id" id)
(alog/info ::refreshing
:client client-code
:provider-acconut-id id)
@(dc/transact conn (upsert-accounts-tx client-code
[(get-provider-account client-code id)])))
@@ -333,16 +333,16 @@
(async/pipeline-blocking concurrent
output-chan
(mapcat (fn [client]
(log/info "Upserting Yodlee Accounts for " (:client/code client))
(lc/with-context {:client-code (:client/code client)}
(alog/info ::upserting-accounts
:client (:client/code client))
(mu/with-context {:client-code (:client/code client)}
(try
(upsert-accounts-tx (:client/code client))
(catch Exception e
(log/error "Could not update client " (:client/code client)
e))))))
(alog/error ::error :error e :client (:client/code client)))))))
(async/to-chan! (d-clients/get-all)))
(let [result (async/<!! (async/into [] output-chan))]
(log/info "Current yodlee state is " result)
(alog/info ::state :state result)
@(dc/transact conn result))))
@@ -357,7 +357,7 @@
:as :json}
other-config)))
(catch Exception e
(log/error e))) )
(alog/error ::error :error e))) )
(defn reauthenticate-and-recache [client-code pa data]
(reauthenticate client-code pa data)