stichoza/jira-webhooks-data

用于处理和操作 Atlassian Jira webhook 数据结构的 PHP 类

v5.0.4 2023-07-24 23:10 UTC

This package is auto-updated.

Last update: 2024-08-25 01:30:21 UTC


README

Latest Stable Version Total Downloads Downloads Month Petreon donation PayPal donation

这是一个用于处理和操作 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
}