X-Git-Url: http://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=examples%2FMultipart.hs;h=f7122f9cc58aab710337c234c813b490bc0212ad;hb=3b448555e621530c3483f03b4b5156dc606b2035;hp=9c42e7269a4984452d8914aea1644ba02891f1eb;hpb=ac2ff93f647d60d43ca3cc54eb776fe0f701ac9e;p=Lucu.git
diff --git a/examples/Multipart.hs b/examples/Multipart.hs
index 9c42e72..f7122f9 100644
--- a/examples/Multipart.hs
+++ b/examples/Multipart.hs
@@ -1,41 +1,57 @@
{-# LANGUAGE
OverloadedStrings
+ , QuasiQuotes
, UnicodeSyntax
#-}
import qualified Data.ByteString.Lazy.Char8 as Lazy
import Control.Applicative
+import qualified Data.Collections as C
import Control.Monad.Unicode
+import Data.Default
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" }
- resources = mkResTree [ ([], resMain) ]
+main = let config = def { cnfServerPort = "9999" }
+ tree â· ResourceTree
+ tree = C.fromList [ ([], nonGreedy resMain) ]
in
do putStrLn "Access http://localhost:9999/ with your browser."
- runHttpd config resources []
+ withSocketsDo â runHttpd config $ resourceMap tree
-
-resMain â· ResourceDef
-resMain
- = emptyResource {
- resGet
- = Just $ do setContentType $ mkMIMEType "text" "html"
- output ("
Multipart Form Test\n" â
- "\n")
- , resPost
- = Just $ do form â inputForm defaultLimit
- let text = fromMaybe (â
) $ fdContent <$> lookup "text" form
- file = fromMaybe (â
) $ fdContent <$> lookup "file" form
- fileName = fdFileName =⪠lookup "file" form
- setContentType $ mkMIMEType "text" "plain"
- outputChunk ("You entered \"" â text â "\".\n")
- outputChunk ("You uploaded a " â Lazy.pack (show $ Lazy.length file) â " bytes long file.\n")
- output ("The file name is " â Lazy.pack (show fileName) â ".\n")
- }
+resMain â· Resource
+resMain = C.fromList
+ [ ( GET
+ , 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 f â getForm Nothing
+ let text = fromMaybe (â
) $ fdContent <$> lookup "text" f
+ file = fromMaybe (â
) $ fdContent <$> lookup "file" f
+ fileName = fdFileName =⪠lookup "file" f
+ setContentType [mimeType| 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"
+ )
+ ]