1package webhook23import "time"45// EventPayload is a webhook event payload.6type EventPayload interface {7 // Event returns the event type.8 Event() Event9 // RepositoryID returns the repository ID.10 RepositoryID() int6411}1213// Common is a common payload.14type Common struct {15 // EventType is the event type.16 EventType Event `json:"event" url:"event"`17 // Repository is the repository payload.18 Repository Repository `json:"repository" url:"repository"`19 // Sender is the sender payload.20 Sender User `json:"sender" url:"sender"`21}2223// Event returns the event type.24// Implements EventPayload.25func (c Common) Event() Event {26 return c.EventType27}2829// RepositoryID returns the repository ID.30// Implements EventPayload.31func (c Common) RepositoryID() int64 {32 return c.Repository.ID33}3435// User represents a user in an event.36type User struct {37 // ID is the owner ID.38 ID int64 `json:"id" url:"id"`39 // Username is the owner username.40 Username string `json:"username" url:"username"`41}4243// Repository represents an event repository.44type Repository struct {45 // ID is the repository ID.46 ID int64 `json:"id" url:"id"`47 // Name is the repository name.48 Name string `json:"name" url:"name"`49 // ProjectName is the repository project name.50 ProjectName string `json:"project_name" url:"project_name"`51 // Description is the repository description.52 Description string `json:"description" url:"description"`53 // DefaultBranch is the repository default branch.54 DefaultBranch string `json:"default_branch" url:"default_branch"`55 // Private is whether the repository is private.56 Private bool `json:"private" url:"private"`57 // Owner is the repository owner.58 Owner User `json:"owner" url:"owner"`59 // HTTPURL is the repository HTTP URL.60 HTTPURL string `json:"http_url" url:"http_url"`61 // SSHURL is the repository SSH URL.62 SSHURL string `json:"ssh_url" url:"ssh_url"`63 // GitURL is the repository Git URL.64 GitURL string `json:"git_url" url:"git_url"`65 // CreatedAt is the repository creation time.66 CreatedAt time.Time `json:"created_at" url:"created_at"`67 // UpdatedAt is the repository last update time.68 UpdatedAt time.Time `json:"updated_at" url:"updated_at"`69}7071// Author is a commit author.72type Author struct {73 // Name is the author name.74 Name string `json:"name" url:"name"`75 // Email is the author email.76 Email string `json:"email" url:"email"`77 // Date is the author date.78 Date time.Time `json:"date" url:"date"`79}8081// Commit represents a Git commit.82type Commit struct {83 // ID is the commit ID.84 ID string `json:"id" url:"id"`85 // Message is the commit message.86 Message string `json:"message" url:"message"`87 // Title is the commit title.88 Title string `json:"title" url:"title"`89 // Author is the commit author.90 Author Author `json:"author" url:"author"`91 // Committer is the commit committer.92 Committer Author `json:"committer" url:"committer"`93 // Timestamp is the commit timestamp.94 Timestamp time.Time `json:"timestamp" url:"timestamp"`95}