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