Mercurial > prosody-modules
comparison mod_pubsub_alertmanager/mod_pubsub_alertmanager.lua @ 4619:b11001bd915d
mod_pubsub_alertmanager: Add a plain text summary
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Thu, 01 Jul 2021 00:07:27 +0200 |
| parents | 48132b6e1b16 |
| children | 9b253cce7d88 |
comparison
equal
deleted
inserted
replaced
| 4618:48132b6e1b16 | 4619:b11001bd915d |
|---|---|
| 1 local st = require "util.stanza"; | 1 local st = require "util.stanza"; |
| 2 local json = require "util.json"; | 2 local json = require "util.json"; |
| 3 local filters = {}; | |
| 4 local render = require "util.interpolation".new("%b{}", tostring, filters); | |
| 3 local uuid_generate = require "util.uuid".generate; | 5 local uuid_generate = require "util.uuid".generate; |
| 4 | 6 |
| 5 module:depends("http"); | 7 module:depends("http"); |
| 6 | 8 |
| 7 local pubsub_service = module:depends("pubsub").service; | 9 local pubsub_service = module:depends("pubsub").service; |
| 53 end | 55 end |
| 54 end | 56 end |
| 55 return 202; | 57 return 202; |
| 56 end | 58 end |
| 57 | 59 |
| 60 local template = [[ | |
| 61 *ALARM!* | |
| 62 Status: {status} | |
| 63 Starts at: {startsAt}{endsAt& | |
| 64 Ends at: {endsAt}} | |
| 65 Labels: {labels% | |
| 66 {idx}: {item}} | |
| 67 Annotations: {annotations% | |
| 68 {idx}: {item}} | |
| 69 ]] | |
| 70 | |
| 71 module:hook("pubsub-summary/urn:uuid:e3bec775-c607-4e9b-9a3f-94de1316d861:v4", function(event) | |
| 72 local payload = event.payload; | |
| 73 | |
| 74 local data = { | |
| 75 status = payload.attr.status, | |
| 76 annotations = {}, | |
| 77 labels = {}, | |
| 78 endsAt = payload:find("ends/@at"), | |
| 79 startsAt = payload:find("starts/@at"), | |
| 80 }; | |
| 81 for label in payload:childtags("label") do | |
| 82 data.labels[tostring(label.attr.name)] = label:get_text(); | |
| 83 end | |
| 84 for annotation in payload:childtags("annotation") do | |
| 85 data.annotations[tostring(annotation.attr.name)] = annotation:get_text(); | |
| 86 end | |
| 87 | |
| 88 return render(template, data); | |
| 89 end); | |
| 90 | |
| 58 module:provides("http", { | 91 module:provides("http", { |
| 59 route = { | 92 route = { |
| 60 ["POST /*"] = handle_POST; | 93 ["POST /*"] = handle_POST; |
| 61 }; | 94 }; |
| 62 }); | 95 }); |
