github webhook payload, perl dancer2 참고

Payload 참고


[Plack::Sandbox::_2fhome_2fimyaman_2fwebhook_2dgithub_2ddevopskoreaorg_2fapp_2epl:9715] debug @2019-04-10 23:54:51> $VAR1 = {
          'pusher' => {
                        'name' => 'imyaman',
                        'email' => 'imyaman@netscape.net'
                      },
          'deleted' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ),
          'repository' => {
                            'updated_at' => '2019-04-10T14:52:41Z',
                            'issues_url' => 'https://api.github.com/repos/imyaman/sys5-co/issues{/number}',
                            'created_at' => 1498210322,
                            'tags_url' => 'https://api.github.com/repos/imyaman/sys5-co/tags',
                            'issue_comment_url' => 'https://api.github.com/repos/imyaman/sys5-co/issues/comments{/number}',
                            'contributors_url' => 'https://api.github.com/repos/imyaman/sys5-co/contributors',
                            'comments_url' => 'https://api.github.com/repos/imyaman/sys5-co/comments{/number}',
                            'watchers' => 0,
                            'git_tags_url' => 'https://api.github.com/repos/imyaman/sys5-co/git/tags{/sha}',
                            'compare_url' => 'https://api.github.com/repos/imyaman/sys5-co/compare/{base}...{head}',
                            'id' => 95205676,
                            'assignees_url' => 'https://api.github.com/repos/imyaman/sys5-co/assignees{/user}',
                            'archived' => $VAR1->{'deleted'},
                            'url' => 'https://github.com/imyaman/sys5-co',
                            'collaborators_url' => 'https://api.github.com/repos/imyaman/sys5-co/collaborators{/collaborator}',
                            'html_url' => 'https://github.com/imyaman/sys5-co',
                            'commits_url' => 'https://api.github.com/repos/imyaman/sys5-co/commits{/sha}',
                            'issue_events_url' => 'https://api.github.com/repos/imyaman/sys5-co/issues/events{/number}',
                            'notifications_url' => 'https://api.github.com/repos/imyaman/sys5-co/notifications{?since,all,participating}',
                            'svn_url' => 'https://github.com/imyaman/sys5-co',
                            'fork' => $VAR1->{'deleted'},
                            'git_refs_url' => 'https://api.github.com/repos/imyaman/sys5-co/git/refs{/sha}',
                            'forks_url' => 'https://api.github.com/repos/imyaman/sys5-co/forks',
                            'contents_url' => 'https://api.github.com/repos/imyaman/sys5-co/contents/{+path}',
                            'size' => 1454,
                            'has_downloads' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ),
                            'node_id' => 'MDEwOlJlcG9zaXRvcnk5NTIwNTY3Ng==',
                            'labels_url' => 'https://api.github.com/repos/imyaman/sys5-co/labels{/name}',
                            'milestones_url' => 'https://api.github.com/repos/imyaman/sys5-co/milestones{/number}',
                            'has_projects' => $VAR1->{'repository'}{'has_downloads'},
                            'ssh_url' => 'git@github.com:imyaman/sys5-co.git',
                            'keys_url' => 'https://api.github.com/repos/imyaman/sys5-co/keys{/key_id}',
                            'merges_url' => 'https://api.github.com/repos/imyaman/sys5-co/merges',
                            'watchers_count' => 0,
                            'trees_url' => 'https://api.github.com/repos/imyaman/sys5-co/git/trees{/sha}',
                            'private' => $VAR1->{'deleted'},
                            'statuses_url' => 'https://api.github.com/repos/imyaman/sys5-co/statuses/{sha}',
                            'has_issues' => $VAR1->{'repository'}{'has_downloads'},
                            'downloads_url' => 'https://api.github.com/repos/imyaman/sys5-co/downloads',
                            'deployments_url' => 'https://api.github.com/repos/imyaman/sys5-co/deployments',
                            'full_name' => 'imyaman/sys5-co',
                            'stargazers_url' => 'https://api.github.com/repos/imyaman/sys5-co/stargazers',
                            'blobs_url' => 'https://api.github.com/repos/imyaman/sys5-co/git/blobs{/sha}',
                            'default_branch' => 'master',
                            'languages_url' => 'https://api.github.com/repos/imyaman/sys5-co/languages',
                            'stargazers' => 0,
                            'description' => undef,
                            'teams_url' => 'https://api.github.com/repos/imyaman/sys5-co/teams',
                            'stargazers_count' => 0,
                            'git_commits_url' => 'https://api.github.com/repos/imyaman/sys5-co/git/commits{/sha}',
                            'owner' => {
                                         'organizations_url' => 'https://api.github.com/users/imyaman/orgs',
                                         'avatar_url' => 'https://avatars0.githubusercontent.com/u/1654540?v=4',
                                         'gravatar_id' => '',
                                         'id' => 1654540,
                                         'received_events_url' => 'https://api.github.com/users/imyaman/received_events',
                                         'node_id' => 'MDQ6VXNlcjE2NTQ1NDA=',
                                         'email' => 'imyaman@netscape.net',
                                         'name' => 'imyaman',
                                         'following_url' => 'https://api.github.com/users/imyaman/following{/other_user}',
                                         'html_url' => 'https://github.com/imyaman',
                                         'login' => 'imyaman',
                                         'url' => 'https://api.github.com/users/imyaman',
                                         'site_admin' => $VAR1->{'deleted'},
                                         'subscriptions_url' => 'https://api.github.com/users/imyaman/subscriptions',
                                         'starred_url' => 'https://api.github.com/users/imyaman/starred{/owner}{/repo}',
                                         'type' => 'User',
                                         'repos_url' => 'https://api.github.com/users/imyaman/repos',
                                         'events_url' => 'https://api.github.com/users/imyaman/events{/privacy}',
                                         'gists_url' => 'https://api.github.com/users/imyaman/gists{/gist_id}',
                                         'followers_url' => 'https://api.github.com/users/imyaman/followers'
                                       },
                            'hooks_url' => 'https://api.github.com/repos/imyaman/sys5-co/hooks',
                            'archive_url' => 'https://api.github.com/repos/imyaman/sys5-co/{archive_format}{/ref}',
                            'name' => 'sys5-co',
                            'pulls_url' => 'https://api.github.com/repos/imyaman/sys5-co/pulls{/number}',
                            'subscribers_url' => 'https://api.github.com/repos/imyaman/sys5-co/subscribers',
                            'license' => {
                                           'url' => undef,
                                           'node_id' => 'MDc6TGljZW5zZTA=',
                                           'name' => 'Other',
                                           'key' => 'other',
                                           'spdx_id' => 'NOASSERTION'
                                         },
                            'mirror_url' => undef,
                            'open_issues' => 0,
                            'forks' => 0,
                            'language' => 'HTML',
                            'pushed_at' => 1554908091,
                            'events_url' => 'https://api.github.com/repos/imyaman/sys5-co/events',
                            'master_branch' => 'master',
                            'git_url' => 'git://github.com/imyaman/sys5-co.git',
                            'subscription_url' => 'https://api.github.com/repos/imyaman/sys5-co/subscription',
                            'homepage' => undef,
                            'open_issues_count' => 0,
                            'clone_url' => 'https://github.com/imyaman/sys5-co.git',
                            'branches_url' => 'https://api.github.com/repos/imyaman/sys5-co/branches{/branch}',
                            'releases_url' => 'https://api.github.com/repos/imyaman/sys5-co/releases{/id}',
                            'has_pages' => $VAR1->{'deleted'},
                            'has_wiki' => $VAR1->{'repository'}{'has_downloads'},
                            'forks_count' => 0,
                            'disabled' => $VAR1->{'deleted'}
                          },
          'forced' => $VAR1->{'deleted'},
          'sender' => {
                        'repos_url' => 'https://api.github.com/users/imyaman/repos',
                        'type' => 'User',
                        'followers_url' => 'https://api.github.com/users/imyaman/followers',
                        'events_url' => 'https://api.github.com/users/imyaman/events{/privacy}',
                        'gists_url' => 'https://api.github.com/users/imyaman/gists{/gist_id}',
                        'node_id' => 'MDQ6VXNlcjE2NTQ1NDA=',
                        'received_events_url' => 'https://api.github.com/users/imyaman/received_events',
                        'gravatar_id' => '',
                        'avatar_url' => 'https://avatars0.githubusercontent.com/u/1654540?v=4',
                        'id' => 1654540,
                        'organizations_url' => 'https://api.github.com/users/imyaman/orgs',
                        'starred_url' => 'https://api.github.com/users/imyaman/starred{/owner}{/repo}',
                        'subscriptions_url' => 'https://api.github.com/users/imyaman/subscriptions',
                        'url' => 'https://api.github.com/users/imyaman',
                        'site_admin' => $VAR1->{'deleted'},
                        'login' => 'imyaman',
                        'html_url' => 'https://github.com/imyaman',
                        'following_url' => 'https://api.github.com/users/imyaman/following{/other_user}'
                      },
          'head_commit' => {
                             'distinct' => $VAR1->{'repository'}{'has_downloads'},
                             'message' => 'Update+happytalk.html',
                             'id' => '726ce0521cfc061c0f12d63e5970bee51bdd7d84',
                             'removed' => [],
                             'modified' => [
                                             'happytalk.html'
                                           ],
                             'tree_id' => '4bcb4192c801ad493158abc88606106339bac87d',
                             'author' => {
                                           'name' => 'Sangyong+Gwak',
                                           'email' => 'imyaman@netscape.net',
                                           'username' => 'imyaman'
                                         },
                             'url' => 'https://github.com/imyaman/sys5-co/commit/726ce0521cfc061c0f12d63e5970bee51bdd7d84',
                             'timestamp' => '2019-04-10T23:54:50+09:00',
                             'committer' => {
                                              'email' => 'noreply@github.com',
                                              'name' => 'GitHub',
                                              'username' => 'web-flow'
                                            },
                             'added' => []
                           },
          'base_ref' => undef,
          'compare' => 'https://github.com/imyaman/sys5-co/compare/65342976598d...726ce0521cfc',
          'ref' => 'refs/heads/master',
          'created' => $VAR1->{'deleted'},
          'after' => '726ce0521cfc061c0f12d63e5970bee51bdd7d84',
          'before' => '65342976598dd6f5ed0ec43dccdfb2a8b84a680f',
          'commits' => [
                         {
                           'removed' => [],
                           'id' => '726ce0521cfc061c0f12d63e5970bee51bdd7d84',
                           'message' => 'Update+happytalk.html',
                           'distinct' => $VAR1->{'repository'}{'has_downloads'},
                           'author' => {
                                         'name' => 'Sangyong+Gwak',
                                         'email' => 'imyaman@netscape.net',
                                         'username' => 'imyaman'
                                       },
                           'tree_id' => '4bcb4192c801ad493158abc88606106339bac87d',
                           'modified' => [
                                           'happytalk.html'
                                         ],
                           'url' => 'https://github.com/imyaman/sys5-co/commit/726ce0521cfc061c0f12d63e5970bee51bdd7d84',
                           'committer' => {
                                            'username' => 'web-flow',
                                            'name' => 'GitHub',
                                            'email' => 'noreply@github.com'
                                          },
                           'added' => [],
                           'timestamp' => '2019-04-10T23:54:50+09:00'
                         }
                       ]
        }; in /home/imyaman/webhook-github-devopskoreaorg/app.pl l. 42
[Plack::Sandbox::_2fhome_2fimyaman_2fwebhook_2dgithub_2ddevopskoreaorg_2fapp_2epl:9715] debug @2019-04-10 23:54:51> undef in /home/imyaman/webhook-github-devopskoreaorg/app.pl l. 44

  my ($mybody, $mypayload, $mypayloadjson);
  $mybody = request -> body;
  $mypayload = $mybody;
  $mypayload =~ s/payload=//;
  $mypayload = uri_decode($mypayload);
  $mypayloadjson = from_json($mypayload);
  debug Dumper($mypayloadjson);