X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=Lucu.git;a=blobdiff_plain;f=Network%2FHTTP%2FLucu.hs;h=876064ce8c14701931f0a040e6e8c511a02783b1;hp=b2c88c6a0255f4417aa0e7f6228708ab4971293a;hb=0678be8;hpb=b340a77fa7bd051dd13a41d0a5b1ad30220bc6b6 diff --git a/Network/HTTP/Lucu.hs b/Network/HTTP/Lucu.hs index b2c88c6..876064c 100644 --- a/Network/HTTP/Lucu.hs +++ b/Network/HTTP/Lucu.hs @@ -1,52 +1,91 @@ +-- | Lucu is an embedded HTTP server library. +-- +-- Features: +-- +-- [/Affinity for RESTafarians/] Lucu is specifically designed to be +-- suitable for RESTful applications. +-- +-- [/Full support of HTTP/\//1.1/] Lucu supports request pipelining, +-- chunked I\/O, ETag comparison and \"100 Continue\". +-- +-- [/SSL connections/] Lucu can handle HTTP connections over Secure +-- Socket Layer when configured with -fssl flag. +-- +-- Lucu is not a replacement for Apache or lighttpd. It is intended to +-- be used to build an efficient web-based RESTful application which +-- runs behind a reverse-proxy so it doesn't have the following +-- (otherwise essential) functionalities: +-- +-- [/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 - , ETag(..) - , strongETag - , weakETag + -- * URI-related data types + , Host + , Path - -- Httpd - , runHttpd + -- * 'Resource' dispatcher + , module Network.HTTP.Lucu.Dispatcher - -- MIMEType - , MIMEType(..) - , (+/+) - , (+:+) - , (+=+) - - -- Request + -- * 'Rsrc' Monad + , module Network.HTTP.Lucu.Resource + + -- ** Things to be used in the Resource monad + -- *** 'Method' , Method(..) - , Request(..) - -- Resource (driftTo だけは要らない) - , module Network.HTTP.Lucu.Resource + -- *** 'StatusCode' + , module Network.HTTP.Lucu.StatusCode - -- Resource.Tree - , ResourceDef(..) - , ResTree - , mkResTree + -- *** 'Abortion' + , module Network.HTTP.Lucu.Abortion - -- Response - , StatusCode(..) + -- *** ETag + , ETag(..) + , strongETag + , weakETag + + -- *** MIME Type + , MIMEType(..) + , MIMEParams + , mimeType + + -- *** 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.Dispatcher import Network.HTTP.Lucu.ETag import Network.HTTP.Lucu.Httpd -import Network.HTTP.Lucu.MIMEType +import Network.HTTP.Lucu.MIMEParams +import Network.HTTP.Lucu.MIMEType hiding (mimeType) +import Network.HTTP.Lucu.MIMEType.TH import Network.HTTP.Lucu.Request -import Network.HTTP.Lucu.Resource hiding (driftTo) -import Network.HTTP.Lucu.Resource.Tree +import Network.HTTP.Lucu.Resource import Network.HTTP.Lucu.Response import Network.HTTP.Lucu.StaticFile +import Network.HTTP.Lucu.StatusCode +import Network.HTTP.Lucu.Utils