stichoza / jira-webhooks-data
用于处理和操作 Atlassian Jira webhook 数据结构的 PHP 类
v5.0.4
2023-07-24 23:10 UTC
Requires
- php: ^8.2
- ext-mbstring: *
Requires (Dev)
- fzaninotto/faker: ^1.9.1
- phpunit/phpunit: ^10.1
README
这是一个用于处理和操作 Atlassian Jira webhook 数据的 PHP 库。
如果您正在寻找带有事件和路由的 Laravel 包,请查看包含此包作为数据结构的 stichoza/jira-webhooks-laravel 包。
注意: 此包最初是从 kommuna/jirawebhook 分支出来的,它旨在与 kommuna/vicky 一起使用,并支持 League 事件和消息转换器。另一方面,由于整个结构已重写,因此不再与原始存储库兼容。向原始包的开发者致敬!
安装
使用 Composer 安装此包
composer require stichoza/jira-webhook-data
使用方法
// Example payload received from Jira webhook $data = [ "timestamp" => 1629835026055, "webhookEvent" => "jira:issue_updated", // ... other webhook data ... "issue" => [ // ... issue data ... ], "changelog" => [ // ... changelog data ... ], // ... other data ... ];
创建 JiraWebhookData
实例
use Stichoza\JiraWebhooksData\Models\JiraWebhookData; $webhookData = new JiraWebhookData($data);
现在您可以访问 webhook 的解析数据
$message = 'New comment by ' . $webhookData->comment->author->displayName . ' on issue ' . $webhookData->issue->key; . ': ' . $webhookData->comment->body;
以下列出了更多属性
$timestamp = $webhookData->timestamp; $webhookEvent = $webhookData->webhookEvent; $issueEvent = $webhookData->issueEvent; $user = $webhookData->user; // JiraUser instance $issue = $webhookData->issue; // JiraIssue instance $changelog = $webhookData->changelog; // JiraChangelog instance $worklog = $webhookData->worklog; // JiraWorklog instance
从 JiraIssue
实例访问特定属性
$issueId = $issue->id; $issueKey = $issue->key; $issueTypeName = $issue->issueTypeName; $priorityName = $issue->priorityName;
从 JiraUser
实例访问特定属性
if ($user) { $userAccountId = $user->accountId; $userDisplayName = $user->displayName; // ... and other properties ... }
从 JiraChangelog
实例访问特定属性
$changelogId = $changelog->id; $changelogItems = $changelog->items; // Array of JiraChangelogItem instances // ... and other properties ...
您还可以根据解析的数据执行额外的检查或操作
if ($issue && $issue->isStatusResolved()) { // Do something for resolved issues } if ($user && $user->active) { // Do something for active users }
在 src/Models
文件夹中了解更多关于属性和方法的信息。
错误处理
当提供的数据不正确或不足时,对象构造函数将抛出 Stichoza\JiraWebhooksData\Exceptions\JiraWebhookDataException
异常。请确保在 try-catch 块中包裹您的代码。
use Stichoza\JiraWebhooksData\Models\JiraWebhookData; use Stichoza\JiraWebhooksData\Exceptions\JiraWebhookDataException; try { $webhookData = new JiraWebhookData($data); } catch (JiraWebhookDataException $e) { // Handle the error }
此外,请注意,某些属性将不会根据 Jira 事件出现在响应中。请确保检查对象/属性不是 null。
$to = $webhookData->issue?->assignee?->email; if ($to !== null) { // Do something }