import Control.Monad.Trans import Data.Maybe import Network import Network.HTTP.Lucu.Config import Network.HTTP.Lucu.ETag import Network.HTTP.Lucu.Httpd import Network.HTTP.Lucu.MIMEType import Network.HTTP.Lucu.MIMEType.Guess import Network.HTTP.Lucu.Parser import Network.HTTP.Lucu.Parser.Http import Network.HTTP.Lucu.Resource import Network.HTTP.Lucu.Resource.Tree import Network.HTTP.Lucu.Response import Network.HTTP.Lucu.StaticFile import Network.URI import System.Posix.Signals import System.Time main :: IO () main = let config = defaultConfig { cnfServerPort = PortNumber 9999 } resources = mkResTree [ ( [] , helloWorld ) , ( ["index.html"] , staticFile "/Users/admin/Sites/index.html" ) , ( ["urandom"] , staticFile "/dev/urandom" ) , ( ["inc"] , staticDir "/usr/include" ) ] in do installHandler sigPIPE Ignore Nothing runHttpd config resources helloWorld :: ResourceDef helloWorld = ResourceDef { resUsesNativeThread = False , resIsGreedy = False , resGet = Just $ do --time <- liftIO $ getClockTime --foundEntity (strongETag "abcde") time setContentType $ "text" +/+ "hello" outputChunk "Hello, " outputChunk "World!\n" , resHead = Nothing , resPost = Just $ do str1 <- inputChunk 3 str2 <- inputChunk 3 str3 <- inputChunk 3 setContentType $ "text" +/+ "hello" output ("[" ++ str1 ++ " - " ++ str2 ++ "#" ++ str3 ++ "]") , resPut = Nothing , resDelete = Nothing }