]> gitweb @ CieloNegro.org - Lucu.git/blob - Network/HTTP/Lucu.hs
The library compiles again.
[Lucu.git] / Network / HTTP / Lucu.hs
1 -- | Lucu is an HTTP daemonic library. It can be embedded in any
2 -- Haskell program and runs in an independent thread.
3 --
4 -- Features:
5 --
6 --   [/Full support of HTTP\/1.1/] Lucu supports request pipelining,
7 --   chunked I\/O, ETag comparison and \"100 Continue\".
8 --
9 --   [/Performance/] Lucu doesn't fork\/exec to handle requests like
10 --   CGI. It just spawns a new thread. Inter-process communication is
11 --   done with STM.
12 --
13 --   [/Affinity for RESTafarians/] Lucu is a carefully designed
14 --   web server for RESTful applications.
15 --
16 --   [/SSL connections/] Lucu can handle HTTP connections over SSL
17 --   layer.
18 --
19 -- Lucu is not a replacement for Apache or lighttpd. It is intended to
20 -- be used to create an efficient web-based RESTful application
21 -- without messing around FastCGI. It is also intended to be run
22 -- behind a reverse-proxy so it doesn't have the following (otherwise
23 -- essential) facilities:
24 --
25 --   [/Logging/] Lucu doesn't log any requests from any clients.
26 --
27 --   [/Client Filtering/] Lucu always accepts any clients. No IP
28 --   filter is implemented.
29 --
30 --   [/Bandwidth Limitting/] Lucu doesn't limit bandwidth it consumes.
31 --
32 --   [/Protection Against Wicked Clients/] Lucu is fragile against
33 --   wicked clients. No attacker should be able to cause a
34 --   buffer-overflow but can possibly DoS it.
35 --
36 module Network.HTTP.Lucu
37     ( -- * Entry Point
38       runHttpd
39
40       -- * Configuration
41     , module Network.HTTP.Lucu.Config
42
43       -- * Resource Tree
44     , ResTree
45     , mkResTree
46
47       -- * Resource Monad
48     , module Network.HTTP.Lucu.Resource
49
50       -- ** Things to be used in the Resource monad
51
52       -- *** Status Code
53     , StatusCode(..)
54
55       -- *** Abortion
56     , abort
57     , abortPurely
58     , abortA
59
60       -- *** ETag
61     , ETag(..)
62     , strongETag
63     , weakETag
64     , parseETag
65
66       -- *** MIME Type
67     , MIMEType(..)
68     , mkMIMEType
69     , parseMIMEType
70
71       -- *** Authorization
72     , AuthChallenge(..)
73     , AuthCredential(..)
74     
75       -- * Utility
76
77       -- ** Static file handling
78     , module Network.HTTP.Lucu.StaticFile
79     )
80     where
81 import Network.HTTP.Lucu.Abortion
82 import Network.HTTP.Lucu.Authorization
83 import Network.HTTP.Lucu.Config
84 import Network.HTTP.Lucu.ETag
85 import Network.HTTP.Lucu.Httpd
86 import Network.HTTP.Lucu.MIMEType
87 import Network.HTTP.Lucu.Resource
88 import Network.HTTP.Lucu.Resource.Tree
89 import Network.HTTP.Lucu.Response
90 import Network.HTTP.Lucu.StaticFile