kurozumi / github-webhook-bundle
Installs: 83
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:symfony-bundle
Requires
- php: >=8.1
- symfony/config: ^5.4|^6.0|^7.0
- symfony/dependency-injection: ^5.4|^6.0|^7.0
- symfony/remote-event: ^5.4|^6.0|^7.0
- symfony/webhook: ^5.4|^6.0|^7.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.64
- symfony/test-pack: ^1.1
README
Installation
composer require kurozumi/github-webhook-bundle
The configuration:
# .env WEBHOOK_GITHUB_SECRET=1z9Y48dbgqxZi...
Webhook
Create a route:
framework: webhook: routing: github: service: webhook.request_parser.github secret: '%env(WEBHOOK_GITHUB_SECRET)%'
And a consume:
use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\RemoteEvent\Attribute\AsRemoteEventConsumer; use Symfony\Component\RemoteEvent\Consumer\ConsumerInterface; use Symfony\Component\RemoteEvent\RemoteEvent; #[AsRemoteEventConsumer(name: 'github')] final class GithubConsumer implements ConsumerInterface { public function __construct( private EventDispatcherInterface $eventDispatcher, ) { } public function consume(RemoteEvent $event): void { $this->eventDispatcher->dispatch($event, $event->getName()); } }
How to use
use Symfony\Component\EventDispatcher\EventSubscriberInterface use Symfony\Component\RemoteEvent\RemoteEvent; class GithubWebhookListener implements EventSubscriberInterface { public static function getSubscribedEvents(): array { return [ 'pull_request' => 'onPullRequest', ] } public function onPullRequest(RemoteEvent $event): void { $payload = $event->getPayload(); // do something } }
Webhook events and payloads
https://docs.github.com/en/webhooks/webhook-events-and-payloads