Mercurial > prosody-modules
comparison mod_pubsub_github/mod_pubsub_github.lua @ 3509:94414cadfcaa
mod_pubsub_github: Return appropriate status code on failure to publish
Snippet lifted from mod_pubsub_post
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sun, 31 Mar 2019 16:07:11 +0200 |
parents | a98a3922bc01 |
children | f09423c29f31 |
comparison
equal
deleted
inserted
replaced
3508:a98a3922bc01 | 3509:94414cadfcaa |
---|---|
5 local hmac_sha1 = require "util.hashes".hmac_sha1; | 5 local hmac_sha1 = require "util.hashes".hmac_sha1; |
6 | 6 |
7 local pubsub_service = module:depends("pubsub").service; | 7 local pubsub_service = module:depends("pubsub").service; |
8 local node = module:get_option("github_node", "github"); | 8 local node = module:get_option("github_node", "github"); |
9 local secret = module:get_option("github_secret"); | 9 local secret = module:get_option("github_secret"); |
10 | |
11 local error_mapping = { | |
12 ["forbidden"] = 403; | |
13 ["item-not-found"] = 404; | |
14 ["internal-server-error"] = 500; | |
15 ["conflict"] = 409; | |
16 }; | |
10 | 17 |
11 function handle_POST(event) | 18 function handle_POST(event) |
12 local request, response = event.request, event.response; | 19 local request, response = event.request, event.response; |
13 if secret and ("sha1=" .. hmac_sha1(secret, request.body, true)) ~= request.headers.x_hub_signature then | 20 if secret and ("sha1=" .. hmac_sha1(secret, request.body, true)) ~= request.headers.x_hub_signature then |
14 return 401; | 21 return 401; |
30 :tag("author") | 37 :tag("author") |
31 :tag("name"):text(commit.author.name):up() | 38 :tag("name"):text(commit.author.name):up() |
32 :tag("email"):text(commit.author.email):up() | 39 :tag("email"):text(commit.author.email):up() |
33 :up() | 40 :up() |
34 ); | 41 ); |
42 if not ok then | |
43 return error_mapping[err] or 500; | |
44 end | |
35 end | 45 end |
36 | 46 |
37 module:log("debug", "Handled POST: \n%s\n", tostring(request.body)); | 47 module:log("debug", "Handled POST: \n%s\n", tostring(request.body)); |
38 response.status_code = 202; | 48 response.status_code = 202; |
39 return "Thank you Github!"; | 49 return "Thank you Github!"; |