]> gitweb @ CieloNegro.org - Lucu.git/blob - Network/HTTP/Lucu.hs
6a827d08412253cf9f5cfc06fab5703b4f6bf2da
[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 when configured with -fssl flag.
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       -- * URI-related data types
39     , Host
40     , Path
41
42       -- * 'Resource' dispatcher
43     , module Network.HTTP.Lucu.Dispatcher
44
45       -- * 'Rsrc' Monad
46     , module Network.HTTP.Lucu.Resource
47
48       -- ** Things to be used in the Resource monad
49       -- *** 'Method'
50     , Method(..)
51
52       -- *** 'StatusCode'
53     , module Network.HTTP.Lucu.StatusCode
54
55       -- *** 'Abortion'
56     , module Network.HTTP.Lucu.Abortion
57
58       -- *** ETag
59     , ETag(..)
60     , strongETag
61     , weakETag
62     , parseETag
63
64       -- *** MIME Type
65     , MIMEType(..)
66     , MIMEParams
67     , parseMIMEType
68     , mimeType
69
70       -- *** Authentication
71     , AuthChallenge(..)
72     , AuthCredential(..)
73     
74       -- * Utilities
75       -- ** Static file handling
76     , module Network.HTTP.Lucu.StaticFile
77     )
78     where
79 import Network.HTTP.Lucu.Abortion
80 import Network.HTTP.Lucu.Authentication
81 import Network.HTTP.Lucu.Config
82 import Network.HTTP.Lucu.Dispatcher
83 import Network.HTTP.Lucu.ETag
84 import Network.HTTP.Lucu.Httpd
85 import Network.HTTP.Lucu.MIMEParams
86 import Network.HTTP.Lucu.MIMEType hiding (mimeType)
87 import Network.HTTP.Lucu.MIMEType.TH
88 import Network.HTTP.Lucu.Request
89 import Network.HTTP.Lucu.Resource
90 import Network.HTTP.Lucu.Response
91 import Network.HTTP.Lucu.StaticFile
92 import Network.HTTP.Lucu.StatusCode
93 import Network.HTTP.Lucu.Utils