From 6492faefd48577c0ffbbb49b3c420ad2f838da67 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Sat, 19 Mar 2016 12:51:01 +0200 Subject: [PATCH] Improve code style and impl of auth and project repo ns. --- src/uxbox/repo/auth.cljs | 35 +++++++++++------------ src/uxbox/repo/projects.cljs | 54 ++++++++++++++++++++---------------- 2 files changed, 48 insertions(+), 41 deletions(-) diff --git a/src/uxbox/repo/auth.cljs b/src/uxbox/repo/auth.cljs index 6c35a22c8b..d06920bf66 100644 --- a/src/uxbox/repo/auth.cljs +++ b/src/uxbox/repo/auth.cljs @@ -7,11 +7,8 @@ (ns uxbox.repo.auth "A main interface for access to remote resources." (:refer-clojure :exclude [do]) - (:require [httpurr.client.xhr :as http] - [httpurr.status :as http.status] - [promesa.core :as p :include-macros true] - [beicon.core :as rx] - [uxbox.repo.core :as urc] + (:require [beicon.core :as rx] + [uxbox.repo.core :refer (-do url send!)] [uxbox.state :as ust])) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -20,20 +17,24 @@ (defn- request-token [params] - (urc/req! {:url (str urc/url "/auth/token") - :method :post - :auth false - :body params})) + (let [url (str url "/auth/token")] + (send! {:url url + :method :post + :auth false + :body params}))) (defn- request-profile [] - (p/resolved {:fullname "Cirilla Fiona" - :photo "/images/favicon.png" - :username "cirilla" - :email "cirilla@uxbox.io"})) + (rx/of {:fullname "Cirilla Fiona" + :photo "/images/favicon.png" + :username "cirilla" + :email "cirilla@uxbox.io"})) -(defmethod urc/-do :login +(defmethod -do :login [type data] - (p/alet [authdata (p/await (request-token data)) - profile (p/await (request-profile))] - (merge profile authdata))) + (->> (rx/zip (request-token data) + (request-profile)) + (rx/map (fn [[authdata profile]] + (println authdata profile) + (println authdata profile) + (merge authdata profile))))) diff --git a/src/uxbox/repo/projects.cljs b/src/uxbox/repo/projects.cljs index 284ec9e20b..ef4f9b9eaf 100644 --- a/src/uxbox/repo/projects.cljs +++ b/src/uxbox/repo/projects.cljs @@ -6,49 +6,55 @@ (ns uxbox.repo.projects "A main interface for access to remote resources." - (:refer-clojure :exclude [do]) - (:require [httpurr.client.xhr :as http] - [httpurr.status :as http.status] - [promesa.core :as p :include-macros true] - [beicon.core :as rx] - [uxbox.repo.core :as urc] + (:require [beicon.core :as rx] + [uxbox.repo.core :refer (-do url send!)] [uxbox.state :as ust])) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Login ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defmethod urc/-do :fetch/projects +(defmethod -do :fetch/projects [type data] - (urc/req! {:url (str urc/url "/projects") :method :get})) + (let [url (str url "/projects")] + (send! {:url url :method :get}))) -(defmethod urc/-do :fetch/pages +(defmethod -do :fetch/pages [type data] - (urc/req! {:url (str urc/url "/pages") :method :get})) + (send! {:url (str url "/pages") :method :get})) -(defmethod urc/-do :create/project +(defmethod -do :fetch/pages-by-project + [type {:keys [project] :as params}] + (let [url (str url "/projects/" project "/pages")] + (send! {:method :get :url url}))) + +(defmethod -do :create/project [_ data] - (let [params {:url (str urc/url "/projects") + (let [params {:url (str url "/projects") :method :post :body data}] - (urc/req! params))) + (send! params))) -(defmethod urc/-do :delete/project - [_ {:keys [id]}] - (let [params {:url (str urc/url "/projects/" id) - :method :delete}] - (urc/req! params))) +(defmethod -do :delete/project + [_ id] + (let [url (str url "/projects/" id)] + (send! {:url url :method :delete}))) -(defmethod urc/-do :create/page +(defmethod -do :delete/page + [_ id] + (let [url (str url "/pages/" id)] + (send! {:url url :method :delete}))) + +(defmethod -do :create/page [type {:keys [id] :as data}] - (let [params {:url (str urc/url "/pages") + (let [params {:url (str url "/pages") :method :post :body data}] - (urc/req! params))) + (send! params))) -(defmethod urc/-do :update/page +(defmethod -do :update/page [type {:keys [id] :as data}] - (let [params {:url (str urc/url "/pages/" id) + (let [params {:url (str url "/pages/" id) :method :put :body data}] - (urc/req! params))) + (send! params)))