+-- | 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
+ -- * URI-related data types
+ , Host
+ , Path
+
+ -- * 'Resource' dispatcher
+ , module Network.HTTP.Lucu.Dispatcher
+
+ -- * 'Rsrc' Monad
+ , module Network.HTTP.Lucu.Resource
+
+ -- ** Things to be used in the Resource monad
+ -- *** 'Method'
+ , Method(..)
+
+ -- *** 'StatusCode'
+ , module Network.HTTP.Lucu.StatusCode
+
+ -- *** 'Abortion'
+ , module Network.HTTP.Lucu.Abortion
+
+ -- *** ETag
, ETag(..)
, strongETag
, weakETag
- -- Httpd
- , runHttpd
-
- -- MIMEType
+ -- *** MIME Type
, MIMEType(..)
- , (</>)
- , (<:>)
- , (<=>)
-
- -- Resource (driftTo だけは要らない)
- , module Network.HTTP.Lucu.Resource
-
- -- Resource.Tree
- , ResourceDef(..)
- , ResTree
- , mkResTree
+ , MIMEParams
+ , mimeType
- -- 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.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