Lucu-0.4.2: HTTP Daemonic Library

Network.HTTP.Lucu.Httpd

Description

The entry point of Lucu httpd.

Synopsis

Documentation

type FallbackHandler = [String] -> IO (Maybe ResourceDef)Source

FallbackHandler is an extra resource handler for resources which can't be statically located somewhere in the resource tree. The Lucu httpd first search for a resource in the tree, and then call fallback handlers to ask them for a resource. If all of the handlers returned Nothing, the httpd responds with 404 Not Found.

runHttpd :: Config -> ResTree -> [FallbackHandler] -> IO ()Source

This is the entry point of Lucu httpd. It listens to a socket and waits for clients. Computation of runHttpd never stops by itself so the only way to stop it is to raise an exception in the thread computing it.

Note that runHttpd automatically makes SIGPIPE be ignored by computing installHandler sigPIPE Ignore Nothing. This can hardly cause a problem but it may do.

Example:

 module Main where
 import Network.HTTP.Lucu
 
 main :: IO ()
 main = let config    = defaultConfig
            resources = mkResTree [ ([], helloWorld) ]
        in
          runHttpd config resourcees []

 helloWorld :: ResourceDef
 helloWorld = ResourceDef {
                resUsesNativeThread = False
              , resIsGreedy         = False
              , resGet
                  = Just $ do setContentType $ read "text/plain"
                              output "Hello, world!"
              , resHead   = Nothing
              , resPost   = Nothing
              , resPut    = Nothing
              , resDelete = Nothing
              }