7 |
7 |
8 local connlisteners_get = require "net.connlisteners".get; |
8 local connlisteners_get = require "net.connlisteners".get; |
9 local listener = connlisteners_get("httpclient") or error("No httpclient listener!"); |
9 local listener = connlisteners_get("httpclient") or error("No httpclient listener!"); |
10 |
10 |
11 local t_insert, t_concat = table.insert, table.concat; |
11 local t_insert, t_concat = table.insert, table.concat; |
12 local tonumber, tostring, pairs, xpcall, select, debug_traceback, char = |
12 local tonumber, tostring, pairs, xpcall, select, debug_traceback, char, format = |
13 tonumber, tostring, pairs, xpcall, select, debug.traceback, string.char; |
13 tonumber, tostring, pairs, xpcall, select, debug.traceback, string.char, string.format; |
14 |
14 |
15 local log = require "util.logger".init("http"); |
15 local log = require "util.logger".init("http"); |
16 local print = function () end |
16 local print = function () end |
17 |
17 |
18 local urlencode = function (s) return s and (s:gsub("%W", function (c) return string.format("%%%02x", c:byte()); end)); end |
|
19 |
|
20 module "http" |
18 module "http" |
|
19 |
|
20 function urlencode(s) return s and (s:gsub("%W", function (c) return format("%%%02x", c:byte()); end)); end |
|
21 function urldecode(s) return s and (s:gsub("%%(%x%x)", function (c) return char(tonumber(c,16)); end)); end |
21 |
22 |
22 local function expectbody(reqt, code) |
23 local function expectbody(reqt, code) |
23 if reqt.method == "HEAD" then return nil end |
24 if reqt.method == "HEAD" then return nil end |
24 if code == 204 or code == 304 then return nil end |
25 if code == 204 or code == 304 then return nil end |
25 if code >= 100 and code < 200 then return nil end |
26 if code >= 100 and code < 200 then return nil end |