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
parent 3508:a98a3922bc01
child 3510: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!";