]> code.delx.au - gnu-emacs-elpa/blob - NOTES
more documentation and examples
[gnu-emacs-elpa] / NOTES
1 -*- org -*-
2
3 * Notes
4 * Tasks [7/9]
5 ** STARTED Documentation [0/4]
6 - [ ] introduction
7 - [ ] handlers
8 - [ ] request headers
9 - [ ] usage examples
10 - [ ] list of functions
11
12 Notes to touch upon
13 - [ ] how to set content type
14
15 ** DONE Handle POST requests
16 1. read standard for POST data
17 2. parse multi-line headers with boundaries
18
19 For now keep this all incremental and in ews-filter.
20
21 ** DONE Makefile
22 - byte-compile
23 - package
24 - test
25 - benchmark
26 ** DONE catch errors and return an error code
27 include an easy error handler like the 404 handler
28
29 ** DONE better parsing of multipart form blocks
30 parse more than just the content-type headers.
31
32 ** DONE non-multipart form data
33 e.g., parameter strings
34
35 ** DONE some more convenience functionality [6/6]
36 - [X] strip and parse URL query string
37 - [X] parse urlencoded post data
38 - [X] think about defaulting to (name . content) for form elements
39 - [X] maybe don't require a non-nil return to cancel the connection,
40 instead only keep open if :keep-open is returned
41 - [X] function to send a file (with mime handling)
42 - [X] send a 404 with some default text
43
44 ** CANCELED Lazy header processing
45 - State "CANCELED" from "TODO" [2013-12-25 Wed 12:21] \\
46 premature optimization
47 Use lazy sequence functions for header a-list to avoid parsing all
48 headers. For regexp matchers should stop when matched header is
49 encountered (often the first one when :GET), For function matchers
50 provide lazy version of assoc.
51
52 Also, there is the issue of how a lazy request for more parameters
53 should act before all incoming text has been received. Emacs does not
54 provide a light-weight mechanism for a function to wait for incoming
55 process text without something gross like the =(sit-for 0.1)= used in
56 the test suite.
57
58 ** TODO use gnutls for https
59 I think this should work.
60 * Documentation
61 ** Writing Handlers
62 *** Matching
63 *** Handler Functions
64 At any time one can throw =close-connection= to abort the handler and
65 close the conncetion. If the keyword =:keep-open= is thrown, then the
66 handler aborts, but the connection isn't closed.
67
68 A return value of =:keep-open= will keep the connection open,
69 otherwise it is closed when the handler returns.