Mercurial > prosody-modules
annotate mod_stanza_counter/mod_stanza_counter_http.lua @ 651:78a23a7dc613
mod_register_json: fixed typo, added https/http switch and default value to it.
author | Marco Cirillo <maranda@lightwitch.org> |
---|---|
date | Sun, 29 Apr 2012 13:44:21 +0000 |
parents | 34e7093cf419 |
children | f7aacd9e93de |
rev | line source |
---|---|
436
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
1 -- (C) 2011, Marco Cirillo (LW.Org) |
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
2 -- Exposes stats on HTTP for the stanza counter module. |
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
3 |
650
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
4 module:depends("http") |
436
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
5 module:set_global() |
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
6 |
650
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
7 local base_path = module:get_option_array("stanza_counter_basepath", "/stanza-counter/") |
436
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
8 |
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
9 -- http handlers |
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
10 |
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
11 local r_200 = "\n<html>\n<head>\n<title>Prosody's Stanza Counter</title>\n<meta name=\"robots\" content=\"noindex, nofollow\" />\n</head>\n\n<body>\n<h3>Incoming and Outgoing stanzas divided per type</h3>\n<p><strong>Incoming IQs</strong>: %d<br/>\n<strong>Outgoing IQs</strong>: %d<br/>\n<strong>Incoming Messages</strong>: %d<br/>\n<strong>Outgoing Messages</strong>: %d<br/>\n<strong>Incoming Presences</strong>: %d<br/>\n<strong>Outgoing Presences</strong>: %d<p>\n</body>\n\n</html>\n" |
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
12 |
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
13 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" |
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
14 |
650
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
15 local function res(event, code, body, extras) |
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
16 local response = event.response |
436
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
17 |
650
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
18 if extras then |
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
19 for header, data in pairs(extras) do response.headers[header] = data end |
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
20 end |
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
21 |
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
22 response.status_code = code |
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
23 response:send(body) |
436
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
24 end |
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
25 |
650
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
26 local function req(event) |
436
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
27 if not prosody.stanza_counter then |
650
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
28 local err500 = r_err:format(event, 500, "Stats not found, is the counter module loaded?") |
437
78a2a6b2bea3
mod_stanza_counter: missing end.
Marco Cirillo <maranda@lightwitch.org>
parents:
436
diff
changeset
|
29 return res(500, err500) end |
436
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
30 if method == "GET" then |
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
31 local forge_res = r_200:format(prosody.stanza_counter.iq["incoming"], |
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
32 prosody.stanza_counter.iq["outgoing"], |
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
33 prosody.stanza_counter.message["incoming"], |
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
34 prosody.stanza_counter.message["outgoing"], |
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
35 prosody.stanza_counter.presence["incoming"], |
535
39c7115be370
mod_stanza_counter_http: replaced prosody.events.add_handler with module:hook.
Marco Cirillo <maranda@lightwitch.org>
parents:
518
diff
changeset
|
36 prosody.stanza_counter.presence["outgoing"]) |
650
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
37 return res(event, 200, forge_res) |
436
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
38 else |
650
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
39 local err405 = r_err:format(405, "Only GET is supported") |
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
40 return res(event, 405, err405, {["Allow"] = "GET"}) |
436
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
41 end |
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
42 end |
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
43 |
e4a1f0425380
mod_stanza_counter: splitted plugin :/
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
44 -- initialization. |
562
b3f8435e661c
mod_stanza_counter_http: added cleanup function (from mod_register_json)
Marco Cirillo <maranda@lightwitch.org>
parents:
535
diff
changeset
|
45 |
650
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
46 module:provides("http", { |
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
47 default_path = base_path, |
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
48 route = { |
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
49 ["GET /"] = req, |
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
50 ["POST /"] = req |
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
51 } |
34e7093cf419
mod_stanza_counter_http: updated to current HTTP API.
Marco Cirillo <maranda@lightwitch.org>
parents:
608
diff
changeset
|
52 }) |