]> gitweb @ CieloNegro.org - Lucu.git/blobdiff - examples/Multipart.hs
examples
[Lucu.git] / examples / Multipart.hs
index 8ddc6189be39a8ad942d372671819fd6f066e53f..49945ec666268401256147eee98b201cd07a9876 100644 (file)
@@ -4,38 +4,40 @@
   #-}
 import qualified Data.ByteString.Lazy.Char8 as Lazy
 import Control.Applicative
+import qualified Data.Collections as C
 import Control.Monad.Unicode
 import Data.Maybe
 import Data.Monoid.Unicode
 import Network.HTTP.Lucu
 
 main ∷ IO ()
-main = let config    = defaultConfig { cnfServerPort = "9999" }
-           resources = mkResTree [ ([], resMain) ]
+main = let config = defaultConfig { cnfServerPort = "9999" }
+           tree   ∷ ResourceTree
+           tree   = C.fromList [ ([], nonGreedy resMain) ]
        in
          do putStrLn "Access http://localhost:9999/ with your browser."
-            runHttpd config resources []
+            runHttpd config $ resourceMap tree
 
-
-resMain ∷ ResourceDef
-resMain 
-    = emptyResource {
-        resGet
-          = Just $ do setContentType $ parseMIMEType "text/html"
-                      putChunks $ "<title>Multipart Form Test</title>\n"
-                                ⊕ "<form action=\"/\" method=\"post\" enctype=\"multipart/form-data\">\n"
-                                ⊕ "  Upload some file:\n"
-                                ⊕ "  <input type=\"text\" name=\"text\">\n"
-                                ⊕ "  <input type=\"file\" name=\"file\">\n"
-                                ⊕ "  <input type=\"submit\" value=\"Submit\">\n"
-                                ⊕ "</form>\n"
-      , resPost
-          = Just $ do form ← getForm Nothing
-                      let text     = fromMaybe (∅) $ fdContent <$> lookup "text" form
-                          file     = fromMaybe (∅) $ fdContent <$> lookup "file" form
-                          fileName = fdFileName =≪ lookup "file" form
-                      setContentType $ parseMIMEType "text/plain"
-                      putChunks $ "You entered \"" ⊕ text ⊕ "\".\n"
-                      putChunks $ "You uploaded a " ⊕ Lazy.pack (show $ Lazy.length file) ⊕ " bytes long file.\n"
-                      putChunks $ "The file name is " ⊕ Lazy.pack (show fileName) ⊕ ".\n"
-      }
+resMain ∷ Resource
+resMain = C.fromList
+          [ ( GET
+            , do setContentType $ parseMIMEType "text/html"
+                 putChunks $ "<title>Multipart Form Test</title>\n"
+                           ⊕ "<form action=\"/\" method=\"post\" enctype=\"multipart/form-data\">\n"
+                           ⊕ "  Upload some file:\n"
+                           ⊕ "  <input type=\"text\" name=\"text\">\n"
+                           ⊕ "  <input type=\"file\" name=\"file\">\n"
+                           ⊕ "  <input type=\"submit\" value=\"Submit\">\n"
+                           ⊕ "</form>\n"
+            )
+          , ( POST
+            , do form ← getForm Nothing
+                 let text     = fromMaybe (∅) $ fdContent <$> lookup "text" form
+                     file     = fromMaybe (∅) $ fdContent <$> lookup "file" form
+                     fileName = fdFileName =≪ lookup "file" form
+                 setContentType $ parseMIMEType "text/plain"
+                 putChunks $ "You entered \"" ⊕ text ⊕ "\".\n"
+                 putChunks $ "You uploaded a " ⊕ Lazy.pack (show $ Lazy.length file) ⊕ " bytes long file.\n"
+                 putChunks $ "The file name is " ⊕ Lazy.pack (show fileName) ⊕ ".\n"
+            )
+          ]