Mercurial > prosody-modules
annotate mod_measure_message_length/mod_measure_message_length.lua @ 4700:f821eeac0e50
mod_pastebin: Fix pasting when <body> is not the first tag (thanks thorsten)
Introduced in ded630a87563
stanza:get_child() and :get_child_text() operates on the first child
when no name or namespace is given.
If it so happens that the first child is an <thread/> instead of <body>
then it calculates the line length against that instead of the body.
Apparently in the vast majority of clients the <body> is first, so this
issue was not noticed until now.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Wed, 29 Sep 2021 13:39:59 +0200 |
parents | 6e70d354b7d8 |
children |
rev | line source |
---|---|
2372
b1b120e654ff
mod_measure_message_length: Collect statistics on number of bytes, words and lines in messages
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
1 local bytes = module:measure("bytes", "sizes"); |
3430
6e70d354b7d8
mod_measure_message_length: Use measure type that actually exists
Kim Alvefur <zash@zash.se>
parents:
2372
diff
changeset
|
2 local lines = module:measure("lines", "distribution"); |
6e70d354b7d8
mod_measure_message_length: Use measure type that actually exists
Kim Alvefur <zash@zash.se>
parents:
2372
diff
changeset
|
3 local words = module:measure("words", "distribution"); |
2372
b1b120e654ff
mod_measure_message_length: Collect statistics on number of bytes, words and lines in messages
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
4 |
b1b120e654ff
mod_measure_message_length: Collect statistics on number of bytes, words and lines in messages
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
5 local function measure_length(event) |
b1b120e654ff
mod_measure_message_length: Collect statistics on number of bytes, words and lines in messages
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
6 local body = event.stanza:get_child_text("body"); |
b1b120e654ff
mod_measure_message_length: Collect statistics on number of bytes, words and lines in messages
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
7 if body then |
b1b120e654ff
mod_measure_message_length: Collect statistics on number of bytes, words and lines in messages
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
8 bytes(#body); |
b1b120e654ff
mod_measure_message_length: Collect statistics on number of bytes, words and lines in messages
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
9 lines(select(2, body:gsub("[^\n]+",""))); |
b1b120e654ff
mod_measure_message_length: Collect statistics on number of bytes, words and lines in messages
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
10 words(select(2, body:gsub("%S+",""))); |
b1b120e654ff
mod_measure_message_length: Collect statistics on number of bytes, words and lines in messages
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
11 end |
b1b120e654ff
mod_measure_message_length: Collect statistics on number of bytes, words and lines in messages
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
12 end |
b1b120e654ff
mod_measure_message_length: Collect statistics on number of bytes, words and lines in messages
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
13 |
b1b120e654ff
mod_measure_message_length: Collect statistics on number of bytes, words and lines in messages
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
14 module:hook("message/full", measure_length); |
b1b120e654ff
mod_measure_message_length: Collect statistics on number of bytes, words and lines in messages
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
15 module:hook("message/bare", measure_length); |
b1b120e654ff
mod_measure_message_length: Collect statistics on number of bytes, words and lines in messages
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
16 module:hook("message/host", measure_length); |
b1b120e654ff
mod_measure_message_length: Collect statistics on number of bytes, words and lines in messages
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
17 |
b1b120e654ff
mod_measure_message_length: Collect statistics on number of bytes, words and lines in messages
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
18 module:hook("pre-message/full", measure_length); |
b1b120e654ff
mod_measure_message_length: Collect statistics on number of bytes, words and lines in messages
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
19 module:hook("pre-message/bare", measure_length); |
b1b120e654ff
mod_measure_message_length: Collect statistics on number of bytes, words and lines in messages
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
20 module:hook("pre-message/host", measure_length); |
b1b120e654ff
mod_measure_message_length: Collect statistics on number of bytes, words and lines in messages
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
21 |