net.http, httpclient_listener: Move request sending from net.http to onconnect()...
[prosody.git] / net / httpclient_listener.lua
index dfa250623af523d18c4950608c42cfe043afd78f..df571a589ef580e7ae21f7b3efbd8d0556e8ceb5 100644 (file)
@@ -7,6 +7,7 @@
 --
 
 local log = require "util.logger".init("httpclient_listener");
+local t_concat = table.concat;
 
 local connlisteners_register = require "net.connlisteners".register;
 
@@ -15,6 +16,27 @@ local buffers = {}; -- Buffers of partial lines
 
 local httpclient = { default_port = 80, default_mode = "*a" };
 
+function httpclient.onconnect(conn)
+       local req = requests[conn];
+       -- Send the request
+       local request_line = { req.method or "GET", " ", req.path, " HTTP/1.1\r\n" };
+       if req.query then
+               t_insert(request_line, 4, "?"..req.query);
+       end
+       
+       conn:write(t_concat(request_line));
+       local t = { [2] = ": ", [4] = "\r\n" };
+       for k, v in pairs(req.headers) do
+               t[1], t[3] = k, v;
+               conn:write(t_concat(t));
+       end
+       conn:write("\r\n");
+       
+       if body then
+               conn:write(body);
+       end
+end
+
 function httpclient.onincoming(conn, data)
        local request = requests[conn];