ability to import yodlee data.
This commit is contained in:
89
src/clj/auto_ap/yodlee/core.clj
Normal file
89
src/clj/auto_ap/yodlee/core.clj
Normal file
@@ -0,0 +1,89 @@
|
||||
(ns auto-ap.yodlee.core
|
||||
(:require [clj-http.client :as client]
|
||||
[clojure.data.json :as json]
|
||||
[config.core :refer [env]]))
|
||||
|
||||
(defn auth-header
|
||||
([cob-session] (str "{cobSession=" cob-session "}"))
|
||||
([cob-session user-session] (str "{cobSession=" cob-session ",userSession=" user-session "}")))
|
||||
|
||||
(def base-headers {"Api-Version" "1.1"
|
||||
"Cobrand-Name" "restserver"
|
||||
"Content-Type" "application/json"})
|
||||
|
||||
(defn login-cobrand []
|
||||
(-> "https://developer.api.yodlee.com/ysl/cobrand/login"
|
||||
(client/post {:headers base-headers
|
||||
:body
|
||||
(json/write-str {:cobrand {:cobrandLogin (:yodlee-cobrand-login env)
|
||||
:cobrandPassword (:yodlee-cobrand-password env)
|
||||
:locale "en_US"}})
|
||||
:as :json}
|
||||
)
|
||||
:body
|
||||
:session
|
||||
:cobSession))
|
||||
|
||||
|
||||
(defn login-user [cob-session]
|
||||
(-> "https://developer.api.yodlee.com/ysl/user/login"
|
||||
(client/post {:headers (merge base-headers {"Authorization" (auth-header cob-session)})
|
||||
:body
|
||||
(json/write-str {:user {:loginName "sbMemda48aa19712a83c3ca4e935dd5e5d46b1a1"
|
||||
:password "sbMemda48aa19712a83c3ca4e935dd5e5d46b1a1#123"
|
||||
:locale "en_US"}})
|
||||
:as :json})
|
||||
:body
|
||||
:user
|
||||
:session
|
||||
:userSession))
|
||||
|
||||
(defn get-accounts []
|
||||
(let [cob-session (login-cobrand)
|
||||
user-session (login-user cob-session)]
|
||||
(-> "https://developer.api.yodlee.com/ysl/accounts"
|
||||
(client/get {:headers (merge base-headers {"Authorization" (auth-header cob-session user-session)})
|
||||
:as :json}))))
|
||||
|
||||
(defn get-provider-accounts []
|
||||
(let [cob-session (login-cobrand)
|
||||
user-session (login-user cob-session)]
|
||||
(-> "https://developer.api.yodlee.com/ysl/providerAccounts/11049210"
|
||||
(client/get {:headers (merge base-headers {"Authorization" (auth-header cob-session user-session)})
|
||||
:as :json}))))
|
||||
|
||||
(defn get-transactions []
|
||||
(let [cob-session (login-cobrand)
|
||||
user-session (login-user cob-session)
|
||||
batch-size 500
|
||||
get-transaction-batch (fn [skip]
|
||||
(-> (str "https://developer.api.yodlee.com/ysl/transactions?top=" batch-size "&skip=" skip)
|
||||
(client/get {:headers (merge base-headers {"Authorization" (auth-header cob-session user-session)})
|
||||
:as :json})
|
||||
:body
|
||||
:transaction
|
||||
))]
|
||||
|
||||
(loop [transactions []
|
||||
skip 0]
|
||||
(let [transaction-batch (get-transaction-batch skip)]
|
||||
(if (seq transaction-batch)
|
||||
(recur (concat transactions transaction-batch) (+ batch-size skip))
|
||||
transactions)))))
|
||||
|
||||
#_(defn create-user []
|
||||
(let [cob-session (login-cobrand)]
|
||||
(-> "https://developer.api.yodlee.com/ysl/user/register"
|
||||
(client/post {:headers (merge base-headers {"Authorization" (auth-header cob-session)})
|
||||
:body (json/write-str {:user {:loginName "brycesPersoonal2"
|
||||
:password "kV@mdv3TU11"
|
||||
:email "yodleepersonal2@brycecovertoperations.com"}})
|
||||
:as :json})
|
||||
:body)))
|
||||
|
||||
#_(defn get-users []
|
||||
(let [cob-session (login-cobrand)]
|
||||
(-> "https://developer.api.yodlee.com/ysl/user"
|
||||
(client/get {:headers (merge base-headers {"Authorization" (auth-header cob-session)})
|
||||
:as :json})
|
||||
:body)))
|
||||
Reference in New Issue
Block a user