Last active
December 3, 2017 04:58
-
-
Save visibletrap/93fbcbf01219289784425868436952a5 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns sof.async | |
(:require [ring.adapter.jetty :as jetty] | |
[clj-http.client :as client] | |
[ring.middleware.json :refer [wrap-json-response]] | |
[ring.util.response :refer [response]])) | |
(defn handler [request respond raise] | |
(client/get "http://example.com" | |
{:async? true} | |
(fn [response] (respond {:body "something"})) | |
(fn [exception] (raise {:body "error"})))) | |
(def app (wrap-json-response handler)) | |
(defonce server (atom nil)) | |
(comment | |
(do (when @server (.stop @server)) | |
(reset! server (jetty/run-jetty app {:port 4000 :async? true :join? false})))) | |
; dependencies | |
;[[org.clojure/clojure "1.9.0-RC2"] | |
; [ring/ring-core "1.6.3"] | |
; [ring/ring-jetty-adapter "1.6.3"] | |
; [clj-http "3.7.0"] | |
; [ring/ring-json "0.5.0-beta1"]] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns sof.concurrent | |
(:require [ring.adapter.jetty :as jetty] | |
[clj-http.client :as client] | |
[ring.middleware.json :refer [wrap-json-response]] | |
[ring.util.response :refer [response]])) | |
(defn handler [request] | |
(let [result1 (promise) | |
result2 (promise)] | |
(client/get "http://example.com/" | |
{:async? true} | |
(fn [response] (deliver result1 {:success true :body "something"})) | |
(fn [exception] (deliver result1 {:success false :body "error"}))) | |
(client/get "http://example.com/" | |
{:async? true} | |
(fn [response] (deliver result2 {:success true :body "something"})) | |
(fn [exception] (deliver result2 {:success false :body "error"}))) | |
(cond | |
(and (:success @result1) | |
(:success @result2)) | |
(response {:result1 (:body @result1) | |
:result2 (:body @result2)}) | |
(not (:success @result1)) | |
(throw (ex-info "fail1" (:body @result1))) | |
(not (:success @result2)) | |
(throw (ex-info "fail2" (:body @result2)))))) | |
(def app (wrap-json-response handler)) | |
(defonce server (atom nil)) | |
(comment | |
(do (when @server (.stop @server)) | |
(reset! server (jetty/run-jetty app {:port 5000 :join? false})))) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns sof.core | |
(:require [ring.adapter.jetty :as jetty] | |
[clj-http.client :as client] | |
[ring.middleware.json :refer [wrap-json-response]] | |
[ring.util.response :refer [response]])) | |
(defn handler [request] | |
(response {:result (client/get "http://example.com")})) | |
(def app (wrap-json-response handler)) | |
(comment | |
(handler {})) | |
(defonce server (atom nil)) | |
(comment | |
(do (when @server (.stop @server)) | |
(reset! server (jetty/run-jetty app {:port 3000 :join? false})))) | |
; dependencies | |
;[[org.clojure/clojure "1.9.0-RC2"] | |
; [ring/ring-core "1.6.3"] | |
; [ring/ring-jetty-adapter "1.6.3"] | |
; [clj-http "3.7.0"] | |
; [ring/ring-json "0.5.0-beta1"]] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment