projects
/
project
/
luci.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
6129d03
)
Improved httpclient
author
Steven Barth
<steven@midlink.org>
Mon, 9 Mar 2009 14:02:34 +0000
(14:02 +0000)
committer
Steven Barth
<steven@midlink.org>
Mon, 9 Mar 2009 14:02:34 +0000
(14:02 +0000)
libs/httpclient/luasrc/httpclient.lua
patch
|
blob
|
history
diff --git
a/libs/httpclient/luasrc/httpclient.lua
b/libs/httpclient/luasrc/httpclient.lua
index f3318a8ccc3c46aa6ff688b9b671af1e8d12369a..e75cc0373c26ef01e3674948fc95362cd89b3bb7 100644
(file)
--- a/
libs/httpclient/luasrc/httpclient.lua
+++ b/
libs/httpclient/luasrc/httpclient.lua
@@
-22,6
+22,7
@@
local http = require "luci.http.protocol"
local date = require "luci.http.protocol.date"
local type, pairs, ipairs, tonumber = type, pairs, ipairs, tonumber
local date = require "luci.http.protocol.date"
local type, pairs, ipairs, tonumber = type, pairs, ipairs, tonumber
+local unpack = unpack
module "luci.httpclient"
module "luci.httpclient"
@@
-160,6
+161,10
@@
function request_raw(uri, options)
options.method = options.method or "POST"
end
options.method = options.method or "POST"
end
+ if type(options.body) == "function" then
+ options.method = options.method or "POST"
+ end
+
-- Assemble message
local message = {(options.method or "GET") .. " " .. path .. " " .. protocol}
-- Assemble message
local message = {(options.method or "GET") .. " " .. path .. " " .. protocol}
@@
-194,6
+199,12
@@
function request_raw(uri, options)
if type(options.body) == "string" then
sock:sendall(options.body)
if type(options.body) == "string" then
sock:sendall(options.body)
+ elseif type(options.body) == "function" then
+ local res = {options.body(sock)}
+ if not res[1] then
+ sock:close()
+ return unpack(res)
+ end
end
-- Create source and fetch response
end
-- Create source and fetch response
@@
-201,12
+212,14
@@
function request_raw(uri, options)
local line, code, error = linesrc()
if not line then
local line, code, error = linesrc()
if not line then
+ sock:close()
return nil, code, error
end
return nil, code, error
end
- local protocol, status, msg = line:match("^(
HTTP/[0-9.
]+) ([0-9]+) (.*)")
+ local protocol, status, msg = line:match("^(
[%w./
]+) ([0-9]+) (.*)")
if not protocol then
if not protocol then
+ sock:close()
return nil, -3, "invalid response magic: " .. line
end
return nil, -3, "invalid response magic: " .. line
end
@@
-228,6
+241,7
@@
function request_raw(uri, options)
end
if not line then
end
if not line then
+ sock:close()
return nil, -4, "protocol error"
end
return nil, -4, "protocol error"
end