summaryrefslogtreecommitdiffhomepage
path: root/modules/luci-base/luasrc/http/protocol.luadoc
blob: 0c9ff6fa4ca277f429002195a8e39b9756632d68 (plain)
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
---[[
LuCI http protocol class.

This class contains several functions useful for http message- and content
decoding and to retrive form data from raw http messages.
]]
module "luci.http.protocol"

---[[
Extract and split urlencoded data pairs, separated bei either "&" or ";"
from given url or string. Returns a table with urldecoded values.

Simple parameters are stored as string values associated with the parameter
name within the table. Parameters with multiple values are stored as array
containing the corresponding values.

@class 			function
@name 			urldecode_params
@param url		The url or string which contains x-www-urlencoded form data
@param tbl		Use the given table for storing values (optional)
@return			Table containing the urldecoded parameters
@see			urlencode_params
]]

---[[
Encode each key-value-pair in given table to x-www-urlencoded format,
separated by "&".

Tables are encoded as parameters with multiple values by repeating the
parameter name with each value.

@class 			function
@name 			urlencode_params
@param tbl		Table with the values
@return			String containing encoded values
@see			urldecode_params
]]

---[[
Decode a mime encoded http message body with multipart/form-data Content-Type.

Stores all extracted data associated with its parameter name
in the params table within the given message object. Multiple parameter
values are stored as tables, ordinary ones as strings.

If an optional file callback function is given then it is feeded with the
file contents chunk by chunk and only the extracted file name is stored
within the params table. The callback function will be called subsequently
with three arguments:
 o Table containing decoded (name, file) and raw (headers) mime header data
 o String value containing a chunk of the file data
 o Boolean which indicates wheather the current chunk is the last one (eof)

@class 			function
@name 			mimedecode_message_body
@param src		Ltn12 source function
@param msg		HTTP message object
@param filecb	File callback function (optional)
@return			Value indicating successful operation (not nil means "ok")
@return			String containing the error if unsuccessful
@see			parse_message_header
]]

---[[
Decode an urlencoded http message body with application/x-www-urlencoded
Content-Type.

Stores all extracted data associated with its parameter name in the params
table within the given message object. Multiple parameter values are stored
as tables, ordinary ones as strings.

@class 			function
@name 			urldecode_message_body
@param src		Ltn12 source function
@param msg		HTTP message object
@return			Value indicating successful operation (not nil means "ok")
@return			String containing the error if unsuccessful
@see			parse_message_header
]]

---[[
Try to extract and decode a http message body from the given ltn12 source.
This function will examine the Content-Type within the given message object
to select the appropriate content decoder.

Currently the application/x-www-urlencoded and application/form-data
mime types are supported. If the encountered content encoding can't be
handled then the whole message body will be stored unaltered as "content"
property within the given message object.

@class 			function
@name 			parse_message_body
@param src		Ltn12 source function
@param msg		HTTP message object
@param filecb	File data callback (optional, see mimedecode_message_body())
@return			Value indicating successful operation (not nil means "ok")
@return			String containing the error if unsuccessful
@see			parse_message_header
]]