]> gitweb @ CieloNegro.org - Lucu.git/blobdiff - Network/HTTP/Lucu.hs
Make use of mimeType quasi-quoter.
[Lucu.git] / Network / HTTP / Lucu.hs
index 3f4350bc35004b8a23066616b232914fdcfcb943..58cb486f0b6832d6abd314c093b7e2b826b0253b 100644 (file)
@@ -1,53 +1,81 @@
+-- | 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.
+--
+-- 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(..)
-    , defaultConfig
+      -- * 'Config'uration
+    , module Network.HTTP.Lucu.Config
 
-      -- ETag
-    , ETag
-    , mkETag
-    , strongETag
-    , weakETag
+      -- * Resource Tree
+    , ResTree
+    , mkResTree
 
-      -- Httpd
-    , runHttpd
+      -- * 'Resource' Monad
+    , module Network.HTTP.Lucu.Resource
 
-      -- MIMEType
-    , MIMEType(..)
-    , (+/+)
-    , (+:+)
-    , (+=+)
-    
-      -- Request
-    , Method(..)
-    , Request(..)
+      -- ** Things to be used in the Resource monad
+      -- *** Status Code
+    , StatusCode(..)
 
-      -- Resource (driftTo だけは要らないが)
-    , module Network.HTTP.Lucu.Resource
+      -- *** 'Abortion'
+    , module Network.HTTP.Lucu.Abortion
 
-      -- Resource.Tree
-    , ResourceDef(..)
-    , ResTree
-    , mkResTree
+      -- *** ETag
+    , ETag(..)
+    , strongETag
+    , weakETag
+    , parseETag
 
-      -- Response
-    , StatusCode(..)
+      -- *** MIME Type
+    , MIMEType(..)
+    , parseMIMEType
+    , 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.ETag
 import Network.HTTP.Lucu.Httpd
-import Network.HTTP.Lucu.MIMEType
-import Network.HTTP.Lucu.Request
+import Network.HTTP.Lucu.MIMEType hiding (mimeType)
+import Network.HTTP.Lucu.MIMEType.TH
 import Network.HTTP.Lucu.Resource
 import Network.HTTP.Lucu.Resource.Tree
 import Network.HTTP.Lucu.Response