Lucu-0.3: Network/HTTP/Lucu.hs
-- | 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.
--
-- [/Affinity for RESTafarians/] Lucu is a carefully designed
-- web server for RESTful applications.
--
-- [/SSL connections/] Lucu can handle HTTP connections over SSL
-- layer.
--
-- 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 accepts any clients. No IP
-- filter is implemented.
--
-- [/Bandwidth Limitting/] Lucu doesn't limit bandwidth it consumes.
--
-- [/Protection Against Wicked Clients/] Lucu is fragile against
-- wicked clients. No attacker should be able to cause a
-- buffer-overflow but can possibly DoS it.
--
module Network.HTTP.Lucu
( -- * Entry Point
runHttpd
-- * Configuration
, module Network.HTTP.Lucu.Config
-- * 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
, abortPurely
, abortA
-- *** ETag
, ETag(..)
, strongETag
, weakETag
-- *** MIME Type
, MIMEType(..)
-- *** Authorization
, AuthChallenge(..)
, AuthCredential(..)
-- * Utility
-- ** Static file handling
, module Network.HTTP.Lucu.StaticFile
)
where
import Network.HTTP.Lucu.Abortion
import Network.HTTP.Lucu.Authorization
import Network.HTTP.Lucu.Config
import Network.HTTP.Lucu.ETag
import Network.HTTP.Lucu.Httpd
import Network.HTTP.Lucu.MIMEType
import Network.HTTP.Lucu.Resource hiding (driftTo)
import Network.HTTP.Lucu.Resource.Tree
import Network.HTTP.Lucu.Response
import Network.HTTP.Lucu.StaticFile