Skip to content
This repository was archived by the owner on Jun 17, 2022. It is now read-only.

Commit f3f2d5f

Browse files
committed
Add: Support handling Release events.
1 parent c126ab9 commit f3f2d5f

File tree

4 files changed

+159
-2
lines changed

4 files changed

+159
-2
lines changed

src/class/github/push.class.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,12 @@ public function getMessage(): string
3232
推送者: [{$body['pusher']['name']}({$body['pusher']['email']})]({$body['sender']['html_url']})
3333
EOF;
3434
foreach ($body['commits'] as $commit) {
35+
$timestamp = UTC_to_time($commit['timestamp']);
3536
$message .= <<<EOF
3637
3738
> Commit {$commit['id']}:
3839
> {$commit['message']}
39-
> on {$commit['timestamp']}
40+
> on {$timestamp}
4041
> [查看详情]({$commit['url']})
4142
4243
EOF;

src/class/github/release.class.php

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
<?php
2+
3+
namespace GitHub;
4+
5+
use Exception;
6+
use stdClass;
7+
use WeWork\markdown;
8+
9+
class release extends github
10+
{
11+
function __construct($data = null)
12+
{
13+
$this->setEvent("release");
14+
if ($data != null) {
15+
$this->setData($data);
16+
}
17+
}
18+
19+
/**w
20+
* @throws Exception
21+
*/
22+
public function getMessage(): string {
23+
if (!$this->isSet()) {
24+
throw new Exception("未设置data或event");
25+
}
26+
$data = $this->data;
27+
$action = $data['action'];
28+
$message = new markdown();
29+
30+
switch ($action) {
31+
case "released": //发布
32+
// 初始化
33+
$release = new stdClass();
34+
$release->web_url = $data['release']['html_url'];
35+
$release->version = $data['release']['tag_name'];
36+
$release->name = $data['release']['name'];
37+
$release->describe = $data['release']['body'];
38+
$release->download->tar = $data['release']['tarball_url'];
39+
$release->download->zip = $data['release']['zipball_url'];
40+
41+
$sender = new stdClass();
42+
$sender->name = $data['sender']['login'];
43+
$sender->url = $data['sender']['html_url'];
44+
45+
$repository = new stdClass();
46+
$repository->name = $data['repository']['name'];
47+
$repository->isPrivate = (bool)$data['repository']['private'];
48+
$repository->url = $data['repository']['html_url'];
49+
50+
51+
$message->addTitle("有新的**Release**发布: ".$message->getLink($release->name,$release->web_url));
52+
$message->addText($release->describe);
53+
$message->addText("版本: ".$release->version);
54+
$message->addLine();
55+
$message->addText("发布者: ".$message->getLink($sender->name,$sender->url));
56+
$message->addText("仓库: ".$message->getLink($repository->name,$repository->url));
57+
if(!$repository->isPrivate) {
58+
$message->addLine();
59+
$message->addText($message->getLink("下载tar.gz格式源代码",$release->download->tar));
60+
$message->addText($message->getLink("下载zip格式源代码",$release->download->zip));
61+
}
62+
break;
63+
case "prereleased": //预发布
64+
// 初始化
65+
$release = new stdClass();
66+
$release->web_url = $data['release']['html_url'];
67+
$release->name = $data['release']['name'];
68+
$release->describe = $data['release']['body'];
69+
$release->download->tar = $data['release']['tarball_url'];
70+
$release->download->zip = $data['release']['zipball_url'];
71+
72+
$sender = new stdClass();
73+
$sender->name = $data['sender']['login'];
74+
$sender->url = $data['sender']['html_url'];
75+
76+
$repository = new stdClass();
77+
$repository->name = $data['repository']['name'];
78+
$repository->isPrivate = (bool)$data['repository']['private'];
79+
$repository->url = $data['repository']['html_url'];
80+
81+
82+
$message->addTitle("有新的**Release**预发布: ".$message->getLink($release->name,$release->web_url));
83+
$message->addText($release->describe);
84+
$message->addLine();
85+
$message->addText("发布者: ".$message->getLink($sender->name,$sender->url));
86+
$message->addText("仓库: ".$message->getLink($repository->name,$repository->url));
87+
if(!$repository->isPrivate) {
88+
$message->addLine();
89+
$message->addText($message->getLink("下载tar.gz格式源代码",$release->download->tar));
90+
$message->addText($message->getLink("下载zip格式源代码",$release->download->zip));
91+
}
92+
break;
93+
case "edited": //编辑
94+
// 初始化
95+
$release = new stdClass();
96+
$release->web_url = $data['release']['html_url'];
97+
$release->name = $data['release']['name'];
98+
99+
$sender = new stdClass();
100+
$sender->name = $data['sender']['login'];
101+
$sender->url = $data['sender']['html_url'];
102+
103+
$repository = new stdClass();
104+
$repository->name = $data['repository']['name'];
105+
$repository->url = $data['repository']['html_url'];
106+
107+
108+
$message->addTitle("**Release**被编辑: ".$message->getLink($release->name,$release->web_url));
109+
$message->addText("操作者: ".$message->getLink($sender->name,$sender->url));
110+
$message->addText("仓库: ".$message->getLink($repository->name,$repository->url));
111+
break;
112+
case "deleted": //删除
113+
// 初始化
114+
$release = new stdClass();
115+
$release->web_url = $data['release']['html_url'];
116+
$release->name = $data['release']['name'];
117+
118+
$sender = new stdClass();
119+
$sender->name = $data['sender']['login'];
120+
$sender->url = $data['sender']['html_url'];
121+
122+
$repository = new stdClass();
123+
$repository->name = $data['repository']['name'];
124+
$repository->url = $data['repository']['html_url'];
125+
126+
127+
$message->addTitle("**Release**被删除: ".$message->getLink($release->name,$release->web_url));
128+
$message->addText("操作者: ".$message->getLink($sender->name,$sender->url));
129+
$message->addText("仓库: ".$message->getLink($repository->name,$repository->url));
130+
break;
131+
default:
132+
die();
133+
}
134+
return $message->message();
135+
}
136+
}

src/class/wework/markdown.class.php

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,20 @@ public function message(): string
6565
* @param string $text 文字内容
6666
* @return bool
6767
*/
68-
public function addText(string $text): bool
68+
public function addText(string $text = ""): bool
6969
{
7070
return $this->addMessage($text);
7171
}
7272

73+
/**
74+
* @describe 添加空行
75+
* @return bool
76+
*/
77+
public function addLine(): bool
78+
{
79+
return $this->addMessage("");
80+
}
81+
7382
/**
7483
* @describe 添加一段列表
7584
* @param string|array $list

src/index.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
use GitHub\issues;
44
use GitHub\pullrequest;
55
use GitHub\push;
6+
use GitHub\release;
67
use WeWork\GroupBot;
78

89
require_once __DIR__ . "/class/wework/autoload.php";
@@ -71,6 +72,16 @@ function main_handler($event, $context)
7172
$wechat->sendMessage($e->getCode() . "error: " . $e->getMessage());
7273
}
7374
break;
75+
case "release":
76+
$github = new release($body);
77+
try {
78+
$message = $github->getMessage();
79+
echo $message;
80+
$res = $wechat->sendMarkdownMessage($message);
81+
} catch (Exception $e) {
82+
$wechat->sendMessage($e->getCode() . "error: " . $e->getMessage());
83+
}
84+
break;
7485
}
7586

7687
return [

0 commit comments

Comments
 (0)