plugins/github.lua

Sat, 27 Jun 2015 23:19:32 +0200

author
Kim Alvefur <zash@zash.se>
date
Sat, 27 Jun 2015 23:19:32 +0200
changeset 120
91a29c964e97
parent 119
e09157903d93
child 127
6c977fbf6d0b
permissions
-rw-r--r--

plugins.github: Remove debug prints

119
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
1 local url = require"socket.url";
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
2 local json = require"util.json";
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
3 local http = require"net.http";
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
4
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5 function riddim.plugins.github(bot)
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
6 local conf = bot.config.github;
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
7 local base_url = url.parse("https://api.github.com/repos/x/y/issues/123");
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
8 local base_path = url.parse_path(base_url.path);
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
9 base_path[2], base_path[3] = conf.user, conf.project;
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
10
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
11 local ex = {
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
12 headers = {
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
13 Accept = "application/vnd.github.v3+json";
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
14 };
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
15 };
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
16
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
17 local function issue_url(number)
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
18 base_path[5] = number;
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
19 base_url.path = url.build_path(base_path);
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
20 local url = url.build(base_url);
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
21 return url;
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
22 end
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
23
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
24 bot:hook("commands/issue", function (command)
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
25 local issue_id = tonumber(command.param);
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
26 if not issue_id then return; end
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
27 assert(http.request(issue_url(issue_id), ex, function (issue, code)
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
28 if code > 400 then
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
29 return command:reply("HTTP Error "..code.." :(");
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
30 end
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
31 issue = issue and json.decode(issue);
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
32 if not issue then
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
33 return command:reply("Got invalid JSON back :(");
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
34 end
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
35 command:reply(("%s #%d\n%s"):format(issue.title, issue.number issue.html_url));
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
36 end));
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
37 return true;
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
38 end);
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
39
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
40 local function check_for_issue_id(message)
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
41 local issue_id = message.body and message.body:match"#(%d+)";
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
42 if issue_id then
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
43 return bot:event("commands/issue", { param = issue_id, reply = message.reply, });
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
44 end
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
45 end
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
46
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
47 bot:hook("message", check_for_issue_id);
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
48
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
49 bot:hook("groupchat/joining", function (room)
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
50 room:hook("message", check_for_issue_id);
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
51 end);
e09157903d93 Add plugin for fetching issue info from GitHub
Kim Alvefur <zash@zash.se>
parents:
diff changeset
52 end

mercurial