Browse Source

initial support for post receive hooks

This provides the structs needed to unmarshal the "old-style" post
receive hooks that are sent for push events.  Because the formats
differ in sometimes subtle ways from the rest of the API, some types are
duplicated.  I suspect we may also need to duplicate the Repository
type at some point, since there are some differences there as well.  For
now this is just using the normal Repository type.

Thanks to both @wlynch92 and @imjasonh who kept pushing on this and
provided the original patches that this is based on.
Will Norris 13 years ago
parent
commit
023e8db8cb
1 changed files with 51 additions and 0 deletions
  1. +51
    -0
      github/webhooks.go

+ 51
- 0
github/webhooks.go View File

@ -0,0 +1,51 @@
// Copyright 2013 The go-github AUTHORS. All rights reserved.
//
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package github
import "time"
// WebHookPayload represents the data that is received from GitHub when a push
// event hook is triggered. The format of these payloads pre-date most of the
// GitHub v3 API, so there are lots of minor incompatibilities with the types
// defined in the rest of the API. Therefore, several types are duplicated
// here to account for these differences.
//
// GitHub API docs: https://help.github.com/articles/post-receive-hooks
type WebHookPayload struct {
After string `json:"after,omitempty"`
Before string `json:"before,omitempty"`
Commits []WebHookCommit `json:"commits,omitempty"`
Compare string `json:"compare,omitempty"`
Created bool `json:"created,omitempty"`
Deleted bool `json:"deleted,omitempty"`
Forced bool `json:"forced,omitempty"`
HeadCommit *WebHookCommit `json:"head_commit,omitempty"`
Pusher *User `json:"pusher,omitempty"`
Ref string `json:"ref,omitempty"`
Repo *Repository `json:"repository,omitempty"`
}
// WebHookCommit represents the commit variant we receive from GitHub in a
// WebHookPayload.
type WebHookCommit struct {
Added []string `json:"added,omitempty"`
Author WebHookAuthor `json:"author,omitempty"`
Committer WebHookAuthor `json:"committer,omitempty"`
Distinct bool `json:"distinct,omitempty"`
ID string `json:"id,omitempty"`
Message string `json:"message,omitempty"`
Modified []string `json:"modified,omitempty"`
Removed []string `json:"removed,omitempty"`
Timestamp *time.Time `json:"timestamp,omitempty"`
}
// WebHookAuthor represents the author or committer of a commit, as specified
// in a WebHookCommit. The commit author may not correspond to a GitHub User.
type WebHookAuthor struct {
Email string `json:"email,omitempty"`
Name string `json:"name,omitempty"`
Username string `json:"username,omitempty"`
}

Loading…
Cancel
Save