import qualified Data.ByteString.Lazy.Char8 as L8
import Data.List
import Data.Maybe
import Network.HTTP.Lucu
main :: IO ()
main = let config = defaultConfig { cnfServerPort = "9999" }
resources = mkResTree [ ([], resMain) ]
in
do putStrLn "Access http://localhost:9999/ with your browser."
runHttpd config resources []
resMain :: ResourceDef
resMain
= ResourceDef {
resUsesNativeThread = False
, resIsGreedy = False
, resGet
= Just $ do setContentType $ read "text/html"
output ("
Multipart Form Test" ++
"")
, resHead = Nothing
, resPost
= Just $ do form <- inputForm defaultLimit
let text = fromMaybe L8.empty $ fmap fdContent $ find ((== "text") . fdName) form
file = fromMaybe L8.empty $ fmap fdContent $ find ((== "file") . fdName) form
fileName = fdFileName =<< find ((== "file") . fdName) form
setContentType $ read "text/plain"
outputChunk ("You entered \"" ++ L8.unpack text ++ "\".\n")
outputChunk ("You uploaded a " ++ show (L8.length file) ++ " bytes long file.\n")
output ("The file name is " ++ show fileName ++ ".\n")
, resPut = Nothing
, resDelete = Nothing
}