start a socko branch socko
authorHenry Story <henry.story@bblfish.net>
Thu, 24 May 2012 00:11:55 +0200
branchsocko
changeset 219 230c73cb8e74
parent 217 186287f5941a
start a socko branch
project/build.scala
src/main/scala/socko/SockoMain.scala
--- a/project/build.scala	Wed May 23 23:02:01 2012 +0200
+++ b/project/build.scala	Thu May 24 00:11:55 2012 +0200
@@ -41,6 +41,7 @@
 //  val akka_remote = "com.typesafe.akka" % "akka-remote" % "2.0-M3"
 //  val finagle_http = "com.twitter" %% "finagle-http" % "1.9.12"
   val subcut = "org.scala-tools.subcut" %% "subcut" % "1.0"
+  val socko = "org.mashupbots.socko" %% "socko-webserver" % "0.1.0"
 }
 
 // some usefull repositories
@@ -123,6 +124,7 @@
         scalate,
         htmlparser,
         slf4s,
+        socko,
         async_http_client,
         aalto_xml, antiXML) ,
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/scala/socko/SockoMain.scala	Thu May 24 00:11:55 2012 +0200
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 2012 Henry Story (bblfish.net)
+ * under the MIT licence defined at
+ *    http://www.opensource.org/licenses/mit-license.html
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the "Software"), to deal in the
+ * Software without restriction, including without limitation the rights to use, copy,
+ * modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
+ * and to permit persons to whom the Software is furnished to do so, subject to the
+ * following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+ * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+ * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+package socko
+
+import org.mashupbots.socko.utils.Logger
+import org.mashupbots.socko.webserver.{WebServerConfig, WebServer}
+import akka.actor.{Actor, Props, ActorSystem}
+import org.mashupbots.socko.context.HttpRequestProcessingContext
+import java.util.Date
+import org.mashupbots.socko.routes.{GET, Method, Routes}
+
+/**
+* @author bblfish
+* @created 18/05/2012
+*/
+
+
+object SockoApp extends Logger {
+  //
+  // STEP #1 - Define Actors and Start Akka
+  // See `HelloProcessor`
+  //
+  val actorSystem = ActorSystem("HelloExampleActorSystem")
+
+  //
+  // STEP #2 - Define Routes
+  //
+  val routes = Routes({
+    case GET(request) => {
+      actorSystem.actorOf(Props[HelloProcessor]) ! request
+    }
+  })
+
+  //
+  // STEP #3 - Start and Stop Socko Web Server
+  //
+  def main(args: Array[String]) {
+    val webServer = new WebServer(WebServerConfig(), routes)
+    webServer.start()
+
+    Runtime.getRuntime.addShutdownHook(new Thread {
+      override def run { webServer.stop() }
+    })
+
+    System.out.println("Open your browser and navigate to http://localhost:8888")
+  }
+}
+
+class HelloProcessor extends Actor {
+  def receive = {
+    case request: HttpRequestProcessingContext =>
+      request.writeResponse("Hello from Socko (" + new Date().toString + ")")
+      context.stop(self)
+  }
+}
+