{-# LANGUAGE OverloadedStrings , QuasiQuotes , UnicodeSyntax #-} import Control.Applicative import Control.Monad.Unicode import qualified Data.ByteString.Lazy.Char8 as Lazy import Network.HTTP.Lucu main ∷ IO () main = let config = defaultConfig { cnfServerPort = "9999" } resources = mkResTree [ ([] , helloWorld ) , (["urandom"], staticFile "/dev/urandom") , (["inc" ], staticDir "/usr/include" ) ] fallbacks = [ \ path → case path of ["hello"] → return $ Just helloWorld _ → return Nothing ] in do putStrLn "Access http://localhost:9999/ with your browser." runHttpd config resources fallbacks helloWorld ∷ ResourceDef helloWorld = emptyResource { resGet = Just $ do setContentType [mimeType| text/hello |] putChunk "Hello, " putChunk "World!\n" putChunks =≪ Lazy.pack <$> getRemoteAddr' , resPost = Just $ do str1 ← getChunk 3 str2 ← getChunk 3 str3 ← getChunk 3 setContentType [mimeType| text/hello |] putChunks $ Lazy.fromChunks ["[", str1, " - ", str2, "#", str3, "]"] }