diff -r 000000000000 -r 6e60da4625db libs/httpclient_listener.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libs/httpclient_listener.lua Sat Jan 02 05:46:52 2010 +0000 @@ -0,0 +1,44 @@ +-- Prosody IM +-- Copyright (C) 2008-2009 Matthew Wild +-- Copyright (C) 2008-2009 Waqas Hussain +-- +-- This project is MIT/X11 licensed. Please see the +-- COPYING file in the source package for more information. +-- + +local log = require "util.logger".init("httpclient_listener"); + +local connlisteners_register = require "net.connlisteners".register; + +local requests = {}; -- Open requests +local buffers = {}; -- Buffers of partial lines + +local httpclient = { default_port = 80, default_mode = "*a" }; + +function httpclient.onincoming(conn, data) + local request = requests[conn]; + + if not request then + log("warn", "Received response from connection %s with no request attached!", tostring(conn)); + return; + end + + if data and request.reader then + request:reader(data); + end +end + +function httpclient.ondisconnect(conn, err) + local request = requests[conn]; + if request then + request:reader(nil); + end + requests[conn] = nil; +end + +function httpclient.register_request(conn, req) + log("debug", "Attaching request %s to connection %s", tostring(req.id or req), tostring(conn)); + requests[conn] = req; +end + +connlisteners_register("httpclient", httpclient);