mirror of
https://github.com/matrix-construct/construct
synced 2024-11-19 00:10:59 +01:00
modules/webhook: Add github issues handler.
This commit is contained in:
parent
79dc0955b4
commit
e491cf5694
1 changed files with 81 additions and 0 deletions
|
@ -100,6 +100,10 @@ static std::ostream &
|
||||||
github_handle__pull_request(std::ostream &,
|
github_handle__pull_request(std::ostream &,
|
||||||
const json::object &content);
|
const json::object &content);
|
||||||
|
|
||||||
|
static std::ostream &
|
||||||
|
github_handle__issues(std::ostream &,
|
||||||
|
const json::object &content);
|
||||||
|
|
||||||
static std::ostream &
|
static std::ostream &
|
||||||
github_handle__ping(std::ostream &,
|
github_handle__ping(std::ostream &,
|
||||||
const json::object &content);
|
const json::object &content);
|
||||||
|
@ -155,6 +159,8 @@ github_handle(client &client,
|
||||||
github_handle__push(out, request.content);
|
github_handle__push(out, request.content);
|
||||||
else if(type == "pull_request")
|
else if(type == "pull_request")
|
||||||
github_handle__pull_request(out, request.content);
|
github_handle__pull_request(out, request.content);
|
||||||
|
else if(type == "issues")
|
||||||
|
github_handle__issues(out, request.content);
|
||||||
|
|
||||||
if(!string_view(webhook_room))
|
if(!string_view(webhook_room))
|
||||||
return;
|
return;
|
||||||
|
@ -442,6 +448,81 @@ github_handle__pull_request(std::ostream &out,
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static std::ostream &
|
||||||
|
github_handle__issues(std::ostream &out,
|
||||||
|
const json::object &content)
|
||||||
|
{
|
||||||
|
out << " "
|
||||||
|
<< "<b>"
|
||||||
|
<< unquote(content["action"])
|
||||||
|
<< "</b>"
|
||||||
|
;
|
||||||
|
|
||||||
|
const json::object issue
|
||||||
|
{
|
||||||
|
content["issue"]
|
||||||
|
};
|
||||||
|
|
||||||
|
switch(hash(unquote(content["action"])))
|
||||||
|
{
|
||||||
|
case "assigned"_:
|
||||||
|
case "unassigned"_:
|
||||||
|
{
|
||||||
|
const json::object assignee
|
||||||
|
{
|
||||||
|
content["assignee"]
|
||||||
|
};
|
||||||
|
|
||||||
|
out << " "
|
||||||
|
<< "<a href=\""
|
||||||
|
<< unquote(assignee["html_url"])
|
||||||
|
<< "\">"
|
||||||
|
<< unquote(assignee["login"])
|
||||||
|
<< "</a>"
|
||||||
|
;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
out << " "
|
||||||
|
<< "<a href=\""
|
||||||
|
<< unquote(issue["html_url"])
|
||||||
|
<< "\">"
|
||||||
|
<< "<b><u>"
|
||||||
|
<< unquote(issue["title"])
|
||||||
|
<< "</u></b>"
|
||||||
|
<< "</a>"
|
||||||
|
;
|
||||||
|
|
||||||
|
if(unquote(content["action"]) == "opened")
|
||||||
|
{
|
||||||
|
out << " "
|
||||||
|
<< "<blockquote>"
|
||||||
|
<< "<pre>"
|
||||||
|
;
|
||||||
|
|
||||||
|
static const auto delim("\\r\\n");
|
||||||
|
const auto body(unquote(issue["body"]));
|
||||||
|
auto lines(split(body, delim)); do
|
||||||
|
{
|
||||||
|
out << lines.first
|
||||||
|
<< "<br />"
|
||||||
|
;
|
||||||
|
|
||||||
|
lines = split(lines.second, delim);
|
||||||
|
}
|
||||||
|
while(!empty(lines.second));
|
||||||
|
|
||||||
|
out << ""
|
||||||
|
<< "</pre>"
|
||||||
|
<< "</blockquote>"
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
static std::ostream &
|
static std::ostream &
|
||||||
github_handle__ping(std::ostream &out,
|
github_handle__ping(std::ostream &out,
|
||||||
const json::object &content)
|
const json::object &content)
|
||||||
|
|
Loading…
Reference in a new issue