From 595d5cde66c2867072811553c24b2f6cc4183361 Mon Sep 17 00:00:00 2001 From: Frederik Andersen Date: Wed, 8 Oct 2014 18:48:49 +0200 Subject: [PATCH] removed Compojure as a dependency, routing code changed --- project.clj | 2 +- src/robotwar/handler.clj | 54 ++++++++++++++++++++++++---------------- 2 files changed, 33 insertions(+), 23 deletions(-) diff --git a/project.clj b/project.clj index 50c29b8..12b7344 100644 --- a/project.clj +++ b/project.clj @@ -7,7 +7,7 @@ [org.clojure/core.match "0.2.0-rc5"] [clj-time "0.5.1"] [ring/ring-json "0.2.0"] - [compojure "1.1.5"]] + [ring/ring-core "1.3.1"]] :plugins [[lein-ring "0.8.5"]] :ring {:handler robotwar.handler/app} :profiles {:dev {:dependencies [[midje "1.5.1"] diff --git a/src/robotwar/handler.clj b/src/robotwar/handler.clj index ca7e7ab..2d9635d 100644 --- a/src/robotwar/handler.clj +++ b/src/robotwar/handler.clj @@ -1,11 +1,10 @@ (ns robotwar.handler - (:use [compojure.core] - [clojure.string :only [split]] + (:use [clojure.string :only [split]] [robotwar.constants]) - (:require [compojure.handler :as handler] - [ring.middleware.json :as middleware] - [ring.util.response :as response] - [compojure.route :as route] + (:require [ring.middleware.json :refer [wrap-json-response wrap-json-body]] + [ring.middleware.file :refer [wrap-file]] + [ring.middleware.params :refer [wrap-params]] + [ring.util.response :refer [response not-found]] [robotwar.source-programs :as source-programs] [robotwar.world :as world] [robotwar.browser :as browser])) @@ -54,21 +53,32 @@ (def games-store (atom {:next-id 0 :games {}})) -(defroutes app-routes - (GET "/program-names" [] (response/response - {:names (map name (keys source-programs/programs))})) - (GET "/init" [programs] (let [next-id (:next-id @games-store)] - (swap! games-store add-game programs) - (response/response {:id next-id - :game-info game-info}))) - (GET "/worlds/:id/:n" [id n] (response/response (take-drop-send - games-store - (Integer/parseInt id) - (Integer/parseInt n)))) - (route/files "/") - (route/not-found "Not Found")) + +(defn handler [request] + + (let [match (re-matches #"\/worlds\/(\d+)\/(\d+)" (request :uri))] + (if match + (let [[_ id n] match] + (response (take-drop-send + games-store + (Integer/parseInt id) + (Integer/parseInt n)))) + + (case (request :uri) + "/program-names" (response + {:names (map name (keys source-programs/programs))}) + + "/init" (let [programs ((request :query-params) "programs") + next-id (:next-id @games-store)] + (swap! games-store add-game programs) + (response {:id next-id + :game-info game-info})) + + (not-found "Not Found"))))) (def app - (-> (handler/site app-routes) - (middleware/wrap-json-response) - (middleware/wrap-json-body))) + (-> handler + (wrap-file "public") + (wrap-json-response) + (wrap-json-body) + (wrap-params))) \ No newline at end of file