added proper configuration using aero

This commit is contained in:
didier amyot committed 2018-06-25 10:35:45 -04:00
1 parent c823775c0c
commit d2c554dcc8
8 files changed
+43 -14

No files matched your search

+1
View File
@@ -6,6 +6,7 @@
:dependencies [[org.clojure/clojure "1.9.0"] :dependencies [[org.clojure/clojure "1.9.0"]
[org.clojure/core.async "0.4.474"] [org.clojure/core.async "0.4.474"]
;; web ;; web
[aero "1.1.3"]
[http-kit "2.3.0"] [http-kit "2.3.0"]
[compojure "1.6.1"] [compojure "1.6.1"]
[javax.servlet/javax.servlet-api "3.1.0"] [javax.servlet/javax.servlet-api "3.1.0"]
+12
View File
@@ -0,0 +1,12 @@
{
:webserver ;; possible config from http-kit's run-server
{:port #long #or [#env PORT 8080]
:ip "0.0.0.0"
:max-body 524288 ;; 512kb, small but enough
:max-ws 524288}
:securities ;; list of tradable securities
[{:sec-id :foo}
{:sec-id :bar}
{:sec-id :toto}
{:sec-id :tata}]}
+1
View File
@@ -0,0 +1 @@
(ns book.cli.core)
@@ -1,4 +1,4 @@
(ns book.cli (ns book.cli.exchange
(:require [book.match :refer [sell?]] (:require [book.match :refer [sell?]]
[book.util :refer :all] [book.util :refer :all]
[book.exchange :refer [empty-book create-exchange-for-security]] [book.exchange :refer [empty-book create-exchange-for-security]]
+11 -6
View File
@@ -1,10 +1,15 @@
(ns book.core (ns book.core
(:require [book.cli] (:require [book.cli.core]
[book.web]) [book.rest.core]
[aero.core :refer (read-config)])
(:gen-class)) (:gen-class))
(def apps {:webserver book.rest.core/-main})
(defn -main [& argv] (defn -main [& argv]
(case (first argv) (let [config (-> "config.edn" clojure.java.io/resource read-config)
"web" (apply book.web/-main (rest argv)) target (-> argv first keyword)
"cli" (apply book.cli/-main (rest argv)) target-fn (get apps target)]
(println "First argument must be web or cli"))) (if target-fn
(apply target-fn [config])
(println "target" target "not found"))))
+11
View File
@@ -0,0 +1,11 @@
(ns book.rest.core
(:require [org.httpkit.server :refer [run-server]]
[compojure.handler :refer [api]]
[book.rest.exchange :refer [create-exchanges-api-for
create-routes]]))
(defn -main [config]
(let [webserver-config (:webserver config)
exchange-apis (create-exchanges-api-for (:securities config))
api-routes (create-routes exchange-apis)]
(run-server (api api-routes) webserver-config)))
@@ -1,4 +1,4 @@
(ns book.web (ns book.rest.exchange
(:require [book.exchange :refer [empty-book]] (:require [book.exchange :refer [empty-book]]
[org.httpkit.server :refer [run-server with-channel send! close on-close]] [org.httpkit.server :refer [run-server with-channel send! close on-close]]
[compojure.route :refer [not-found]] [compojure.route :refer [not-found]]
@@ -39,6 +39,10 @@
:trades-publisher trades-publisher :trades-publisher trades-publisher
:new-book-order-publisher new-book-order-publisher})) :new-book-order-publisher new-book-order-publisher}))
(defn create-exchanges-api-for [security-definitions]
(let [f (fn [sec] [(:sec-id sec) (create-exchange-api-for (:sec-id sec))])]
(into {} (map f security-definitions))))
(defn get-new-order-channel [exchange-apis sec-id] (defn get-new-order-channel [exchange-apis sec-id]
(let [exchange (get exchange-apis sec-id) (let [exchange (get exchange-apis sec-id)
@@ -135,9 +139,3 @@
(GET "/securities/:sec-id/trades" [] (listen-to-trades exchange-apis)) (GET "/securities/:sec-id/trades" [] (listen-to-trades exchange-apis))
(GET "/securities/:sec-id/orders" [] (listen-to-orders exchange-apis))) (GET "/securities/:sec-id/orders" [] (listen-to-orders exchange-apis)))
(not-found "not found"))) (not-found "not found")))
(defn -main [& args]
(let [exchange-apis {:foo (create-exchange-api-for :foo) :bar (create-exchange-api-for :bar)}
api-routes (create-routes exchange-apis)]
(run-server (api api-routes) {:port 8080})))
+1
View File
@@ -0,0 +1 @@
(ns book.rest.marketdata)