diff --git a/src/clj/auto_ap/graphql/invoices.clj b/src/clj/auto_ap/graphql/invoices.clj index 014d090d..922811d3 100644 --- a/src/clj/auto_ap/graphql/invoices.clj +++ b/src/clj/auto_ap/graphql/invoices.clj @@ -128,7 +128,10 @@ (when (nil? (:account_id expense-account)) - (throw (ex-info "Expense account is missing account" {:validation-error "Expense account is missing account"}))))) + (throw (ex-info "Expense account is missing account" {:validation-error "Expense account is missing account"}))) + + (when (nil? (:amount expense-account)) + (throw (ex-info "Expense account does not have an amount specified." {:validation-error "Expense account does not have an amount specified."}))))) (defn assert-invoice-amounts-add-up [{:keys [expense_accounts total]}] diff --git a/src/clj/auto_ap/square/core.clj b/src/clj/auto_ap/square/core.clj index 2fd14703..4391f6bd 100644 --- a/src/clj/auto_ap/square/core.clj +++ b/src/clj/auto_ap/square/core.clj @@ -66,7 +66,7 @@ :else (do - (log/error "couldn't look up" i) + (log/warn "couldn't look up" i) "Uncategorized")))) (defn categories [] diff --git a/src/clj/auto_ap/yodlee/core.clj b/src/clj/auto_ap/yodlee/core.clj index e2d7afa7..93aab1d8 100644 --- a/src/clj/auto_ap/yodlee/core.clj +++ b/src/clj/auto_ap/yodlee/core.clj @@ -25,6 +25,16 @@ (log/error "yodlee Error." ex) false)})) +(defn retry-thrice + ([x] (retry-thrice x 0)) + ([x i] + (try + (x) + (catch Exception e + (if (>= i 3) + (throw e) + (retry-thrice x (inc i))))))) + (def base-headers {"Api-Version" "1.1" "Cobrand-Name" (:yodlee-cobrand-name env) "Content-Type" "application/json"}) @@ -75,12 +85,14 @@ (try (let [cob-session (login-cobrand) user-session (login-user cob-session)] - (-> (str (:yodlee-base-url env) "/accounts?providerAccountId=" provider-account-id) - (client/get (merge {:headers (merge base-headers {"Authorization" (auth-header cob-session user-session)}) - :as :json} - other-config)) - :body - :account)) + (retry-thrice + (fn [] + (-> (str (:yodlee-base-url env) "/accounts?providerAccountId=" provider-account-id) + (client/get (merge {:headers (merge base-headers {"Authorization" (auth-header cob-session user-session)}) + :as :json} + other-config)) + :body + :account)))) (catch Exception e (log/error (str "Couldn't get accounts for provider account '" provider-account-id "'") e)