diff --git a/coverage.out b/coverage.out new file mode 100644 index 0000000..9cd17f4 --- /dev/null +++ b/coverage.out @@ -0,0 +1,49 @@ +mode: set +github.com/cpalone/gohook/server.go:27.62,34.2 1 1 +github.com/cpalone/gohook/server.go:36.66,38.21 2 1 +github.com/cpalone/gohook/server.go:41.2,45.57 5 1 +github.com/cpalone/gohook/server.go:48.2,48.13 1 1 +github.com/cpalone/gohook/server.go:38.21,40.3 1 0 +github.com/cpalone/gohook/server.go:45.57,47.3 1 0 +github.com/cpalone/gohook/server.go:51.70,53.19 2 1 +github.com/cpalone/gohook/server.go:102.2,102.59 1 1 +github.com/cpalone/gohook/server.go:105.2,109.23 2 1 +github.com/cpalone/gohook/server.go:54.2,55.25 1 1 +github.com/cpalone/gohook/server.go:56.2,57.25 1 1 +github.com/cpalone/gohook/server.go:58.2,59.34 1 1 +github.com/cpalone/gohook/server.go:60.2,61.33 1 0 +github.com/cpalone/gohook/server.go:62.2,63.27 1 0 +github.com/cpalone/gohook/server.go:64.2,65.27 1 1 +github.com/cpalone/gohook/server.go:66.2,67.27 1 0 +github.com/cpalone/gohook/server.go:68.2,69.31 1 1 +github.com/cpalone/gohook/server.go:70.2,71.31 1 0 +github.com/cpalone/gohook/server.go:72.2,73.37 1 0 +github.com/cpalone/gohook/server.go:74.2,75.25 1 0 +github.com/cpalone/gohook/server.go:76.2,77.27 1 0 +github.com/cpalone/gohook/server.go:78.2,79.27 1 0 +github.com/cpalone/gohook/server.go:80.2,81.31 1 0 +github.com/cpalone/gohook/server.go:82.2,83.30 1 0 +github.com/cpalone/gohook/server.go:84.2,85.27 1 0 +github.com/cpalone/gohook/server.go:86.2,87.32 1 0 +github.com/cpalone/gohook/server.go:88.2,89.45 1 0 +github.com/cpalone/gohook/server.go:90.2,91.28 1 0 +github.com/cpalone/gohook/server.go:92.2,93.27 1 0 +github.com/cpalone/gohook/server.go:94.2,95.28 1 1 +github.com/cpalone/gohook/server.go:96.2,97.26 1 1 +github.com/cpalone/gohook/server.go:98.2,100.9 2 0 +github.com/cpalone/gohook/server.go:102.59,104.3 1 0 +github.com/cpalone/gohook/server.go:114.70,117.26 2 1 +github.com/cpalone/gohook/server.go:121.2,121.28 1 1 +github.com/cpalone/gohook/server.go:125.2,126.21 2 1 +github.com/cpalone/gohook/server.go:131.2,132.16 2 1 +github.com/cpalone/gohook/server.go:137.2,137.52 1 1 +github.com/cpalone/gohook/server.go:141.2,141.52 1 1 +github.com/cpalone/gohook/server.go:117.26,119.3 1 0 +github.com/cpalone/gohook/server.go:121.28,123.3 1 0 +github.com/cpalone/gohook/server.go:126.21,129.3 2 0 +github.com/cpalone/gohook/server.go:132.16,135.3 2 0 +github.com/cpalone/gohook/server.go:137.52,140.3 2 0 +github.com/cpalone/gohook/server.go:147.41,149.2 1 1 +github.com/cpalone/gohook/server.go:154.37,155.12 1 1 +github.com/cpalone/gohook/server.go:155.12,157.17 2 1 +github.com/cpalone/gohook/server.go:157.17,159.4 1 0 diff --git a/packet.go b/packet.go index 055186e..7cc5865 100644 --- a/packet.go +++ b/packet.go @@ -2,200 +2,275 @@ package gohook import ( "time" + "json" ) // SenderType represents the structure of the sender field in push/ping events. type SenderType struct { - Login string `json:"login"` - ID int `json:"id"` - AvatarURL string `json:"avatar_url"` - GravatarID string `json:"gravatar_id"` - URL string `json:"url"` - HTMLURL string `json:"html_url"` - FollowersURL string `json:"followers_url"` - FollowingURL string `json:"following_url"` - GistsURL string `json:"gists_url"` - StarredURL string `json:"starred_url"` - SubscriptionsURL string `json:"subscriptions_url"` - OrganizationsURL string `json:"organizations_url"` - ReposURL string `json:"repos_url"` - EventsURL string `json:"events_url"` - ReceivedEventsURL string `json:"received_events_url"` - Type string `json:"type"` - SiteAdmin bool `json:"site_admin"` + Login json.Number `json:"login"` + ID int `json:"id"` + AvatarURL json.Number `json:"avatar_url"` + GravatarID json.Number `json:"gravatar_id"` + URL json.Number `json:"url"` + HTMLURL json.Number `json:"html_url"` + FollowersURL json.Number `json:"followers_url"` + FollowingURL json.Number `json:"following_url"` + GistsURL json.Number `json:"gists_url"` + StarredURL json.Number `json:"starred_url"` + SubscriptionsURL json.Number `json:"subscriptions_url"` + OrganizationsURL json.Number `json:"organizations_url"` + ReposURL json.Number `json:"repos_url"` + EventsURL json.Number `json:"events_url"` + ReceivedEventsURL json.Number `json:"received_events_url"` + Type json.Number `json:"type"` + SiteAdmin bool `json:"site_admin"` } // UserType represents the structure of a user as used in commits. type UserType struct { - Name string `json:"name"` - Email string `json:"email"` - Username string `json:"username"` + Name json.Number `json:"name"` + Email json.Number `json:"email"` + Username json.Number `json:"username"` } // PusherType represents the structure of a user as used in PushEvents. type PusherType struct { - Name string `json:"name"` - Email string `json:"email"` + Name json.Number `json:"name"` + Email json.Number `json:"email"` } // OrgType represents the structure of an organization as used in ping/push events. type OrgType struct { - Login string `json:"login"` - ID int `json:"id"` - URL string `json:"url"` - ReposURL string `json:"repos_url"` - EventsURL string `json:"events_url"` - MembersURL string `json:"members_url"` - PublicMembersURL string `json:"public_members_url"` - AvatarURL string `json:"avatar_url"` - Description string `json:"description"` + Login json.Number `json:"login"` + ID int `json:"id"` + URL json.Number `json:"url"` + ReposURL json.Number `json:"repos_url"` + EventsURL json.Number `json:"events_url"` + MembersURL json.Number `json:"members_url"` + PublicMembersURL json.Number `json:"public_members_url"` + AvatarURL json.Number `json:"avatar_url"` + Description json.Number `json:"description"` } // CommitType represents the structure of a commit as used in push events. type CommitType struct { - ID string `json:"id"` - Distinct bool `json:"distinct"` - Message string `json:"message"` - Timestamp string `json:"timestamp"` - URL string `json:"url"` - Author UserType `json:"author"` - Committer UserType `json:"committer"` - Added []string `json:"added"` - Removed []string `json:"removed"` - Modified []string `json:"modified"` + ID json.Number `json:"id"` + Distinct bool `json:"distinct"` + Message json.Number `json:"message"` + Timestamp json.Number `json:"timestamp"` + URL json.Number `json:"url"` + Author UserType `json:"author"` + Committer UserType `json:"committer"` + Added []string `json:"added"` + Removed []string `json:"removed"` + Modified []string `json:"modified"` } // RepoType represents the structure of a repository as used in push events. type RepoType struct { - ID int `json:"id"` - Name string `json:"name"` - FullName string `json:"full_name"` - Owner SenderType `json:"owner"` - Private bool `json:"private"` - HTMLURL string `json:"html_url"` - Description string `json:"description"` - Fork bool `json:"fork"` - URL string `json:"url"` - ForksURL string `json:"forks_url"` - KeysURL string `json:"keys_url"` - CollaboratorsURL string `json:"collaborators_url"` - TeamsURL string `json:"teams_url"` - HooksURL string `json:"hooks_url"` - IssueEventsURL string `json:"issue_events_url"` - EventsURL string `json:"events_url"` - AssigneesURL string `json:"assignees_url"` - BranchesURL string `json:"branches_url"` - TagsURL string `json:"tags_url"` - BlobsURL string `json:"blobs_url"` - GitTagsURL string `json:"git_tags_url"` - GitRefsURL string `json:"git_refs_url"` - TreesURL string `json:"trees_url"` - StatusesURL string `json:"statuses_url"` - LanguagesURL string `json:"languages_url"` - StargazersURL string `json:"stargazers_url"` - ContributorsURL string `json:"contributors_url"` - SubscribersURL string `json:"subscribers_url"` - SubscriptionURL string `json:"subscription_url"` - CommitsURL string `json:"commits_url"` - GitCommitsURL string `json:"git_commits_url"` - CommentsURL string `json:"comments_url"` - IssueCommentURL string `json:"issue_comment_url"` - ContentsURL string `json:"contents_url"` - CompareURL string `json:"compare_url"` - MergesURL string `json:"mergers_url"` - ArchiveURL string `json:"archive_url"` - DownloadsURL string `json:"downloads_url"` - IssuesURL string `json:"issues_url"` - PullsURL string `json:"pulls_url"` - MilestonesURL string `json:"milestones_url"` - NotificationsURL string `json:"notifications_url"` - LabelsURL string `json:"labels_url"` - ReleasesURL string `json:"releases_url"` - CreatedAt time.Time `json:"created_at"` - UpdatedAt time.Time `json:"updated_at"` - PushedAt time.Time `json:"pushed_at"` - GitURL string `json:"git_url"` - SSHURL string `json:"ssh_url"` - CloneURL string `json:"clone_url"` - SvnURL string `json:"svn_url"` - Homepage string `json:"homepage"` - Size int `json:"size"` - StargazersCount int `json:"stargazers_count"` - WatchersCount int `json:"watchers_count"` - Language string `json:"language"` - HasIssues bool `json:"has_issues"` - HasDownloads bool `json:"has_downloads"` - HasWiki bool `json:"has_wiki"` - HasPages bool `json:"has_pages"` - ForksCount int `json:"forks_count"` - MirrorURL string `json:"mirror_url"` - OpenIssuesCount int `json:"open_issues_count"` - Forks int `json:"forks"` - OpenIssues int `json:"open_issues"` - Watchers int `json:"watchers"` - DefaultBranch string `json:"default_branch"` - Stargazers int `json:"stargazers"` - MasterBranch string `json:"master_branch"` - Organization string `json:"organization"` + ID int `json:"id"` + Name json.Number `json:"name"` + FullName json.Number `json:"full_name"` + Owner SenderType `json:"owner"` + Private bool `json:"private"` + HTMLURL json.Number `json:"html_url"` + Description json.Number `json:"description"` + Fork bool `json:"fork"` + URL json.Number `json:"url"` + ForksURL json.Number `json:"forks_url"` + KeysURL json.Number `json:"keys_url"` + CollaboratorsURL json.Number `json:"collaborators_url"` + TeamsURL json.Number `json:"teams_url"` + HooksURL json.Number `json:"hooks_url"` + IssueEventsURL json.Number `json:"issue_events_url"` + EventsURL json.Number `json:"events_url"` + AssigneesURL json.Number `json:"assignees_url"` + BranchesURL json.Number `json:"branches_url"` + TagsURL json.Number `json:"tags_url"` + BlobsURL json.Number `json:"blobs_url"` + GitTagsURL json.Number `json:"git_tags_url"` + GitRefsURL json.Number `json:"git_refs_url"` + TreesURL json.Number `json:"trees_url"` + StatusesURL json.Number `json:"statuses_url"` + LanguagesURL json.Number `json:"languages_url"` + StargazersURL json.Number `json:"stargazers_url"` + ContributorsURL json.Number `json:"contributors_url"` + SubscribersURL json.Number `json:"subscribers_url"` + SubscriptionURL json.Number `json:"subscription_url"` + CommitsURL json.Number `json:"commits_url"` + GitCommitsURL json.Number `json:"git_commits_url"` + CommentsURL json.Number `json:"comments_url"` + IssueCommentURL json.Number `json:"issue_comment_url"` + ContentsURL json.Number `json:"contents_url"` + CompareURL json.Number `json:"compare_url"` + MergesURL json.Number `json:"mergers_url"` + ArchiveURL json.Number `json:"archive_url"` + DownloadsURL json.Number `json:"downloads_url"` + IssuesURL json.Number `json:"issues_url"` + PullsURL json.Number `json:"pulls_url"` + MilestonesURL json.Number `json:"milestones_url"` + NotificationsURL json.Number `json:"notifications_url"` + LabelsURL json.Number `json:"labels_url"` + ReleasesURL json.Number `json:"releases_url"` + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` + PushedAt time.Time `json:"pushed_at"` + GitURL json.Number `json:"git_url"` + SSHURL json.Number `json:"ssh_url"` + CloneURL json.Number `json:"clone_url"` + SvnURL json.Number `json:"svn_url"` + Homepage json.Number `json:"homepage"` + Size int `json:"size"` + StargazersCount int `json:"stargazers_count"` + WatchersCount int `json:"watchers_count"` + Language json.Number `json:"language"` + HasIssues bool `json:"has_issues"` + HasDownloads bool `json:"has_downloads"` + HasWiki bool `json:"has_wiki"` + HasPages bool `json:"has_pages"` + ForksCount int `json:"forks_count"` + MirrorURL json.Number `json:"mirror_url"` + OpenIssuesCount int `json:"open_issues_count"` + Forks int `json:"forks"` + OpenIssues int `json:"open_issues"` + Watchers int `json:"watchers"` + DefaultBranch json.Number `json:"default_branch"` + Stargazers int `json:"stargazers"` + MasterBranch json.Number `json:"master_branch"` + Organization json.Number `json:"organization"` +} + +// RepoType represents the structure of a repository as used in push events. +type RepoPushType struct { + ID int `json:"id"` + Name json.Number `json:"name"` + FullName json.Number `json:"full_name"` + Owner SenderType `json:"owner"` + Private bool `json:"private"` + HTMLURL json.Number `json:"html_url"` + Description json.Number `json:"description"` + Fork bool `json:"fork"` + URL json.Number `json:"url"` + ForksURL json.Number `json:"forks_url"` + KeysURL json.Number `json:"keys_url"` + CollaboratorsURL json.Number `json:"collaborators_url"` + TeamsURL json.Number `json:"teams_url"` + HooksURL json.Number `json:"hooks_url"` + IssueEventsURL json.Number `json:"issue_events_url"` + EventsURL json.Number `json:"events_url"` + AssigneesURL json.Number `json:"assignees_url"` + BranchesURL json.Number `json:"branches_url"` + TagsURL json.Number `json:"tags_url"` + BlobsURL json.Number `json:"blobs_url"` + GitTagsURL json.Number `json:"git_tags_url"` + GitRefsURL json.Number `json:"git_refs_url"` + TreesURL json.Number `json:"trees_url"` + StatusesURL json.Number `json:"statuses_url"` + LanguagesURL json.Number `json:"languages_url"` + StargazersURL json.Number `json:"stargazers_url"` + ContributorsURL json.Number `json:"contributors_url"` + SubscribersURL json.Number `json:"subscribers_url"` + SubscriptionURL json.Number `json:"subscription_url"` + CommitsURL json.Number `json:"commits_url"` + GitCommitsURL json.Number `json:"git_commits_url"` + CommentsURL json.Number `json:"comments_url"` + IssueCommentURL json.Number `json:"issue_comment_url"` + ContentsURL json.Number `json:"contents_url"` + CompareURL json.Number `json:"compare_url"` + MergesURL json.Number `json:"mergers_url"` + ArchiveURL json.Number `json:"archive_url"` + DownloadsURL json.Number `json:"downloads_url"` + IssuesURL json.Number `json:"issues_url"` + PullsURL json.Number `json:"pulls_url"` + MilestonesURL json.Number `json:"milestones_url"` + NotificationsURL json.Number `json:"notifications_url"` + LabelsURL json.Number `json:"labels_url"` + ReleasesURL json.Number `json:"releases_url"` + CreatedAt int64 `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` + PushedAt int64 `json:"pushed_at"` + GitURL json.Number `json:"git_url"` + SSHURL json.Number `json:"ssh_url"` + CloneURL json.Number `json:"clone_url"` + SvnURL json.Number `json:"svn_url"` + Homepage json.Number `json:"homepage"` + Size int `json:"size"` + StargazersCount int `json:"stargazers_count"` + WatchersCount int `json:"watchers_count"` + Language json.Number `json:"language"` + HasIssues bool `json:"has_issues"` + HasDownloads bool `json:"has_downloads"` + HasWiki bool `json:"has_wiki"` + HasPages bool `json:"has_pages"` + ForksCount int `json:"forks_count"` + MirrorURL json.Number `json:"mirror_url"` + OpenIssuesCount int `json:"open_issues_count"` + Forks int `json:"forks"` + OpenIssues int `json:"open_issues"` + Watchers int `json:"watchers"` + DefaultBranch json.Number `json:"default_branch"` + Stargazers int `json:"stargazers"` + MasterBranch json.Number `json:"master_branch"` + Organization json.Number `json:"organization"` } // PushEvent represents the basic, top-level structure of a push event. type PushEvent struct { - Ref string `json:"ref"` - Before string `json:"before"` - After string `json:"after"` - Created bool `json:"created"` - Deleted bool `json:"deleted"` - Forced bool `json:"forced"` - BaseRef string `json:"base_ref"` - Compare string `json:"compare"` + Ref json.Number `json:"ref"` + Before json.Number `json:"before"` + After json.Number `json:"after"` + Created bool `json:"created"` + Deleted bool `json:"deleted"` + Forced bool `json:"forced"` + BaseRef json.Number `json:"base_ref"` + Compare json.Number `json:"compare"` Commits []CommitType `json:"commits"` HeadCommit CommitType `json:"head_commit"` - Repository RepoType `json:"repository"` + Repository RepoPushType `json:"repository"` Pusher PusherType `json:"pusher"` Organization OrgType `json:"organization"` Sender SenderType `json:"sender"` } type ConfigType struct { - URL string `json:"url"` - ContentType string `json:"content_type"` + URL json.Number `json:"url"` + ContentType json.Number `json:"content_type"` } type HookType struct { - ID int `json:"id"` - URL string `json:"url"` - TestURL string `json:"test_url"` - PingURL string `json:"ping_url"` - Name string `json:"name"` - Events []string `json:"events"` - Active bool `json:"active"` - Config ConfigType `json:"config"` - UpdatedAt time.Time `json:"updated_at"` - CreatedAt time.Time `json:"created_at"` + ID int `json:"id"` + URL json.Number `json:"url"` + TestURL json.Number `json:"test_url"` + PingURL json.Number `json:"ping_url"` + Name json.Number `json:"name"` + Events []string `json:"events"` + Active bool `json:"active"` + Config ConfigType `json:"config"` + UpdatedAt time.Time `json:"updated_at"` + CreatedAt time.Time `json:"created_at"` } // PingEvent represents the basic, top-level structure of a ping event. type PingEvent struct { - Zen string `json:"zen"` - HookID int `json:"hook_id"` - Hook HookType `json:"hook"` - Organization OrgType `json:"organization"` - Sender SenderType `json:"sender"` + Zen json.Number `json:"zen"` + HookID int `json:"hook_id"` + Hook HookType `json:"hook"` + Organization OrgType `json:"organization"` + Sender SenderType `json:"sender"` } type CommentType struct { - URL string `json:"url"` - HTMLURL string `json:"html_url"` - ID int `json:"id"` - User SenderType `json:"user"` - Position string `json:"position"` - Line string `json:"line"` - Path string `json:"path"` - CommitID string `json:"commit_id"` - CreatedAt time.Time `json:"created_at"` - UpdatedAt time.Time `json:"updated_at"` - Body string `json:"body"` + URL json.Number `json:"url"` + HTMLURL json.Number `json:"html_url"` + ID int `json:"id"` + User SenderType `json:"user"` + Position json.Number `json:"position"` + Line json.Number `json:"line"` + Path json.Number `json:"path"` + CommitID json.Number `json:"commit_id"` + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` + Body json.Number `json:"body"` } type CommitCommentEvent struct { @@ -205,159 +280,159 @@ type CommitCommentEvent struct { } type IssueCommentType struct { - ID int `json:"id"` - URL string `json:"url"` - HTMLURL string `json:"html_url"` - Body string `json:"body"` - User SenderType `json:"user"` - CreatedAt time.Time `json:"created_at"` - UpdatedAt time.Time `json:"created_at"` + ID int `json:"id"` + URL json.Number `json:"url"` + HTMLURL json.Number `json:"html_url"` + Body json.Number `json:"body"` + User SenderType `json:"user"` + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"created_at"` } type LabelType struct { - URL string `json:"url"` - Name string `json:"name"` - Color string `json:"color"` + URL json.Number `json:"url"` + Name json.Number `json:"name"` + Color json.Number `json:"color"` } type MilestoneType struct { - URL string `json:"url"` - HTMLURL string `json:"html_url"` - LabelsURL string `json:"labels_url"` - ID int `json:"id"` - Number int `json:"number"` - State string `json:"state"` - Title string `json:"title"` - Description string `json:"description"` - Creator SenderType `json:"creator"` - OpenIssues int `json:"open_issues"` - ClosedIssues int `json:"closed_issues"` - CreatedAt time.Time `json:"created_at"` - UpdatedAt time.Time `json:"updated_at"` - ClosedAt *time.Time `json:"closed_at"` - DueOn string `json:"due_on"` + URL json.Number `json:"url"` + HTMLURL json.Number `json:"html_url"` + LabelsURL json.Number `json:"labels_url"` + ID int `json:"id"` + Number int `json:"number"` + State json.Number `json:"state"` + Title json.Number `json:"title"` + Description json.Number `json:"description"` + Creator SenderType `json:"creator"` + OpenIssues int `json:"open_issues"` + ClosedIssues int `json:"closed_issues"` + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` + ClosedAt *time.Time `json:"closed_at"` + DueOn json.Number `json:"due_on"` } type ShortPullRequestType struct { - URL string `json:"url"` - HTMLURL string `json:"html_url"` - DiffURL string `json:"diff_url"` - PatchURL string `json:"patch_url"` + URL json.Number `json:"url"` + HTMLURL json.Number `json:"html_url"` + DiffURL json.Number `json:"diff_url"` + PatchURL json.Number `json:"patch_url"` } type IssueType struct { - ID int `json:"id"` - URL string `json:"url"` - HTMLURL string `json:"html_url"` - Number int `json:"number"` - State string `json:"state"` - Title string `json:"title"` - Body string `json:"body"` - User SenderType `json:"user"` - Labels []LabelType `json:"labels"` - Assignee SenderType `json:"assignee"` - Milestone MilestoneType `json:"milestone"` - Comments int `json:"comments"` - PullRequest ShortPullRequestType `json:"pull_request"` - ClosedAt *time.Time `json:"closed_at"` - CreatedAt time.Time `json:"created_at"` - UpdatedAt time.Time `json:"updated_at"` + ID int `json:"id"` + URL json.Number `json:"url"` + HTMLURL json.Number `json:"html_url"` + Number int `json:"number"` + State json.Number `json:"state"` + Title json.Number `json:"title"` + Body json.Number `json:"body"` + User SenderType `json:"user"` + Labels []LabelType `json:"labels"` + Assignee SenderType `json:"assignee"` + Milestone MilestoneType `json:"milestone"` + Comments int `json:"comments"` + PullRequest ShortPullRequestType `json:"pull_request"` + ClosedAt *time.Time `json:"closed_at"` + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` } type IssueCommentEvent struct { - Action string `json:"action"` - Issue IssueType `json:"issue"` - Comment IssueCommentType `json:"comment"` - Repository RepoType `json:"repository"` - Sender SenderType `json:"sender"` + Action json.Number `json:"action"` + Issue IssueType `json:"issue"` + Comment IssueCommentType `json:"comment"` + Repository RepoType `json:"repository"` + Sender SenderType `json:"sender"` } type IssuesEvent struct { - Action string `json:"action"` - Issue IssueType `json:"issue"` - Assignee SenderType `json:"assignee"` - Label LabelType `json:"label"` - Repository RepoType `json:"repository"` - Sender SenderType `json:"sender"` + Action json.Number `json:"action"` + Issue IssueType `json:"issue"` + Assignee SenderType `json:"assignee"` + Label LabelType `json:"label"` + Repository RepoType `json:"repository"` + Sender SenderType `json:"sender"` } type CreateEvent struct { - RefType string `json:"ref_type"` - Ref string `json:"ref"` - MasterBranch string `json:"master_branch"` - Description string `json:"description"` - PusherType string `json:"pusher_type"` - Repository RepoType `json:"repository"` - Sender SenderType `json:"sender"` + RefType json.Number `json:"ref_type"` + Ref json.Number `json:"ref"` + MasterBranch json.Number `json:"master_branch"` + Description json.Number `json:"description"` + PusherType json.Number `json:"pusher_type"` + Repository RepoType `json:"repository"` + Sender SenderType `json:"sender"` } type DeleteEvent struct { - RefType string `json:"ref_type"` - Ref string `json:"ref"` - PusherType string `json:"pusher_type"` - Repository RepoType `json:"repository"` - Sender SenderType `json:"sender"` + RefType json.Number `json:"ref_type"` + Ref json.Number `json:"ref"` + PusherType json.Number `json:"pusher_type"` + Repository RepoType `json:"repository"` + Sender SenderType `json:"sender"` } type RepositoryEvent struct { - Action string `json:"action"` - Repository RepoType `json:"repository"` - Organization OrgType `json:"organization"` - Sender SenderType `json:"sender"` + Action json.Number `json:"action"` + Repository RepoType `json:"repository"` + Organization OrgType `json:"organization"` + Sender SenderType `json:"sender"` } type DeploymentType struct { - URL string `json:"url"` - ID int `json:"id"` - SHA string `json:"sha"` - Ref string `json:"ref"` - Task string `json:"task"` - Payload map[string]string `json:"payload"` - Environment string `json:"environment"` - Description string `json:"description"` - Creator SenderType `json:"creator"` - CreatedAt time.Time `json:"created_at"` - UpdatedAt time.Time `json:"updated_at"` - StatusesURL string `json:"statuses_url"` - RepositoryURL string `json:"repository_url"` + URL json.Number `json:"url"` + ID int `json:"id"` + SHA json.Number `json:"sha"` + Ref json.Number `json:"ref"` + Task json.Number `json:"task"` + Payload map[string]string `json:"payload"` + Environment json.Number `json:"environment"` + Description json.Number `json:"description"` + Creator SenderType `json:"creator"` + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` + StatusesURL json.Number `json:"statuses_url"` + RepositoryURL json.Number `json:"repository_url"` } type DeploymentEvent struct { - Deployment DeploymentType `json:"deployment"` - ID int `json:"id"` - SHA string `json:"sha"` - Ref string `json:"ref"` - Task string `json:"task"` - Name string `json:"name"` - Environment string `json:"environment"` - Payload map[string]string `json:"payload"` - Description string `json:"description"` - Repository RepoType `json:"repository"` - Sender SenderType `json:"sender"` + Deployment DeploymentType `json:"deployment"` + ID int `json:"id"` + SHA json.Number `json:"sha"` + Ref json.Number `json:"ref"` + Task json.Number `json:"task"` + Name json.Number `json:"name"` + Environment json.Number `json:"environment"` + Payload map[string]string `json:"payload"` + Description json.Number `json:"description"` + Repository RepoType `json:"repository"` + Sender SenderType `json:"sender"` } type DeploymentStatusType struct { - URL string `json:"url"` - ID int `json:"id"` - State string `json:"state"` - Creator SenderType `json:"creator"` - Description string `json:"description"` - TargetURL string `json:"target_url"` - CreatedAt time.Time `json:"created_at"` - UpdatedAt time.Time `json:"updated_at"` - DeploymentURL string `json:"deployment_url"` - RepositoryURL string `json:"repository_url"` + URL json.Number `json:"url"` + ID int `json:"id"` + State json.Number `json:"state"` + Creator SenderType `json:"creator"` + Description json.Number `json:"description"` + TargetURL json.Number `json:"target_url"` + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` + DeploymentURL json.Number `json:"deployment_url"` + RepositoryURL json.Number `json:"repository_url"` } type DeploymentStatusEvent struct { - Deployment DeploymentType `json:"deployment"` - DeploymentStatus DeploymentStatusType `json:"deployment_status"` - ID int `json:"id"` - State string `json:"state"` - TargetURL string `json:"target_url"` - Description string `json:"description"` - Repository RepoType `json:"repository"` - Sender SenderType `json:"sender"` + Deployment DeploymentType `json:"deployment"` + DeploymentStatus DeploymentStatusType `json:"deployment_status"` + ID int `json:"id"` + State json.Number `json:"state"` + TargetURL json.Number `json:"target_url"` + Description json.Number `json:"description"` + Repository RepoType `json:"repository"` + Sender SenderType `json:"sender"` } type ForkEvent struct { @@ -367,12 +442,12 @@ type ForkEvent struct { } type PageType struct { - PageName string `json:"page_name"` - Title string `json:"title"` - Summary string `json:"summary"` - Action string `json:"action"` - SHA string `json:"sha"` - HTMLURL string `json:"html_url"` + PageName json.Number `json:"page_name"` + Title json.Number `json:"title"` + Summary json.Number `json:"summary"` + Action json.Number `json:"action"` + SHA json.Number `json:"sha"` + HTMLURL json.Number `json:"html_url"` } type GollumEvent struct { @@ -382,44 +457,44 @@ type GollumEvent struct { } type MemberEvent struct { - Action string `json:"action"` - Member SenderType `json:"member"` - Repository RepoType `json:"repository"` - Sender SenderType `json:"sender"` + Action json.Number `json:"action"` + Member SenderType `json:"member"` + Repository RepoType `json:"repository"` + Sender SenderType `json:"sender"` } type TeamType struct { - Name string `json:"name"` - ID int `json:"id"` - Slug string `json:"slug"` - Permission string `json:"permission"` - URL string `json:"url"` - MembersURL string `json:"members_url"` - RepositoriesURL string `json:"repositories_url"` + Name json.Number `json:"name"` + ID int `json:"id"` + Slug json.Number `json:"slug"` + Permission json.Number `json:"permission"` + URL json.Number `json:"url"` + MembersURL json.Number `json:"members_url"` + RepositoriesURL json.Number `json:"repositories_url"` } type MembershipEvent struct { - Action string `json:"action"` - Scope string `json:"scope"` - Member SenderType `json:"member"` - Team TeamType `json:"team"` - Sender SenderType `json:"sender"` - Organization OrgType `json:"organization"` + Action json.Number `json:"action"` + Scope json.Number `json:"scope"` + Member SenderType `json:"member"` + Team TeamType `json:"team"` + Sender SenderType `json:"sender"` + Organization OrgType `json:"organization"` } type ErrorType struct { - Message string `json:"message"` + Message json.Number `json:"message"` } type BuildType struct { - URL string `json:"url"` - Status string `json:"status"` - Error ErrorType `json:"error"` - Pusher SenderType `json:"pusher"` - Commit string `json:"commit"` - Duration int `json:"duration"` - CreatedAt time.Time `json:"created_at"` - UpdatedAt time.Time `json:"updated_at"` + URL json.Number `json:"url"` + Status json.Number `json:"status"` + Error ErrorType `json:"error"` + Pusher SenderType `json:"pusher"` + Commit json.Number `json:"commit"` + Duration int `json:"duration"` + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` } type PageBuildEvent struct { @@ -435,81 +510,81 @@ type PublicEvent struct { } type BaseHeadType struct { - Label string `json:"label"` - Ref string `json:"ref"` - SHA string `json:"sha"` - User SenderType `json:"user"` - Repo RepoType `json:"repo"` + Label json.Number `json:"label"` + Ref json.Number `json:"ref"` + SHA json.Number `json:"sha"` + User SenderType `json:"user"` + Repo RepoType `json:"repo"` } type Link struct { - HREF string `json:"href"` + HREF json.Number `json:"href"` } type PullRequestType struct { - ID int `json:"id"` - URL string `json:"url"` - HTMLURL string `json:"html_url"` - DiffURL string `json:"diff_url"` - PatchURL string `json:"patch_url"` - IssueURL string `json:"issue_url"` - CommitsURL string `json:"commits_url"` - ReviewCommentsURL string `json:"review_comments_url"` - ReviewCommentURL string `json:"review_comment_url"` - CommentsURL string `json:"comments_url"` - StatusesURL string `json:"statuses_url"` - Number int `json:"number"` - State string `json:"state"` - Title string `json:"title"` - Body string `json:"body"` - CreatedAt time.Time `json:"created_at"` - UpdatedAt time.Time `json:"updated_at"` - ClosedAt *time.Time `json:"closed_at"` - MergedAt *time.Time `json:"merged_at"` - Head BaseHeadType `json:"head"` - Repo RepoType `json:"repo"` - Base BaseHeadType `json:"Base"` - Links map[string]Link `json:"_links"` - User SenderType `json:"User"` - MergeCommitSHA string `json:"merge_commit_sha"` - Merged bool `json:"merged"` - Mergeable bool `json:"mergeable"` - MergedBy SenderType `json:"merged_by"` - Comments int `json:"comments"` - Commits int `json:"commits"` - Additions int `json:"additions"` - Deletions int `json:"deletions"` - ChangedFiles int `json:"changed_files"` + ID int `json:"id"` + URL json.Number `json:"url"` + HTMLURL json.Number `json:"html_url"` + DiffURL json.Number `json:"diff_url"` + PatchURL json.Number `json:"patch_url"` + IssueURL json.Number `json:"issue_url"` + CommitsURL json.Number `json:"commits_url"` + ReviewCommentsURL json.Number `json:"review_comments_url"` + ReviewCommentURL json.Number `json:"review_comment_url"` + CommentsURL json.Number `json:"comments_url"` + StatusesURL json.Number `json:"statuses_url"` + Number int `json:"number"` + State json.Number `json:"state"` + Title json.Number `json:"title"` + Body json.Number `json:"body"` + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` + ClosedAt *time.Time `json:"closed_at"` + MergedAt *time.Time `json:"merged_at"` + Head BaseHeadType `json:"head"` + Repo RepoType `json:"repo"` + Base BaseHeadType `json:"Base"` + Links map[string]Link `json:"_links"` + User SenderType `json:"User"` + MergeCommitSHA json.Number `json:"merge_commit_sha"` + Merged bool `json:"merged"` + Mergeable bool `json:"mergeable"` + MergedBy SenderType `json:"merged_by"` + Comments int `json:"comments"` + Commits int `json:"commits"` + Additions int `json:"additions"` + Deletions int `json:"deletions"` + ChangedFiles int `json:"changed_files"` } type PullRequestEvent struct { - Action string `json:"action"` - Number int `json:"number"` - PullRequest PullRequestType `json:"pull_request"` - Repository RepoType `json:"repository"` - Sender SenderType `json:"sender"` + Action json.Number `json:"action"` + Number int `json:"number"` + PullRequest PullRequestType `json:"pull_request"` + Repository RepoType `json:"repository"` + Sender SenderType `json:"sender"` } type PullRequestReviewCommentType struct { - URL string `json:"url"` - ID int `json:"id"` - DiffHunk string `json:"diff_hunk"` - Path string `json:"path"` - Position int `json:"position"` - OriginalPosition int `json:"original_position"` - CommitID string `json:"commit_id"` - OriginalCommitID string `json:"original_commit_id"` - User SenderType `json:"user"` - Body string `json:"body"` - CreatedAt time.Time `json:"created_at"` - UpdatedAt time.Time `json:"updated_at"` - HTMLURL string `json:"html_url"` - PullRequestURL string `json:"pull_request_url"` - Links map[string]Link `json:"_links"` + URL json.Number `json:"url"` + ID int `json:"id"` + DiffHunk json.Number `json:"diff_hunk"` + Path json.Number `json:"path"` + Position int `json:"position"` + OriginalPosition int `json:"original_position"` + CommitID json.Number `json:"commit_id"` + OriginalCommitID json.Number `json:"original_commit_id"` + User SenderType `json:"user"` + Body json.Number `json:"body"` + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` + HTMLURL json.Number `json:"html_url"` + PullRequestURL json.Number `json:"pull_request_url"` + Links map[string]Link `json:"_links"` } type PullRequestReviewCommentEvent struct { - Action string `json:"action"` + Action json.Number `json:"action"` Comment PullRequestReviewCommentType `json:"comment"` PullRequest PullRequestType `json:"pull_request"` Repository RepoType `json:"repository"` @@ -517,65 +592,65 @@ type PullRequestReviewCommentEvent struct { } type AssetType struct { - URL string `json:"url"` - BrowserDownloadURL string `json:"browser_download_url"` - ID int `json:"id"` - Name string `json:"name"` - Label string `json:"label"` - State string `json:"state"` - ContentType string `json:"content_type"` - Size int `json:"size"` - DownloadCount int `json:"download_count"` - CreatedAt time.Time `json:"created_at"` - UpdatedAt time.Time `json:"updated_at"` - Uploader SenderType `json:"uploader"` + URL json.Number `json:"url"` + BrowserDownloadURL json.Number `json:"browser_download_url"` + ID int `json:"id"` + Name json.Number `json:"name"` + Label json.Number `json:"label"` + State json.Number `json:"state"` + ContentType json.Number `json:"content_type"` + Size int `json:"size"` + DownloadCount int `json:"download_count"` + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` + Uploader SenderType `json:"uploader"` } type ReleaseType struct { - URL string `json:"url"` - HTMLURL string `json:"html_url"` - AssetsURL string `json:"assets_url"` - UploadURL string `json:"upload_url"` - TarballURL string `json:"tarball_url"` - ZipballURL string `json:"zipball_url"` - ID int `json:"id"` - TagName string `json:"tag_name"` - TargetCommitish string `json:"target_commitish"` - Name string `json:"name"` - Body string `json:"body"` - Draft bool `json:"draft"` - Prerelease bool `json:"prerelease"` - CreatedAt time.Time `json:"created_at"` - PublishedAt time.Time `json:"published_at"` - Author SenderType `json:"author"` - Assets []AssetType `json:"assets"` + URL json.Number `json:"url"` + HTMLURL json.Number `json:"html_url"` + AssetsURL json.Number `json:"assets_url"` + UploadURL json.Number `json:"upload_url"` + TarballURL json.Number `json:"tarball_url"` + ZipballURL json.Number `json:"zipball_url"` + ID int `json:"id"` + TagName json.Number `json:"tag_name"` + TargetCommitish json.Number `json:"target_commitish"` + Name json.Number `json:"name"` + Body json.Number `json:"body"` + Draft bool `json:"draft"` + Prerelease bool `json:"prerelease"` + CreatedAt time.Time `json:"created_at"` + PublishedAt time.Time `json:"published_at"` + Author SenderType `json:"author"` + Assets []AssetType `json:"assets"` } type ReleaseEvent struct { - Action string `json:"action"` + Action json.Number `json:"action"` Release ReleaseType `json:"release"` Repository RepoType `json:"repository"` Sender SenderType `json:"sender"` } type ShortCommitType struct { - SHA string `json:"sha"` - URL string `json:"url"` + SHA json.Number `json:"sha"` + URL json.Number `json:"url"` } type BranchType struct { - Name string `json:"master"` + Name json.Number `json:"master"` Commit ShortCommitType `json:"commit"` } type StatusEvent struct { ID int `json:"id"` - SHA string `json:"sha"` - Name string `json:"name"` - TargetURL string `json:"target_url"` - Context string `json:"context"` - Description string `json:"description"` - State string `json:"state"` + SHA json.Number `json:"sha"` + Name json.Number `json:"name"` + TargetURL json.Number `json:"target_url"` + Context json.Number `json:"context"` + Description json.Number `json:"description"` + State json.Number `json:"state"` Commit CommitType `json:"commit"` Branches []BranchType `json:"branches"` CreatedAt time.Time `json:"created_at"` @@ -592,10 +667,10 @@ type TeamAddEvent struct { } type WatchEvent struct { - Action string `json:"action"` - Repository RepoType `json:"repository"` - Sender SenderType `json:"sender"` - Organization OrgType `json:"organization"` + Action json.Number `json:"action"` + Repository RepoType `json:"repository"` + Sender SenderType `json:"sender"` + Organization OrgType `json:"organization"` } // EventType is an alias for string that provides type safety for the event types.