thecodingmachine / gitlab-hook-middleware
用于管理 Gitlab 钩子的 PSR-15 中间件。
v1.0.1
2019-09-10 10:00 UTC
Requires
- php: >=7.1
- psr/container: ^1
- psr/http-message: ^1
- psr/http-server-handler: ^1
- psr/http-server-middleware: ^1
- psr/log: ^1
- thecodingmachine/funky: ^1
- zendframework/zend-diactoros: ^1.8.5
Requires (Dev)
- maglnet/composer-require-checker: ^1.0
- mnapoli/simplex: ^0.5
- php-coveralls/php-coveralls: ^2
- phpstan/phpstan: ^0.10.3
- phpunit/phpunit: ^7.3.1
- squizlabs/php_codesniffer: ^3.3.1
- thecodingmachine/discovery: ^1
- thecodingmachine/phpstan-strict-rules: ^0.10.3
This package is auto-updated.
Last update: 2024-09-10 21:24:05 UTC
README
Gitlab 钩子 PSR-15 中间件
本包是一个 PSR-15 中间件,用于接收由 Gitlab 钩子发送的事件并将它们发送到监听器。
可以直接使用 hookReceiver 构建事件对象,但您可以检查 Gitlab 认证。
工作原理
中间件检查名为 X-GITLAB-TOKEN 的头部并构建一个事件对象。该对象被分发给您必须实现的监听器。
中间件负责反序列化有效负载,并以美观的 PHP 对象的形式提供给您,而不是原始 JSON 数据。您可以使用 getPayload() 函数获取初始的数组有效负载。
您的监听器将接收到所有事件。如果您想监听特定的事件类型,您必须检查对象类型。
事件列表
示例
监听器实现
<?php namespace Test; class Listener implements HookListenerInterface { /** * @param \TheCodingMachine\GitlabHook\EventInterface $event */ public function onEvent(EventInterface $event) { // Compute Push event if($event instanceof TheCodingMachine\GitlabHook\Model\Push::class) { // Display before echo $event->getBefore(); // Display the project name echo $event->getProject()->getName(); } // Compute MergeRequest event if($event instanceof TheCodingMachine\GitlabHook\Model\MergeRequest::class) { // Display target branch (this is in object_attributes) echo $event->getTargetBranch(); // Get initial payload var_dump($event->getPayload()); } } } ?>
不使用中间件使用
// Create your listener $listener = new Test\Listerner(); // Register your listener in the main HookReceiver instance $hookReceiver = new TheCodingMachine\GitlabHook\HookReceiver([$listener]); // Call handler function to execute check // $payload is array (json_decode) of data send by Gitlab webhook // $header is the result of HTTP_X_GITLAB_TOKEN header $hookReceiver->handle($payload, $header);
使用中间件使用
// Create your listener $listener = new Test\Listerner(); // Register your listener in the main HookReceiver instance $hookReceiver = new TheCodingMachine\GitlabHook\HookReceiver([$listener]); // Create a PSR-3 logger $logger = new Psr\Log\NullLogger(); // Inject hookReceiver in Gitlab middleware // You must inject this middleware in the middleware pipe of your favorite framework. // See your framework documentation on how to do that. $middleware = new TheCodingMachine\GitlabHook\GitlabHookMiddleware($hookReceiver, 'secret', $logger);