X-Git-Url: http://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=Network%2FHTTP%2FLucu.hs;h=efae41a90e499156cc2e62d8ad42b4a6db63f773;hb=0aa4f6d;hp=6f6e4d92f546f4e8b8e14d5280cdd174a80d9011;hpb=175e14b3b144537644e65ca76f1fca5c56fd44e9;p=Lucu.git diff --git a/Network/HTTP/Lucu.hs b/Network/HTTP/Lucu.hs index 6f6e4d9..efae41a 100644 --- a/Network/HTTP/Lucu.hs +++ b/Network/HTTP/Lucu.hs @@ -1,48 +1,87 @@ +-- | 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 is carefully designed to gain a good +-- performance. +-- +-- [/Affinity for RESTafarians/] Lucu is specifically designed to be +-- suitable for RESTful applications. +-- +-- [/SSL connections/] Lucu can handle HTTP connections over SSL +-- layer. +-- +-- Lucu is not a replacement for Apache or lighttpd. It is intended to +-- be used to build an efficient web-based RESTful application. 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 write logs of any requests from any +-- clients. +-- +-- [/Client Filtering/] Lucu always accepts any clients. No IP +-- filter is implemented. +-- +-- [/Bandwidth Limitting/] Lucu doesn't limit bandwidth it consumes. +-- +-- [/Protection Against Wicked Clients/] Lucu is somewhat fragile +-- against wicked clients. No attacker should be able to cause a +-- buffer-overflow but can possibly DoS it. +-- module Network.HTTP.Lucu - ( -- Abortion - abort - , abortA + ( -- * Entry Point + runHttpd - -- Config + -- * 'Config'uration , module Network.HTTP.Lucu.Config - -- ETag + -- * Resource Tree + , ResTree + , mkResTree + + -- * 'Resource' Monad + , module Network.HTTP.Lucu.Resource + + -- ** Things to be used in the Resource monad + -- *** Status Code + , StatusCode(..) + + -- *** Abortion + , abort + , abortPurely + , abortA + + -- *** ETag , ETag(..) , strongETag , weakETag + , parseETag - -- Httpd - , runHttpd - - -- MIMEType + -- *** MIME Type , MIMEType(..) - , () - , (<:>) - , (<=>) - - -- Resource (driftTo だけは要らない) - , module Network.HTTP.Lucu.Resource + , mkMIMEType + , parseMIMEType - -- Resource.Tree - , ResourceDef(..) - , ResTree - , mkResTree - - -- Response - , StatusCode(..) + -- *** Authentication + , AuthChallenge(..) + , AuthCredential(..) - -- StaticFile + -- * Utilities + -- ** Static file handling , module Network.HTTP.Lucu.StaticFile ) where - import Network.HTTP.Lucu.Abortion +import Network.HTTP.Lucu.Authentication import Network.HTTP.Lucu.Config import Network.HTTP.Lucu.ETag import Network.HTTP.Lucu.Httpd import Network.HTTP.Lucu.MIMEType -import Network.HTTP.Lucu.Request -import Network.HTTP.Lucu.Resource hiding (driftTo) +import Network.HTTP.Lucu.Resource import Network.HTTP.Lucu.Resource.Tree import Network.HTTP.Lucu.Response import Network.HTTP.Lucu.StaticFile