]> gitweb @ CieloNegro.org - Lucu.git/blobdiff - examples/Multipart.hs
Use blaze-html instead of HXT.
[Lucu.git] / examples / Multipart.hs
index 906eff59ca3a78a6f425a3df28a1171e4527e31a..ab857a8be0b13bf85f5beed89028011ca9a97cc0 100644 (file)
@@ -1,5 +1,6 @@
 {-# LANGUAGE
     OverloadedStrings
+  , QuasiQuotes
   , UnicodeSyntax
   #-}
 import qualified Data.ByteString.Lazy.Char8 as Lazy
@@ -10,7 +11,12 @@ import Data.Maybe
 import Data.Monoid.Unicode
 import Network
 import Network.HTTP.Lucu
+import Prelude hiding (head)
 import Prelude.Unicode
+import Text.Blaze hiding (text)
+import Text.Blaze.Html5 hiding (text)
+import Text.Blaze.Html5.Attributes hiding (form, title)
+import Text.Blaze.Renderer.Utf8
 
 main ∷ IO ()
 main = let config = defaultConfig { cnfServerPort = "9999" }
@@ -23,20 +29,25 @@ main = let config = defaultConfig { cnfServerPort = "9999" }
 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"
+            , do setContentType [mimeType| text/html; charset="UTF-8" |]
+                 putBuilder
+                     $ renderHtmlBuilder
+                     $ docTypeHtml ! lang "en"
+                     $ do head $ do meta ! charset "UTF-8"
+                                    title "Multipart Form Test"
+                          body $ form ! action  "/"
+                                      ! method  "post"
+                                      ! enctype "multipart/form-data"
+                               $ do toHtml ("Upload some file:" ∷ String)
+                                    input ! type_ "text"   ! name  "text"
+                                    input ! type_ "file"   ! name  "file"
+                                    input ! type_ "submit" ! value "Submit"
             )
           , ( POST
-            , do form ← getForm Nothing
-                 let text     = fromMaybe (∅) $ fdContent <$> lookup "text" form
-                     file     = fromMaybe (∅) $ fdContent <$> lookup "file" form
-                     fileName = fdFileName =≪ lookup "file" form
+            , do f ← getForm Nothing
+                 let text     = fromMaybe (∅) $ fdContent <$> lookup "text" f
+                     file     = fromMaybe (∅) $ fdContent <$> lookup "file" f
+                     fileName = fdFileName =≪ lookup "file" f
                  setContentType $ parseMIMEType "text/plain"
                  putChunks $ "You entered \"" ⊕ text ⊕ "\".\n"
                  putChunks $ "You uploaded a " ⊕ Lazy.pack (show $ Lazy.length file) ⊕ " bytes long file.\n"