X-Git-Url: http://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=examples%2FMultipart.hs;h=ab857a8be0b13bf85f5beed89028011ca9a97cc0;hb=c060bff37e29f06e105c0ec2b1f844f55b48906c;hp=e827ae67ab8712f2ebbb9da13cadd1b9409ee2e2;hpb=251831f3e465eb77666193efcb9b4c02531faa6c;p=Lucu.git diff --git a/examples/Multipart.hs b/examples/Multipart.hs index e827ae6..ab857a8 100644 --- a/examples/Multipart.hs +++ b/examples/Multipart.hs @@ -1,5 +1,6 @@ {-# LANGUAGE OverloadedStrings + , QuasiQuotes , UnicodeSyntax #-} import qualified Data.ByteString.Lazy.Char8 as Lazy @@ -10,6 +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" } @@ -17,25 +24,30 @@ main = let config = defaultConfig { cnfServerPort = "9999" } tree = C.fromList [ ([], nonGreedy resMain) ] in do putStrLn "Access http://localhost:9999/ with your browser." - withSocketsDo $ runHttpd config $ resourceMap tree + withSocketsDo ∘ runHttpd config $ resourceMap tree resMain ∷ Resource resMain = C.fromList [ ( GET - , do setContentType $ parseMIMEType "text/html" - putChunks $ "Multipart Form Test\n" - ⊕ "
\n" - ⊕ " Upload some file:\n" - ⊕ " \n" - ⊕ " \n" - ⊕ " \n" - ⊕ "
\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"