+-- | 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 or lighttpd. It is intended to
+-- be used to create an efficient web-based RESTful 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
- ( -- Abortion
- abort
- , abortA
+ ( -- * Entry Point
+ runHttpd
- -- Config
+ -- * Configuration
, module Network.HTTP.Lucu.Config
- -- ETag
+ -- * Resource Tree
+ , ResourceDef(..)
+ , emptyResource
+ , 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
- -- Httpd
- , runHttpd
-
- -- MIMEType
+ -- *** MIME Type
, MIMEType(..)
- , (+/+)
- , (+:+)
- , (+=+)
-
- -- Request
- , Method(..)
- , Request(..)
-
- -- Resource (driftTo だけは要らない)
- , module Network.HTTP.Lucu.Resource
- -- Resource.Tree
- , ResourceDef(..)
- , ResTree
- , mkResTree
-
- -- Response
- , StatusCode(..)
+ -- *** Authorization
+ , AuthChallenge(..)
+ , AuthCredential(..)
- -- StaticFile
+ -- * 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.Request
import Network.HTTP.Lucu.Resource hiding (driftTo)
import Network.HTTP.Lucu.Resource.Tree
import Network.HTTP.Lucu.Response