]> gitweb.factorcode.org Git - factor.git/commitdiff
file-server: command-line http file server.
authorJohn Benediktsson <mrjbq7@gmail.com>
Mon, 20 Apr 2015 00:18:01 +0000 (17:18 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Mon, 20 Apr 2015 00:18:01 +0000 (17:18 -0700)
extra/file-server/file-server.factor [new file with mode: 0644]

diff --git a/extra/file-server/file-server.factor b/extra/file-server/file-server.factor
new file mode 100644 (file)
index 0000000..464aabd
--- /dev/null
@@ -0,0 +1,35 @@
+! Copyright (C) 2015 John Benediktsson
+! See http://factorcode.org/license.txt for BSD license
+
+USING: accessors command-line concurrency.messaging http.server
+http.server.static io io.pathnames io.servers kernel
+logging.server namespaces sequences threads ;
+
+IN: file-server
+
+: file-server-logging ( quot -- )
+    [
+        init-namespaces
+        receive
+
+        dup first "log-message" = [
+            dup last "http.server" = [
+                dup rest first3 write-message flush
+            ] when
+        ] when
+
+        "log-server" get-global send t
+    ] "Log server (file-server)" spawn-server "log-server" [
+        call
+    ] with-variable ; inline
+
+: file-server-main ( -- )
+    [
+        command-line get ?first current-directory get or
+        <static>
+            t >>allow-listings
+        main-responder set-global
+        8080 httpd wait-for-server
+    ] file-server-logging ;
+
+MAIN: file-server-main