Mercurial > prosody-modules
changeset 650:34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
author | Marco Cirillo <maranda@lightwitch.org> |
---|---|
date | Sun, 29 Apr 2012 13:06:53 +0000 (2012-04-29) |
parents | dfd7f1ed7782 |
children | 78a23a7dc613 |
files | mod_stanza_counter/mod_stanza_counter_http.lua |
diffstat | 1 files changed, 22 insertions(+), 22 deletions(-) [+] |
line wrap: on
line diff
--- a/mod_stanza_counter/mod_stanza_counter_http.lua Sun Apr 29 13:06:26 2012 +0000 +++ b/mod_stanza_counter/mod_stanza_counter_http.lua Sun Apr 29 13:06:53 2012 +0000 @@ -1,11 +1,10 @@ -- (C) 2011, Marco Cirillo (LW.Org) -- Exposes stats on HTTP for the stanza counter module. +module:depends("http") module:set_global() -local ports = module:get_option_array("stanza_counter_http_ports", {{ port = 5280 }}) - -local httpserver = require "net.httpserver" +local base_path = module:get_option_array("stanza_counter_basepath", "/stanza-counter/") -- http handlers @@ -13,19 +12,20 @@ local r_err = "\n<html>\n<head>\n<title>Prosody's Stanza Counter - Error %s</title>\n<meta name=\"robots\" content=\"noindex, nofollow\" />\n</head>\n\n<body>\n<h3>%s</h3>\n</body>\n\n</html>\n" -local function res(code, r, h) - local response = { - status = code, - body = r - } +local function res(event, code, body, extras) + local response = event.response - if h then response.headers = h end - return response + if extras then + for header, data in pairs(extras) do response.headers[header] = data end + end + + response.status_code = code + response:send(body) end -local function req(method, body, request) +local function req(event) if not prosody.stanza_counter then - local err500 = r_err:format("500", "Stats not found, is the counter module loaded?") + local err500 = r_err:format(event, 500, "Stats not found, is the counter module loaded?") return res(500, err500) end if method == "GET" then local forge_res = r_200:format(prosody.stanza_counter.iq["incoming"], @@ -34,19 +34,19 @@ prosody.stanza_counter.message["outgoing"], prosody.stanza_counter.presence["incoming"], prosody.stanza_counter.presence["outgoing"]) - return res(200, forge_res) + return res(event, 200, forge_res) else - local err405 = r_err:format("405", "Only GET is supported") - return res(405, err405, {["Allow"] = "GET"}) + local err405 = r_err:format(405, "Only GET is supported") + return res(event, 405, err405, {["Allow"] = "GET"}) end end -- initialization. --- init http and cleanup interface -local function setup() - httpserver.new_from_config(ports, req, { base = "stanza-counter" }) -end - --- set it -if prosody.start_time then setup() else module:hook("server-started", setup) end +module:provides("http", { + default_path = base_path, + route = { + ["GET /"] = req, + ["POST /"] = req + } +})