]> gitweb @ CieloNegro.org - Lucu.git/blob - Network/HTTP/Lucu.hs
Changes from 0.4 to 0.4.1
[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. It is intended to be used to
20 -- create an efficient web-based application without messing around
21 -- FastCGI. It is also intended to be run behind a reverse-proxy so it
22 -- doesn't have the following (otherwise essential) facilities:
23 --
24 --   [/Logging/] Lucu doesn't log any requests from any clients.
25 --
26 --   [/Client Filtering/] Lucu always accepts any clients. No IP
27 --   filter is implemented.
28 --
29 --   [/Bandwidth Limitting/] Lucu doesn't limit bandwidth it consumes.
30 --
31 --   [/Protection Against Wicked Clients/] Lucu is fragile against
32 --   wicked clients. No attacker should be able to cause a
33 --   buffer-overflow but can possibly DoS it.
34 --
35
36
37 module Network.HTTP.Lucu
38     ( -- * Entry Point
39       runHttpd
40
41       -- * Configuration
42     , module Network.HTTP.Lucu.Config
43
44       -- * Resource Tree
45     , ResourceDef(..)
46     , emptyResource
47     , ResTree
48     , mkResTree
49
50       -- * Resource Monad
51     , module Network.HTTP.Lucu.Resource
52
53       -- ** Things to be used in the Resource monad
54
55       -- *** Status Code
56     , StatusCode(..)
57
58       -- *** Abortion
59     , abort
60     , abortPurely
61     , abortA
62
63       -- *** ETag
64     , ETag(..)
65     , strongETag
66     , weakETag
67
68       -- *** MIME Type
69     , MIMEType(..)
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
82 import Network.HTTP.Lucu.Abortion
83 import Network.HTTP.Lucu.Authorization
84 import Network.HTTP.Lucu.Config
85 import Network.HTTP.Lucu.ETag
86 import Network.HTTP.Lucu.Httpd
87 import Network.HTTP.Lucu.MIMEType
88 import Network.HTTP.Lucu.Resource hiding (driftTo)
89 import Network.HTTP.Lucu.Resource.Tree
90 import Network.HTTP.Lucu.Response
91 import Network.HTTP.Lucu.StaticFile