1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
MessageManager: README
======================
MessageManager is a mailing list program, much like GNU Mailman, but
with sub-lists, SMS messages, and easier configuration. Also, social
networking.
RESTful
-------
MessageManager is RESTful in design.
Here is a table(?) of all URIs in this application, and what HTTP verbs
they can each be expected to handle.
- index GET the homepage
|- auth GET the current auth state
| PUT user credentials
|- messages GET a list of all messages
| | POST a new message
| `- <msgid> GET a representation of <msgid>
|- plugins GET the current plugin configuration
| PUT an updated plugin configuration
`- users GET a list of all users
| POST a new user
| PUT an updated user index
|- new GET the form for a new user
`- <user> GET <user>'s info
PUT updated user info
Now, there is only one URI that is expected to handle both POST and
PUT (`users'), let's ignore it for a moment. No URI that is expected
to handle both POST and PUT. I haven't done this intentionally, but
it works out well, because it means that I can treat them
interchangeably. This is nice because current web technologies make
it a pain in the butt to send/handle PUT requests, so I can just do
POST requests, even if it's the wrong thing to use. So it doesn't
follow HTTP's original design, it's still RESTful, it just uses
different semantics to decide which verb to use.
Ok, now, that tricky `users' URI. I've handled that it must handle
PUT and POST by noting that it is accessable at two URIs, `users' and
`users/index', and assigning one to each. `users' handles POSTing new
users, and `users/index' handles PUTing an updated user index.
BUGS/TODO
---------
* Installer
1. 'baseurl' in the 'conf' table is not set
2. During stage 2 (first user creation) the stylesheet is not applied
(probably due to number 1)
3. The created user is not activated.
The End
-------
Happy Hacking!
~ Luke Shumaker
|