X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=Lucu.git;a=blobdiff_plain;f=Network%2FHTTP%2FLucu.hs;h=4ab6bc65abd01f376a70f997705c9534db365e41;hp=6f6e4d92f546f4e8b8e14d5280cdd174a80d9011;hb=a827a5e1ba744d89c5b2396bb195e344ae892306;hpb=0b4db5681e3b0b27357a87316822ea3671f8c174 diff --git a/Network/HTTP/Lucu.hs b/Network/HTTP/Lucu.hs index 6f6e4d9..4ab6bc6 100644 --- a/Network/HTTP/Lucu.hs +++ b/Network/HTTP/Lucu.hs @@ -1,37 +1,73 @@ +-- | Lucu is an HTTP daemonic library. It can be embedded in any +-- Haskell program and runs in an independent thread. +-- +-- Features: +-- +-- [/Full support of HTTP\/1.1/] Lucu supports request pipelining, +-- chunked I\/O, ETag comparison and \"100 Continue\". +-- +-- [/Performance/] Lucu doesn't fork\/exec to handle requests like +-- CGI. It just spawns a new thread. Inter-process communication is +-- done with STM. +-- +-- Lucu is not a replacement for Apache. It is intended to be used to +-- create an efficient web-based application without messing around +-- FastCGI. It is also intended to be run behind a reverse-proxy so it +-- doesn't have the following (otherwise essential) facilities: +-- +-- [/Logging/] Lucu doesn't log any requests from any clients. +-- +-- [/Client Filtering/] Lucu always accept any clients. No IP filter +-- is implemented. +-- +-- [/SSL Support/] Lucu can handle HTTP only. +-- +-- [/Bandwidth Limitting/] Lucu doesn't limit bandwidth it consumes. +-- +-- [/Protection Against Wicked Clients/] Lucu is fragile against +-- wicked clients. No attacker should cause a buffer-overflow but +-- can possibly DoS it. +-- + + module Network.HTTP.Lucu - ( -- Abortion - abort - , abortA + ( -- * Entry Point + runHttpd - -- Config + -- * Configuration , module Network.HTTP.Lucu.Config - -- ETag + -- * Resource Tree + , ResourceDef(..) + , ResTree + , mkResTree + + -- * Resource Monad + , module Network.HTTP.Lucu.Resource + + -- ** Things to be used in the Resource monad + + -- *** Status Code + , StatusCode(..) + + -- *** Abortion + , abort + , abortA + + -- *** ETag , ETag(..) , strongETag , weakETag - -- Httpd - , runHttpd - - -- MIMEType + -- *** MIME Type , MIMEType(..) , () , (<:>) , (<=>) - -- Resource (driftTo だけは要らない) - , module Network.HTTP.Lucu.Resource + -- * Utility - -- Resource.Tree - , ResourceDef(..) - , ResTree - , mkResTree - - -- Response - , StatusCode(..) - - -- StaticFile + -- ** Static file handling , module Network.HTTP.Lucu.StaticFile ) where