Mercurial > prosody-modules
diff mod_pubsub_github/mod_pubsub_github.lua @ 3530:552d4944d1ca
mod_pubsub_github: Rearrange code to make it easier to handle other event types
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sun, 31 Mar 2019 19:08:43 +0200 |
parents | 6ac98c4dbbd3 |
children | 3bece2db869c |
line wrap: on
line diff
--- a/mod_pubsub_github/mod_pubsub_github.lua Sun Mar 31 19:07:22 2019 +0200 +++ b/mod_pubsub_github/mod_pubsub_github.lua Sun Mar 31 19:08:43 2019 +0200 @@ -59,31 +59,33 @@ end local github_event = request.headers.x_github_event or data.object_kind; + module:log("debug", "Handling '%s' event: \n%s\n", github_event, tostring(request.body)); + if github_event == "push" then - module:log("debug", "Handling 'push' event: \n%s\n", tostring(request.body)); + + for _, commit in ipairs(data.commits) do + local ok, err = pubsub_service:publish(node, github_actor, commit.id, + st.stanza("item", { id = commit.id, xmlns = "http://jabber.org/protocol/pubsub" }) + :tag("entry", { xmlns = "http://www.w3.org/2005/Atom" }) + :tag("id"):text(commit.id):up() + :tag("title"):text(commit.message:match("^[^\r\n]*")):up() + :tag("summary"):text(("Commit to %s by %s: %s"):format(data.repository.name, commit.author.name, commit.message:match("^[^\r\n]*"))):up() + :tag("content"):text(commit.message):up() + :tag("link", { rel = "alternate", href = commit.url }):up() + :tag("published"):text(commit.author.date):up() + :tag("author") + :tag("name"):text(commit.author.name):up() + :tag("email"):text(commit.author.email):up() + :up() + ); + if not ok then + return error_mapping[err] or 500; + end + end + elseif github_event then module:log("debug", "Unsupported Github event %q", github_event); return 501; - end -- else .. is this even github? - - for _, commit in ipairs(data.commits) do - local ok, err = pubsub_service:publish(node, github_actor, commit.id, - st.stanza("item", { id = commit.id, xmlns = "http://jabber.org/protocol/pubsub" }) - :tag("entry", { xmlns = "http://www.w3.org/2005/Atom" }) - :tag("id"):text(commit.id):up() - :tag("title"):text(commit.message:match("^[^\r\n]*")):up() - :tag("summary"):text(("Commit to %s by %s: %s"):format(data.repository.name, commit.author.name, commit.message:match("^[^\r\n]*"))):up() - :tag("content"):text(commit.message):up() - :tag("link", { rel = "alternate", href = commit.url }):up() - :tag("published"):text(commit.author.date):up() - :tag("author") - :tag("name"):text(commit.author.name):up() - :tag("email"):text(commit.author.email):up() - :up() - ); - if not ok then - return error_mapping[err] or 500; - end end response.status_code = 202;