diff --git a/src/uxbox/repo.cljs b/src/uxbox/repo.cljs index 2c9327203..f07e055ee 100644 --- a/src/uxbox/repo.cljs +++ b/src/uxbox/repo.cljs @@ -7,15 +7,16 @@ (ns uxbox.repo "A main interface for access to remote resources." (:refer-clojure :exclude [do]) - (:require [uxbox.repo.core :as urc] + (:require [uxbox.repo.core :refer (-do)] [uxbox.repo.auth] [uxbox.repo.projects] + [uxbox.repo.pages] [beicon.core :as rx])) (defn do "Perform a side effectfull action accesing remote resources." ([type] - (urc/-do type nil)) + (-do type nil)) ([type data] - (urc/-do type data))) + (-do type data))) diff --git a/src/uxbox/repo/core.cljs b/src/uxbox/repo/core.cljs index 9e3fe15b7..f9d62fefa 100644 --- a/src/uxbox/repo/core.cljs +++ b/src/uxbox/repo/core.cljs @@ -65,10 +65,11 @@ (->> (http/send! request) (rx/from-promise) (rx/map conditional-decode) - (rx/mapcat handle-http-status) - (rx/tap #(println "tt:" %))))) - ;; "tt: ")))) + (rx/mapcat handle-http-status)))) (defmulti -do (fn [type data] type)) +(defmethod -do :default + [type data] + (throw (ex-info (str "No implementation found for " type) {:data data}))) diff --git a/src/uxbox/repo/pages.cljs b/src/uxbox/repo/pages.cljs new file mode 100644 index 000000000..36f8c3def --- /dev/null +++ b/src/uxbox/repo/pages.cljs @@ -0,0 +1,50 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) 2016 Andrey Antukh + +(ns uxbox.repo.pages + "A main interface for access to remote resources." + (:require [beicon.core :as rx] + [uxbox.repo.core :refer (-do url send!)] + [uxbox.state :as ust])) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Login +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defmethod -do :fetch/pages + [type data] + (send! {:url (str url "/pages") :method :get})) + +(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 :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 url "/pages") + :method :post + :body data}] + (send! params))) + +(defmethod -do :update/page + [type {:keys [id] :as data}] + (let [params {:url (str url "/pages/" id) + :method :put + :body data}] + (send! params))) + +(defmethod -do :update/page-metadata + [type {:keys [id] :as data}] + (let [params {:url (str url "/pages/" id "/metadata") + :method :put + :body data}] + (send! params))) diff --git a/src/uxbox/repo/projects.cljs b/src/uxbox/repo/projects.cljs index ef4f9b9ea..1d270c4aa 100644 --- a/src/uxbox/repo/projects.cljs +++ b/src/uxbox/repo/projects.cljs @@ -19,15 +19,6 @@ (let [url (str url "/projects")] (send! {:url url :method :get}))) -(defmethod -do :fetch/pages - [type data] - (send! {:url (str url "/pages") :method :get})) - -(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 url "/projects") @@ -39,22 +30,3 @@ [_ id] (let [url (str url "/projects/" id)] (send! {:url url :method :delete}))) - -(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 url "/pages") - :method :post - :body data}] - (send! params))) - -(defmethod -do :update/page - [type {:keys [id] :as data}] - (let [params {:url (str url "/pages/" id) - :method :put - :body data}] - (send! params)))