Browse Source

Improve init, add /json & /plaintext routes

Zane Kansil 10 years ago
parent
commit
97761da1d4

+ 3 - 0
frameworks/Crystal/moonshine/Projectfile

@@ -0,0 +1,3 @@
+deps do
+  github "dhruvrajvanshi/Moonshine", name: "moonshine"
+end

+ 35 - 5
frameworks/Crystal/moonshine/server.cr

@@ -1,8 +1,38 @@
-require "http/server"
+require "moonshine"
+include Moonshine
+include Moonshine::Shortcuts
+include Moonshine::Http
+
+# Compose Objects (like Hash) to have a to_json method
+require "json/to_json"
+
+app = Moonshine::App.new
+
+is = {
+  :JSON => "application/json; charset=UTF-8"
+  :PLAIN => "text/plain"
+}
+
+app.response_middleware do |req, res|
+    res.headers["Server"] = "Moonshine"
+    res.headers["Date"] = Time.now.to_s
+    res
+end
+
+app.define do
+
+  route "/plaintext", do |request|
+    res = ok("Hello, World!")
+    res.headers["Content-type"] = is[:PLAIN]
+    res
+  end
+
+  get "/json", do |request|
+    res = ok({ :message => "Hello, World!" }.to_json)
+    res.headers["Content-type"] = is[:JSON]
+    res
+  end
 
 
-server = HTTP::Server.new(8080) do |request|
-  HTTP::Response.ok "text/plain", "Hello world! The time is #{Time.now}"
 end
 end
 
 
-puts "Crystal-Moonshine listening port 8080"
-server.listen
+app.run(8080)

+ 6 - 1
frameworks/Crystal/moonshine/setup.sh

@@ -1,3 +1,8 @@
 export CRYSTAL_HOME=${IROOT}/crystal-0.7.1-1
 export CRYSTAL_HOME=${IROOT}/crystal-0.7.1-1
+crystal=${IROOT}/crystal
 
 
-${IROOT}/crystal server.cr
+$crystal deps install
+
+$crystal server.cr &
+
+exit 0