swop / github-webhook-bundle
Symfony 扩展包,旨在简化 GitHub Webhook 处理。
v1.0
2016-11-22 02:08 UTC
Requires
- php: >=5.4
- psr/http-message: ^1.0
- psr/log: ^1.0
- sensio/framework-extra-bundle: ^3.0
- swop/github-webhook: ^2.0
- symfony/config: ^2.3|^3.0
- symfony/dependency-injection: ^2.3|^3.0
- symfony/event-dispatcher: ^2.3|^3.0
- symfony/http-foundation: ^2.3|^3.0
- symfony/http-kernel: ^2.3|^3.0
- symfony/psr-http-message-bridge: ^1.0
- zendframework/zend-diactoros: ^1.3
Requires (Dev)
- phpunit/phpunit: ^4.5.0
This package is not auto-updated.
Last update: 2024-09-23 14:33:52 UTC
README
此扩展包旨在降低创建 GitHub Webhook 应用时的复杂性。
安装
推荐通过 Composer 安装此扩展包
composer require "swop/github-webhook-bundle"
然后,将扩展包注册到您的 AppKernel
类中。请注意,此扩展包依赖于 SensioFrameworkExtraBundle
扩展包才能正常工作。
<?php class AppKernel extends Kernel { public function registerBundles() { $bundles = [ // ... new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(), new Swop\Bundle\GitHubWebHookBundle\GitHubWebHookBundle() ]; // ... } }
使用方法
只需在您的控制器中使用 GitHubWebHook
注解来标记它们为 GitHub Webhook 控制器
<?php namespace AppBundle\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Swop\GitHubWebHook\Event\GitHubEvent; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Swop\Bundle\GitHubWebHookBundle\Annotation\GitHubWebHook; class DefaultController extends Controller { /** * @Route("/webhook", name="webhook") * * @GitHubWebHook(eventType="push") * @GitHubWebHook(eventType="pull_request") */ public function indexAction(GitHubEvent $gitHubEvent) { $payload = $gitHubEvent->getPayload(); // Request payload (array) $eventType = $gitHubEvent->getType(); // "pull" or "pull_request" // Do something depending on the payload & the event type... return ['status' => 'success']; } }
通过声明您的控制器是 GitHub Webhook,扩展包将为您执行以下操作
-
它会检查传入的 Webhook 事件是否被您的控制器 支持。如果不支持,将自动返回
400
JSON 响应。 -
它将验证传入的请求 是否有正确的签名,使用 Webhook 特定密钥(见“注解参考”)或默认密钥(见“扩展包配置参考”)。如果请求签名无效,将自动返回
403
JSON 响应。 -
它将构建一个
GitHubEvent
对象,并将其注入到控制器参数中。 -
它将管理您在控制器中返回的数据的序列化,从而向 GitHub 返回
200
JSON 响应。
配置
扩展包配置参考
github_webhook: default_secret: my_secret
default_secret
:在验证传入请求签名时在每个钩子中使用的默认密钥。
注解参考
简单事件类型处理(只响应 push
事件)
<?php /** * @GitHubWebHook(eventType="push") */
多事件类型处理(响应 push
和 pull_request
事件)
<?php /** * @GitHubWebHook(eventType="push") * @GitHubWebHook(eventType="pull_request") */
为签名验证配置专用密钥
<?php /** * @GitHubWebHook(eventType="push", secret="push_secret") * @GitHubWebHook(eventType="pull_request", secret="pr_secret") */
您还可以依靠容器参数来配置要使用的密钥
<?php /** * @GitHubWebHook(eventType="push", secret="%hook.push.secret%") */
贡献
参见 CONTRIBUTING 文件。
原始信用
- Sylvain MAUDUIT (@Swop) 为主要作者。
许可
此库在 MIT 许可证下发布。请参阅捆绑的 LICENSE 文件中的完整许可证。