]> gitweb @ CieloNegro.org - Lucu.git/blob - Network/HTTP/Lucu.hs
StatusCode is now a type class, not an algebraic data type.
[Lucu.git] / Network / HTTP / Lucu.hs
1 -- | Lucu is an embedded HTTP server library.
2 --
3 -- Features:
4 --
5 --   [/Affinity for RESTafarians/] Lucu is specifically designed to be
6 --   suitable for RESTful applications.
7 --
8 --   [/Full support of HTTP/\//1.1/] Lucu supports request pipelining,
9 --   chunked I\/O, ETag comparison and \"100 Continue\".
10 --
11 --   [/SSL connections/] Lucu can handle HTTP connections over Secure
12 --   Socket Layer.
13 --
14 -- Lucu is not a replacement for Apache or lighttpd. It is intended to
15 -- be used to build an efficient web-based RESTful application which
16 -- runs behind a reverse-proxy so it doesn't have the following
17 -- (otherwise essential) functionalities:
18 --
19 --   [/Logging/] Lucu doesn't write logs of any requests from any
20 --   clients.
21 --
22 --   [/Client Filtering/] Lucu always accepts any clients. No IP
23 --   filter is implemented.
24 --
25 --   [/Bandwidth Limitting/] Lucu doesn't limit bandwidth it consumes.
26 --
27 --   [/Protection Against Wicked Clients/] Lucu is somewhat fragile
28 --   against wicked clients. No attacker should be able to cause a
29 --   buffer-overflow but can possibly DoS it.
30 --
31 module Network.HTTP.Lucu
32     ( -- * Entry Point
33       runHttpd
34
35       -- * 'Config'uration
36     , module Network.HTTP.Lucu.Config
37
38       -- * Resource Tree
39     , ResTree
40     , mkResTree
41
42       -- * 'Resource' Monad
43     , module Network.HTTP.Lucu.Resource
44
45       -- ** Things to be used in the Resource monad
46       -- *** Status Code
47     , module Network.HTTP.Lucu.StatusCode
48
49       -- *** 'Abortion'
50     , module Network.HTTP.Lucu.Abortion
51
52       -- *** ETag
53     , ETag(..)
54     , strongETag
55     , weakETag
56     , parseETag
57
58       -- *** MIME Type
59     , MIMEType(..)
60     , parseMIMEType
61     , mimeType
62
63       -- *** Authentication
64     , AuthChallenge(..)
65     , AuthCredential(..)
66     
67       -- * Utilities
68       -- ** Static file handling
69     , module Network.HTTP.Lucu.StaticFile
70     )
71     where
72 import Network.HTTP.Lucu.Abortion
73 import Network.HTTP.Lucu.Authentication
74 import Network.HTTP.Lucu.Config
75 import Network.HTTP.Lucu.ETag
76 import Network.HTTP.Lucu.Httpd
77 import Network.HTTP.Lucu.MIMEType hiding (mimeType)
78 import Network.HTTP.Lucu.MIMEType.TH
79 import Network.HTTP.Lucu.Resource
80 import Network.HTTP.Lucu.Resource.Tree
81 import Network.HTTP.Lucu.Response
82 import Network.HTTP.Lucu.StaticFile
83 import Network.HTTP.Lucu.StatusCode