[Fencommits] fenserve: twid; add 'get' and 'put' scripts wrapping curl to aid testing

Benja Fallenstein benja.fallenstein at gmail.com
Thu Mar 22 19:49:41 EET 2007


Fri Mar 16 05:00:35 EET 2007  Benja Fallenstein <benja.fallenstein at gmail.com>
  * twid; add 'get' and 'put' scripts wrapping curl to aid testing
diff -rN -u old-fenserve/FenServe.hs new-fenserve/FenServe.hs
--- old-fenserve/FenServe.hs	2007-03-22 19:49:41.000000000 +0200
+++ new-fenserve/FenServe.hs	2007-03-22 19:49:41.000000000 +0200
@@ -21,7 +21,7 @@
 
 import HAppS
 
-import Control.Monad.State (get, modify)
+import Control.Monad.State (get, put, modify)
 
 import qualified Data.ByteString as ByteString
 import Data.ByteString (ByteString)
@@ -31,13 +31,12 @@
 
 import Network.URI (uriToString)
 
-data Representation = Representation { mimeType :: String, body :: ByteString }
+data Resource = Dir (Map String Resource) | File { body :: ByteString }
          deriving (Read, Show, Typeable)
-type State = Map String Representation
 
-instance StartState State where startStateM = return $ Map.empty
-instance Serialize  State where
-    typeString _  = "FenServe.State"
+instance StartState Resource where startStateM = return $ Dir Map.empty
+instance Serialize  Resource where
+    typeString _  = "FenServe.Resource"
     decodeStringM = defaultDecodeStringM
     encodeStringM = defaultEncodeStringM
 
@@ -51,10 +50,11 @@
 
 main :: IO ()
 main = stdHTTP
-  [ h just GET $ ok $ \uri () -> do (state :: State) <- get
-                                    return $ Right $ body $ state Map.! uri
-  , h just PUT $ ok $ \uri () -> do Request { rqBody=Body body } <- getEvent
-                                    modify $ Map.insert uri $
-                                        Representation "text/html" body
-                                    return $ Right "Ok, put"
+  [ h just GET $ ok $ \uri () -> do
+        Dir dir <- get
+        return $ Right $ body $ dir Map.! uri
+  , h just PUT $ ok $ \uri () -> do 
+        Request { rqBody=Body body } <- getEvent; Dir dir <- get
+        put $ Dir $ Map.insert uri (File body) dir
+        return $ Right "Ok, put"
   ]
diff -rN -u old-fenserve/get new-fenserve/get
--- old-fenserve/get	1970-01-01 02:00:00.000000000 +0200
+++ new-fenserve/get	2007-03-22 19:49:41.000000000 +0200
@@ -0,0 +1,3 @@
+#!/bin/sh
+curl $1
+echo
diff -rN -u old-fenserve/put new-fenserve/put
--- old-fenserve/put	1970-01-01 02:00:00.000000000 +0200
+++ new-fenserve/put	2007-03-22 19:49:41.000000000 +0200
@@ -0,0 +1,2 @@
+#!/bin/sh
+curl -X PUT -d $2 $1




More information about the Fencommits mailing list