-- | 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
    ( -- * Entry Point
      runHttpd

      -- * 'Config'uration
    , module Network.HTTP.Lucu.Config

      -- * 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.Response.StatusCode

      -- *** 'Abortion'
    , module Network.HTTP.Lucu.Abortion

      -- *** ETag
    , ETag(..)
    , strongETag
    , weakETag

      -- *** MIME Type
    , MIMEType(..)
    , MIMEParams
    , mimeType

      -- *** Authentication
    , AuthChallenge(..)
    , AuthCredential(..)
    
      -- * 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.MIMEParams
import Network.HTTP.Lucu.MIMEType
import Network.HTTP.Lucu.Request
import Network.HTTP.Lucu.Resource
import Network.HTTP.Lucu.Response.StatusCode
import Network.HTTP.Lucu.StaticFile
import Network.HTTP.Lucu.Utils