Plack::App::GitHub::WebHook - GitHub WebHook receiver as Plack application
version 0.2
use Plack::App::GitHub::WebHook; Plack::App::GitHub::WebHook->new( hook => sub { my $payload = shift; return unless $payload->{repository}->{name} eq 'foo-bar'; foreach (@{$payload->{commits}}) { ... } ); # access restriction, as enabled by default Plack::App::GitHub::WebHook->new( hook => sub { ... }, access => [ allow => "204.232.175.64/27", allow => "192.30.252.0/22", deny => 'all' ] ); # alternatively use Plack::Builder; builder { mount 'notify' => builder { enable 'Access', rules => [ allow => "204.232.175.64/27", allow => "192.30.252.0/22", deny => 'all' ] Plack::App::GitHub::WebHook->new( hook => sub { ... } ); } };
This PSGI application receives HTTP POST requests with body parameter payload set to a JSON object. The default use case is to receive GitHub WebHooks.
payload
The response of a HTTP request to this application is one of:
If access was not granted.
If the request was no HTTP POST.
If the payload was no well-formed JSON. A later version of this module may add further validation.
Otherwise. The hook is only called in this case. The hook should not die; a later version of this module may also catch errors.
This module requires at least Perl 5.10.
A code reference that gets passed the encoded payload.
Access restrictions, as passed to Plack::Middleware::Access. See SYNOPSIS for the default value. A recent list of official GitHub WebHook IPs is vailable at https://api.github.com/meta. One should only set the access value on instantiation, or manually call prepare_app after modification.
prepare_app
Jakob Voß
This software is copyright (c) 2013 by Jakob Voß.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
To install Plack::App::GitHub::WebHook, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Plack::App::GitHub::WebHook
CPAN shell
perl -MCPAN -e shell install Plack::App::GitHub::WebHook
For more information on module installation, please visit the detailed CPAN module installation guide.