78 lines
4.0 KiB
Clojure
78 lines
4.0 KiB
Clojure
(ns auto-ap.routes.yodlee2
|
|
(:require
|
|
[auto-ap.yodlee.core2 :as yodlee]
|
|
[auto-ap.graphql.utils :refer [assert-admin]]
|
|
[auto-ap.routes.utils :refer [wrap-secure]]
|
|
[compojure.core :refer [GET POST context defroutes wrap-routes]]
|
|
[config.core :refer [env]]
|
|
[clojure.tools.logging :as log]
|
|
[auto-ap.datomic.clients :as d-clients]))
|
|
|
|
(defroutes routes
|
|
(wrap-routes
|
|
(context "/yodlee2" []
|
|
(GET "/fastlink" {:keys [query-params identity] :as request}
|
|
(assert-admin identity)
|
|
(let [token (yodlee/get-access-token (get query-params "client"))]
|
|
{:status 200
|
|
:headers {"Content-Type" "application/edn"}
|
|
:body (pr-str {:token token
|
|
:url (:yodlee2-fastlink env)}) }))
|
|
(POST "/provider-accounts/refresh/" {:keys [query-params identity edn-params]
|
|
{:keys [id]} :route-params
|
|
:as request}
|
|
(assert-admin identity)
|
|
(log/info "refreshing " edn-params)
|
|
(try
|
|
(yodlee/refresh-provider-account (-> (:client-id edn-params)
|
|
Long/parseLong
|
|
d-clients/get-by-id
|
|
:client/code)
|
|
(:provider-account-id edn-params))
|
|
{:status 200
|
|
:headers {"Content-Type" "application/edn"}
|
|
:body "{}" }
|
|
(catch Exception e
|
|
(log/error e)
|
|
{:status 400
|
|
:headers {"Content-Type" "application/edn"}
|
|
:body (pr-str {:message (.getMessage e)
|
|
:error (.toString e)})})))
|
|
(POST "/provider-accounts/delete/" {:keys [edn-params identity] {:keys [id]} :route-params :as request}
|
|
(assert-admin identity)
|
|
(try
|
|
(yodlee/delete-provider-account (-> (:client-id edn-params)
|
|
Long/parseLong
|
|
d-clients/get-by-id
|
|
:client/code)
|
|
(:provider-account-id edn-params))
|
|
{:status 200
|
|
:headers {"Content-Type" "application/edn"}
|
|
:body (pr-str {}) }
|
|
(catch Exception e
|
|
(log/error e)
|
|
{:status 400
|
|
:headers {"Content-Type" "application/edn"}
|
|
:body (pr-str {:message (.getMessage e)
|
|
:error (.toString e)})})))
|
|
(POST "/reauthenticate/:id" {:keys [identity] {:keys [id]} :route-params
|
|
data :edn-params}
|
|
(assert-admin identity)
|
|
(try
|
|
{:status 200
|
|
:headers {"Content-Type" "application/edn"}
|
|
:body (pr-str (yodlee/reauthenticate-and-recache
|
|
(-> (:client-id data)
|
|
Long/parseLong
|
|
d-clients/get-by-id
|
|
:client/code)
|
|
(Long/parseLong id)
|
|
(dissoc data :client-id )))}
|
|
(catch Exception e
|
|
(log/error e)
|
|
{:status 500
|
|
:headers {"Content-Type" "application/edn"}
|
|
:body (pr-str {:message (.getMessage e)
|
|
:error (.toString e)})}))))
|
|
wrap-secure))
|