713 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			713 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			Go
		
	
	
	
package github
 | 
						|
 | 
						|
import (
 | 
						|
	"fmt"
 | 
						|
	"log"
 | 
						|
	"time"
 | 
						|
 | 
						|
	"github.com/influxdata/telegraf"
 | 
						|
	"github.com/influxdata/telegraf/metric"
 | 
						|
)
 | 
						|
 | 
						|
const meas = "github_webhooks"
 | 
						|
 | 
						|
type Event interface {
 | 
						|
	NewMetric() telegraf.Metric
 | 
						|
}
 | 
						|
 | 
						|
type Repository struct {
 | 
						|
	Repository string `json:"full_name"`
 | 
						|
	Private    bool   `json:"private"`
 | 
						|
	Stars      int    `json:"stargazers_count"`
 | 
						|
	Forks      int    `json:"forks_count"`
 | 
						|
	Issues     int    `json:"open_issues_count"`
 | 
						|
}
 | 
						|
 | 
						|
type Sender struct {
 | 
						|
	User  string `json:"login"`
 | 
						|
	Admin bool   `json:"site_admin"`
 | 
						|
}
 | 
						|
 | 
						|
type CommitComment struct {
 | 
						|
	Commit string `json:"commit_id"`
 | 
						|
	Body   string `json:"body"`
 | 
						|
}
 | 
						|
 | 
						|
type Deployment struct {
 | 
						|
	Commit      string `json:"sha"`
 | 
						|
	Task        string `json:"task"`
 | 
						|
	Environment string `json:"environment"`
 | 
						|
	Description string `json:"description"`
 | 
						|
}
 | 
						|
 | 
						|
type Page struct {
 | 
						|
	Name   string `json:"page_name"`
 | 
						|
	Title  string `json:"title"`
 | 
						|
	Action string `json:"action"`
 | 
						|
}
 | 
						|
 | 
						|
type Issue struct {
 | 
						|
	Number   int    `json:"number"`
 | 
						|
	Title    string `json:"title"`
 | 
						|
	Comments int    `json:"comments"`
 | 
						|
}
 | 
						|
 | 
						|
type IssueComment struct {
 | 
						|
	Body string `json:"body"`
 | 
						|
}
 | 
						|
 | 
						|
type Team struct {
 | 
						|
	Name string `json:"name"`
 | 
						|
}
 | 
						|
 | 
						|
type PullRequest struct {
 | 
						|
	Number       int    `json:"number"`
 | 
						|
	State        string `json:"state"`
 | 
						|
	Title        string `json:"title"`
 | 
						|
	Comments     int    `json:"comments"`
 | 
						|
	Commits      int    `json:"commits"`
 | 
						|
	Additions    int    `json:"additions"`
 | 
						|
	Deletions    int    `json:"deletions"`
 | 
						|
	ChangedFiles int    `json:"changed_files"`
 | 
						|
}
 | 
						|
 | 
						|
type PullRequestReviewComment struct {
 | 
						|
	File    string `json:"path"`
 | 
						|
	Comment string `json:"body"`
 | 
						|
}
 | 
						|
 | 
						|
type Release struct {
 | 
						|
	TagName string `json:"tag_name"`
 | 
						|
}
 | 
						|
 | 
						|
type DeploymentStatus struct {
 | 
						|
	State       string `json:"state"`
 | 
						|
	Description string `json:"description"`
 | 
						|
}
 | 
						|
 | 
						|
type CommitCommentEvent struct {
 | 
						|
	Comment    CommitComment `json:"comment"`
 | 
						|
	Repository Repository    `json:"repository"`
 | 
						|
	Sender     Sender        `json:"sender"`
 | 
						|
}
 | 
						|
 | 
						|
func (s CommitCommentEvent) NewMetric() telegraf.Metric {
 | 
						|
	event := "commit_comment"
 | 
						|
	t := map[string]string{
 | 
						|
		"event":      event,
 | 
						|
		"repository": s.Repository.Repository,
 | 
						|
		"private":    fmt.Sprintf("%v", s.Repository.Private),
 | 
						|
		"user":       s.Sender.User,
 | 
						|
		"admin":      fmt.Sprintf("%v", s.Sender.Admin),
 | 
						|
	}
 | 
						|
	f := map[string]interface{}{
 | 
						|
		"stars":   s.Repository.Stars,
 | 
						|
		"forks":   s.Repository.Forks,
 | 
						|
		"issues":  s.Repository.Issues,
 | 
						|
		"commit":  s.Comment.Commit,
 | 
						|
		"comment": s.Comment.Body,
 | 
						|
	}
 | 
						|
	m, err := metric.New(meas, t, f, time.Now())
 | 
						|
	if err != nil {
 | 
						|
		log.Fatalf("Failed to create %v event", event)
 | 
						|
	}
 | 
						|
	return m
 | 
						|
}
 | 
						|
 | 
						|
type CreateEvent struct {
 | 
						|
	Ref        string     `json:"ref"`
 | 
						|
	RefType    string     `json:"ref_type"`
 | 
						|
	Repository Repository `json:"repository"`
 | 
						|
	Sender     Sender     `json:"sender"`
 | 
						|
}
 | 
						|
 | 
						|
func (s CreateEvent) NewMetric() telegraf.Metric {
 | 
						|
	event := "create"
 | 
						|
	t := map[string]string{
 | 
						|
		"event":      event,
 | 
						|
		"repository": s.Repository.Repository,
 | 
						|
		"private":    fmt.Sprintf("%v", s.Repository.Private),
 | 
						|
		"user":       s.Sender.User,
 | 
						|
		"admin":      fmt.Sprintf("%v", s.Sender.Admin),
 | 
						|
	}
 | 
						|
	f := map[string]interface{}{
 | 
						|
		"stars":   s.Repository.Stars,
 | 
						|
		"forks":   s.Repository.Forks,
 | 
						|
		"issues":  s.Repository.Issues,
 | 
						|
		"ref":     s.Ref,
 | 
						|
		"refType": s.RefType,
 | 
						|
	}
 | 
						|
	m, err := metric.New(meas, t, f, time.Now())
 | 
						|
	if err != nil {
 | 
						|
		log.Fatalf("Failed to create %v event", event)
 | 
						|
	}
 | 
						|
	return m
 | 
						|
}
 | 
						|
 | 
						|
type DeleteEvent struct {
 | 
						|
	Ref        string     `json:"ref"`
 | 
						|
	RefType    string     `json:"ref_type"`
 | 
						|
	Repository Repository `json:"repository"`
 | 
						|
	Sender     Sender     `json:"sender"`
 | 
						|
}
 | 
						|
 | 
						|
func (s DeleteEvent) NewMetric() telegraf.Metric {
 | 
						|
	event := "delete"
 | 
						|
	t := map[string]string{
 | 
						|
		"event":      event,
 | 
						|
		"repository": s.Repository.Repository,
 | 
						|
		"private":    fmt.Sprintf("%v", s.Repository.Private),
 | 
						|
		"user":       s.Sender.User,
 | 
						|
		"admin":      fmt.Sprintf("%v", s.Sender.Admin),
 | 
						|
	}
 | 
						|
	f := map[string]interface{}{
 | 
						|
		"stars":   s.Repository.Stars,
 | 
						|
		"forks":   s.Repository.Forks,
 | 
						|
		"issues":  s.Repository.Issues,
 | 
						|
		"ref":     s.Ref,
 | 
						|
		"refType": s.RefType,
 | 
						|
	}
 | 
						|
	m, err := metric.New(meas, t, f, time.Now())
 | 
						|
	if err != nil {
 | 
						|
		log.Fatalf("Failed to create %v event", event)
 | 
						|
	}
 | 
						|
	return m
 | 
						|
}
 | 
						|
 | 
						|
type DeploymentEvent struct {
 | 
						|
	Deployment Deployment `json:"deployment"`
 | 
						|
	Repository Repository `json:"repository"`
 | 
						|
	Sender     Sender     `json:"sender"`
 | 
						|
}
 | 
						|
 | 
						|
func (s DeploymentEvent) NewMetric() telegraf.Metric {
 | 
						|
	event := "deployment"
 | 
						|
	t := map[string]string{
 | 
						|
		"event":      event,
 | 
						|
		"repository": s.Repository.Repository,
 | 
						|
		"private":    fmt.Sprintf("%v", s.Repository.Private),
 | 
						|
		"user":       s.Sender.User,
 | 
						|
		"admin":      fmt.Sprintf("%v", s.Sender.Admin),
 | 
						|
	}
 | 
						|
	f := map[string]interface{}{
 | 
						|
		"stars":       s.Repository.Stars,
 | 
						|
		"forks":       s.Repository.Forks,
 | 
						|
		"issues":      s.Repository.Issues,
 | 
						|
		"commit":      s.Deployment.Commit,
 | 
						|
		"task":        s.Deployment.Task,
 | 
						|
		"environment": s.Deployment.Environment,
 | 
						|
		"description": s.Deployment.Description,
 | 
						|
	}
 | 
						|
	m, err := metric.New(meas, t, f, time.Now())
 | 
						|
	if err != nil {
 | 
						|
		log.Fatalf("Failed to create %v event", event)
 | 
						|
	}
 | 
						|
	return m
 | 
						|
}
 | 
						|
 | 
						|
type DeploymentStatusEvent struct {
 | 
						|
	Deployment       Deployment       `json:"deployment"`
 | 
						|
	DeploymentStatus DeploymentStatus `json:"deployment_status"`
 | 
						|
	Repository       Repository       `json:"repository"`
 | 
						|
	Sender           Sender           `json:"sender"`
 | 
						|
}
 | 
						|
 | 
						|
func (s DeploymentStatusEvent) NewMetric() telegraf.Metric {
 | 
						|
	event := "delete"
 | 
						|
	t := map[string]string{
 | 
						|
		"event":      event,
 | 
						|
		"repository": s.Repository.Repository,
 | 
						|
		"private":    fmt.Sprintf("%v", s.Repository.Private),
 | 
						|
		"user":       s.Sender.User,
 | 
						|
		"admin":      fmt.Sprintf("%v", s.Sender.Admin),
 | 
						|
	}
 | 
						|
	f := map[string]interface{}{
 | 
						|
		"stars":          s.Repository.Stars,
 | 
						|
		"forks":          s.Repository.Forks,
 | 
						|
		"issues":         s.Repository.Issues,
 | 
						|
		"commit":         s.Deployment.Commit,
 | 
						|
		"task":           s.Deployment.Task,
 | 
						|
		"environment":    s.Deployment.Environment,
 | 
						|
		"description":    s.Deployment.Description,
 | 
						|
		"depState":       s.DeploymentStatus.State,
 | 
						|
		"depDescription": s.DeploymentStatus.Description,
 | 
						|
	}
 | 
						|
	m, err := metric.New(meas, t, f, time.Now())
 | 
						|
	if err != nil {
 | 
						|
		log.Fatalf("Failed to create %v event", event)
 | 
						|
	}
 | 
						|
	return m
 | 
						|
}
 | 
						|
 | 
						|
type ForkEvent struct {
 | 
						|
	Forkee     Repository `json:"forkee"`
 | 
						|
	Repository Repository `json:"repository"`
 | 
						|
	Sender     Sender     `json:"sender"`
 | 
						|
}
 | 
						|
 | 
						|
func (s ForkEvent) NewMetric() telegraf.Metric {
 | 
						|
	event := "fork"
 | 
						|
	t := map[string]string{
 | 
						|
		"event":      event,
 | 
						|
		"repository": s.Repository.Repository,
 | 
						|
		"private":    fmt.Sprintf("%v", s.Repository.Private),
 | 
						|
		"user":       s.Sender.User,
 | 
						|
		"admin":      fmt.Sprintf("%v", s.Sender.Admin),
 | 
						|
	}
 | 
						|
	f := map[string]interface{}{
 | 
						|
		"stars":  s.Repository.Stars,
 | 
						|
		"forks":  s.Repository.Forks,
 | 
						|
		"issues": s.Repository.Issues,
 | 
						|
		"fork":   s.Forkee.Repository,
 | 
						|
	}
 | 
						|
	m, err := metric.New(meas, t, f, time.Now())
 | 
						|
	if err != nil {
 | 
						|
		log.Fatalf("Failed to create %v event", event)
 | 
						|
	}
 | 
						|
	return m
 | 
						|
}
 | 
						|
 | 
						|
type GollumEvent struct {
 | 
						|
	Pages      []Page     `json:"pages"`
 | 
						|
	Repository Repository `json:"repository"`
 | 
						|
	Sender     Sender     `json:"sender"`
 | 
						|
}
 | 
						|
 | 
						|
// REVIEW: Going to be lazy and not deal with the pages.
 | 
						|
func (s GollumEvent) NewMetric() telegraf.Metric {
 | 
						|
	event := "gollum"
 | 
						|
	t := map[string]string{
 | 
						|
		"event":      event,
 | 
						|
		"repository": s.Repository.Repository,
 | 
						|
		"private":    fmt.Sprintf("%v", s.Repository.Private),
 | 
						|
		"user":       s.Sender.User,
 | 
						|
		"admin":      fmt.Sprintf("%v", s.Sender.Admin),
 | 
						|
	}
 | 
						|
	f := map[string]interface{}{
 | 
						|
		"stars":  s.Repository.Stars,
 | 
						|
		"forks":  s.Repository.Forks,
 | 
						|
		"issues": s.Repository.Issues,
 | 
						|
	}
 | 
						|
	m, err := metric.New(meas, t, f, time.Now())
 | 
						|
	if err != nil {
 | 
						|
		log.Fatalf("Failed to create %v event", event)
 | 
						|
	}
 | 
						|
	return m
 | 
						|
}
 | 
						|
 | 
						|
type IssueCommentEvent struct {
 | 
						|
	Issue      Issue        `json:"issue"`
 | 
						|
	Comment    IssueComment `json:"comment"`
 | 
						|
	Repository Repository   `json:"repository"`
 | 
						|
	Sender     Sender       `json:"sender"`
 | 
						|
}
 | 
						|
 | 
						|
func (s IssueCommentEvent) NewMetric() telegraf.Metric {
 | 
						|
	event := "issue_comment"
 | 
						|
	t := map[string]string{
 | 
						|
		"event":      event,
 | 
						|
		"repository": s.Repository.Repository,
 | 
						|
		"private":    fmt.Sprintf("%v", s.Repository.Private),
 | 
						|
		"user":       s.Sender.User,
 | 
						|
		"admin":      fmt.Sprintf("%v", s.Sender.Admin),
 | 
						|
		"issue":      fmt.Sprintf("%v", s.Issue.Number),
 | 
						|
	}
 | 
						|
	f := map[string]interface{}{
 | 
						|
		"stars":    s.Repository.Stars,
 | 
						|
		"forks":    s.Repository.Forks,
 | 
						|
		"issues":   s.Repository.Issues,
 | 
						|
		"title":    s.Issue.Title,
 | 
						|
		"comments": s.Issue.Comments,
 | 
						|
		"body":     s.Comment.Body,
 | 
						|
	}
 | 
						|
	m, err := metric.New(meas, t, f, time.Now())
 | 
						|
	if err != nil {
 | 
						|
		log.Fatalf("Failed to create %v event", event)
 | 
						|
	}
 | 
						|
	return m
 | 
						|
}
 | 
						|
 | 
						|
type IssuesEvent struct {
 | 
						|
	Action     string     `json:"action"`
 | 
						|
	Issue      Issue      `json:"issue"`
 | 
						|
	Repository Repository `json:"repository"`
 | 
						|
	Sender     Sender     `json:"sender"`
 | 
						|
}
 | 
						|
 | 
						|
func (s IssuesEvent) NewMetric() telegraf.Metric {
 | 
						|
	event := "issue"
 | 
						|
	t := map[string]string{
 | 
						|
		"event":      event,
 | 
						|
		"repository": s.Repository.Repository,
 | 
						|
		"private":    fmt.Sprintf("%v", s.Repository.Private),
 | 
						|
		"user":       s.Sender.User,
 | 
						|
		"admin":      fmt.Sprintf("%v", s.Sender.Admin),
 | 
						|
		"issue":      fmt.Sprintf("%v", s.Issue.Number),
 | 
						|
		"action":     s.Action,
 | 
						|
	}
 | 
						|
	f := map[string]interface{}{
 | 
						|
		"stars":    s.Repository.Stars,
 | 
						|
		"forks":    s.Repository.Forks,
 | 
						|
		"issues":   s.Repository.Issues,
 | 
						|
		"title":    s.Issue.Title,
 | 
						|
		"comments": s.Issue.Comments,
 | 
						|
	}
 | 
						|
	m, err := metric.New(meas, t, f, time.Now())
 | 
						|
	if err != nil {
 | 
						|
		log.Fatalf("Failed to create %v event", event)
 | 
						|
	}
 | 
						|
	return m
 | 
						|
}
 | 
						|
 | 
						|
type MemberEvent struct {
 | 
						|
	Member     Sender     `json:"member"`
 | 
						|
	Repository Repository `json:"repository"`
 | 
						|
	Sender     Sender     `json:"sender"`
 | 
						|
}
 | 
						|
 | 
						|
func (s MemberEvent) NewMetric() telegraf.Metric {
 | 
						|
	event := "member"
 | 
						|
	t := map[string]string{
 | 
						|
		"event":      event,
 | 
						|
		"repository": s.Repository.Repository,
 | 
						|
		"private":    fmt.Sprintf("%v", s.Repository.Private),
 | 
						|
		"user":       s.Sender.User,
 | 
						|
		"admin":      fmt.Sprintf("%v", s.Sender.Admin),
 | 
						|
	}
 | 
						|
	f := map[string]interface{}{
 | 
						|
		"stars":           s.Repository.Stars,
 | 
						|
		"forks":           s.Repository.Forks,
 | 
						|
		"issues":          s.Repository.Issues,
 | 
						|
		"newMember":       s.Member.User,
 | 
						|
		"newMemberStatus": s.Member.Admin,
 | 
						|
	}
 | 
						|
	m, err := metric.New(meas, t, f, time.Now())
 | 
						|
	if err != nil {
 | 
						|
		log.Fatalf("Failed to create %v event", event)
 | 
						|
	}
 | 
						|
	return m
 | 
						|
}
 | 
						|
 | 
						|
type MembershipEvent struct {
 | 
						|
	Action string `json:"action"`
 | 
						|
	Member Sender `json:"member"`
 | 
						|
	Sender Sender `json:"sender"`
 | 
						|
	Team   Team   `json:"team"`
 | 
						|
}
 | 
						|
 | 
						|
func (s MembershipEvent) NewMetric() telegraf.Metric {
 | 
						|
	event := "membership"
 | 
						|
	t := map[string]string{
 | 
						|
		"event":  event,
 | 
						|
		"user":   s.Sender.User,
 | 
						|
		"admin":  fmt.Sprintf("%v", s.Sender.Admin),
 | 
						|
		"action": s.Action,
 | 
						|
	}
 | 
						|
	f := map[string]interface{}{
 | 
						|
		"newMember":       s.Member.User,
 | 
						|
		"newMemberStatus": s.Member.Admin,
 | 
						|
	}
 | 
						|
	m, err := metric.New(meas, t, f, time.Now())
 | 
						|
	if err != nil {
 | 
						|
		log.Fatalf("Failed to create %v event", event)
 | 
						|
	}
 | 
						|
	return m
 | 
						|
}
 | 
						|
 | 
						|
type PageBuildEvent struct {
 | 
						|
	Repository Repository `json:"repository"`
 | 
						|
	Sender     Sender     `json:"sender"`
 | 
						|
}
 | 
						|
 | 
						|
func (s PageBuildEvent) NewMetric() telegraf.Metric {
 | 
						|
	event := "page_build"
 | 
						|
	t := map[string]string{
 | 
						|
		"event":      event,
 | 
						|
		"repository": s.Repository.Repository,
 | 
						|
		"private":    fmt.Sprintf("%v", s.Repository.Private),
 | 
						|
		"user":       s.Sender.User,
 | 
						|
		"admin":      fmt.Sprintf("%v", s.Sender.Admin),
 | 
						|
	}
 | 
						|
	f := map[string]interface{}{
 | 
						|
		"stars":  s.Repository.Stars,
 | 
						|
		"forks":  s.Repository.Forks,
 | 
						|
		"issues": s.Repository.Issues,
 | 
						|
	}
 | 
						|
	m, err := metric.New(meas, t, f, time.Now())
 | 
						|
	if err != nil {
 | 
						|
		log.Fatalf("Failed to create %v event", event)
 | 
						|
	}
 | 
						|
	return m
 | 
						|
}
 | 
						|
 | 
						|
type PublicEvent struct {
 | 
						|
	Repository Repository `json:"repository"`
 | 
						|
	Sender     Sender     `json:"sender"`
 | 
						|
}
 | 
						|
 | 
						|
func (s PublicEvent) NewMetric() telegraf.Metric {
 | 
						|
	event := "public"
 | 
						|
	t := map[string]string{
 | 
						|
		"event":      event,
 | 
						|
		"repository": s.Repository.Repository,
 | 
						|
		"private":    fmt.Sprintf("%v", s.Repository.Private),
 | 
						|
		"user":       s.Sender.User,
 | 
						|
		"admin":      fmt.Sprintf("%v", s.Sender.Admin),
 | 
						|
	}
 | 
						|
	f := map[string]interface{}{
 | 
						|
		"stars":  s.Repository.Stars,
 | 
						|
		"forks":  s.Repository.Forks,
 | 
						|
		"issues": s.Repository.Issues,
 | 
						|
	}
 | 
						|
	m, err := metric.New(meas, t, f, time.Now())
 | 
						|
	if err != nil {
 | 
						|
		log.Fatalf("Failed to create %v event", event)
 | 
						|
	}
 | 
						|
	return m
 | 
						|
}
 | 
						|
 | 
						|
type PullRequestEvent struct {
 | 
						|
	Action      string      `json:"action"`
 | 
						|
	PullRequest PullRequest `json:"pull_request"`
 | 
						|
	Repository  Repository  `json:"repository"`
 | 
						|
	Sender      Sender      `json:"sender"`
 | 
						|
}
 | 
						|
 | 
						|
func (s PullRequestEvent) NewMetric() telegraf.Metric {
 | 
						|
	event := "pull_request"
 | 
						|
	t := map[string]string{
 | 
						|
		"event":      event,
 | 
						|
		"action":     s.Action,
 | 
						|
		"repository": s.Repository.Repository,
 | 
						|
		"private":    fmt.Sprintf("%v", s.Repository.Private),
 | 
						|
		"user":       s.Sender.User,
 | 
						|
		"admin":      fmt.Sprintf("%v", s.Sender.Admin),
 | 
						|
		"prNumber":   fmt.Sprintf("%v", s.PullRequest.Number),
 | 
						|
	}
 | 
						|
	f := map[string]interface{}{
 | 
						|
		"stars":        s.Repository.Stars,
 | 
						|
		"forks":        s.Repository.Forks,
 | 
						|
		"issues":       s.Repository.Issues,
 | 
						|
		"state":        s.PullRequest.State,
 | 
						|
		"title":        s.PullRequest.Title,
 | 
						|
		"comments":     s.PullRequest.Comments,
 | 
						|
		"commits":      s.PullRequest.Commits,
 | 
						|
		"additions":    s.PullRequest.Additions,
 | 
						|
		"deletions":    s.PullRequest.Deletions,
 | 
						|
		"changedFiles": s.PullRequest.ChangedFiles,
 | 
						|
	}
 | 
						|
	m, err := metric.New(meas, t, f, time.Now())
 | 
						|
	if err != nil {
 | 
						|
		log.Fatalf("Failed to create %v event", event)
 | 
						|
	}
 | 
						|
	return m
 | 
						|
}
 | 
						|
 | 
						|
type PullRequestReviewCommentEvent struct {
 | 
						|
	Comment     PullRequestReviewComment `json:"comment"`
 | 
						|
	PullRequest PullRequest              `json:"pull_request"`
 | 
						|
	Repository  Repository               `json:"repository"`
 | 
						|
	Sender      Sender                   `json:"sender"`
 | 
						|
}
 | 
						|
 | 
						|
func (s PullRequestReviewCommentEvent) NewMetric() telegraf.Metric {
 | 
						|
	event := "pull_request_review_comment"
 | 
						|
	t := map[string]string{
 | 
						|
		"event":      event,
 | 
						|
		"repository": s.Repository.Repository,
 | 
						|
		"private":    fmt.Sprintf("%v", s.Repository.Private),
 | 
						|
		"user":       s.Sender.User,
 | 
						|
		"admin":      fmt.Sprintf("%v", s.Sender.Admin),
 | 
						|
		"prNumber":   fmt.Sprintf("%v", s.PullRequest.Number),
 | 
						|
	}
 | 
						|
	f := map[string]interface{}{
 | 
						|
		"stars":        s.Repository.Stars,
 | 
						|
		"forks":        s.Repository.Forks,
 | 
						|
		"issues":       s.Repository.Issues,
 | 
						|
		"state":        s.PullRequest.State,
 | 
						|
		"title":        s.PullRequest.Title,
 | 
						|
		"comments":     s.PullRequest.Comments,
 | 
						|
		"commits":      s.PullRequest.Commits,
 | 
						|
		"additions":    s.PullRequest.Additions,
 | 
						|
		"deletions":    s.PullRequest.Deletions,
 | 
						|
		"changedFiles": s.PullRequest.ChangedFiles,
 | 
						|
		"commentFile":  s.Comment.File,
 | 
						|
		"comment":      s.Comment.Comment,
 | 
						|
	}
 | 
						|
	m, err := metric.New(meas, t, f, time.Now())
 | 
						|
	if err != nil {
 | 
						|
		log.Fatalf("Failed to create %v event", event)
 | 
						|
	}
 | 
						|
	return m
 | 
						|
}
 | 
						|
 | 
						|
type PushEvent struct {
 | 
						|
	Ref        string     `json:"ref"`
 | 
						|
	Before     string     `json:"before"`
 | 
						|
	After      string     `json:"after"`
 | 
						|
	Repository Repository `json:"repository"`
 | 
						|
	Sender     Sender     `json:"sender"`
 | 
						|
}
 | 
						|
 | 
						|
func (s PushEvent) NewMetric() telegraf.Metric {
 | 
						|
	event := "push"
 | 
						|
	t := map[string]string{
 | 
						|
		"event":      event,
 | 
						|
		"repository": s.Repository.Repository,
 | 
						|
		"private":    fmt.Sprintf("%v", s.Repository.Private),
 | 
						|
		"user":       s.Sender.User,
 | 
						|
		"admin":      fmt.Sprintf("%v", s.Sender.Admin),
 | 
						|
	}
 | 
						|
	f := map[string]interface{}{
 | 
						|
		"stars":  s.Repository.Stars,
 | 
						|
		"forks":  s.Repository.Forks,
 | 
						|
		"issues": s.Repository.Issues,
 | 
						|
		"ref":    s.Ref,
 | 
						|
		"before": s.Before,
 | 
						|
		"after":  s.After,
 | 
						|
	}
 | 
						|
	m, err := metric.New(meas, t, f, time.Now())
 | 
						|
	if err != nil {
 | 
						|
		log.Fatalf("Failed to create %v event", event)
 | 
						|
	}
 | 
						|
	return m
 | 
						|
}
 | 
						|
 | 
						|
type ReleaseEvent struct {
 | 
						|
	Release    Release    `json:"release"`
 | 
						|
	Repository Repository `json:"repository"`
 | 
						|
	Sender     Sender     `json:"sender"`
 | 
						|
}
 | 
						|
 | 
						|
func (s ReleaseEvent) NewMetric() telegraf.Metric {
 | 
						|
	event := "release"
 | 
						|
	t := map[string]string{
 | 
						|
		"event":      event,
 | 
						|
		"repository": s.Repository.Repository,
 | 
						|
		"private":    fmt.Sprintf("%v", s.Repository.Private),
 | 
						|
		"user":       s.Sender.User,
 | 
						|
		"admin":      fmt.Sprintf("%v", s.Sender.Admin),
 | 
						|
	}
 | 
						|
	f := map[string]interface{}{
 | 
						|
		"stars":   s.Repository.Stars,
 | 
						|
		"forks":   s.Repository.Forks,
 | 
						|
		"issues":  s.Repository.Issues,
 | 
						|
		"tagName": s.Release.TagName,
 | 
						|
	}
 | 
						|
	m, err := metric.New(meas, t, f, time.Now())
 | 
						|
	if err != nil {
 | 
						|
		log.Fatalf("Failed to create %v event", event)
 | 
						|
	}
 | 
						|
	return m
 | 
						|
}
 | 
						|
 | 
						|
type RepositoryEvent struct {
 | 
						|
	Repository Repository `json:"repository"`
 | 
						|
	Sender     Sender     `json:"sender"`
 | 
						|
}
 | 
						|
 | 
						|
func (s RepositoryEvent) NewMetric() telegraf.Metric {
 | 
						|
	event := "repository"
 | 
						|
	t := map[string]string{
 | 
						|
		"event":      event,
 | 
						|
		"repository": s.Repository.Repository,
 | 
						|
		"private":    fmt.Sprintf("%v", s.Repository.Private),
 | 
						|
		"user":       s.Sender.User,
 | 
						|
		"admin":      fmt.Sprintf("%v", s.Sender.Admin),
 | 
						|
	}
 | 
						|
	f := map[string]interface{}{
 | 
						|
		"stars":  s.Repository.Stars,
 | 
						|
		"forks":  s.Repository.Forks,
 | 
						|
		"issues": s.Repository.Issues,
 | 
						|
	}
 | 
						|
	m, err := metric.New(meas, t, f, time.Now())
 | 
						|
	if err != nil {
 | 
						|
		log.Fatalf("Failed to create %v event", event)
 | 
						|
	}
 | 
						|
	return m
 | 
						|
}
 | 
						|
 | 
						|
type StatusEvent struct {
 | 
						|
	Commit     string     `json:"sha"`
 | 
						|
	State      string     `json:"state"`
 | 
						|
	Repository Repository `json:"repository"`
 | 
						|
	Sender     Sender     `json:"sender"`
 | 
						|
}
 | 
						|
 | 
						|
func (s StatusEvent) NewMetric() telegraf.Metric {
 | 
						|
	event := "status"
 | 
						|
	t := map[string]string{
 | 
						|
		"event":      event,
 | 
						|
		"repository": s.Repository.Repository,
 | 
						|
		"private":    fmt.Sprintf("%v", s.Repository.Private),
 | 
						|
		"user":       s.Sender.User,
 | 
						|
		"admin":      fmt.Sprintf("%v", s.Sender.Admin),
 | 
						|
	}
 | 
						|
	f := map[string]interface{}{
 | 
						|
		"stars":  s.Repository.Stars,
 | 
						|
		"forks":  s.Repository.Forks,
 | 
						|
		"issues": s.Repository.Issues,
 | 
						|
		"commit": s.Commit,
 | 
						|
		"state":  s.State,
 | 
						|
	}
 | 
						|
	m, err := metric.New(meas, t, f, time.Now())
 | 
						|
	if err != nil {
 | 
						|
		log.Fatalf("Failed to create %v event", event)
 | 
						|
	}
 | 
						|
	return m
 | 
						|
}
 | 
						|
 | 
						|
type TeamAddEvent struct {
 | 
						|
	Team       Team       `json:"team"`
 | 
						|
	Repository Repository `json:"repository"`
 | 
						|
	Sender     Sender     `json:"sender"`
 | 
						|
}
 | 
						|
 | 
						|
func (s TeamAddEvent) NewMetric() telegraf.Metric {
 | 
						|
	event := "team_add"
 | 
						|
	t := map[string]string{
 | 
						|
		"event":      event,
 | 
						|
		"repository": s.Repository.Repository,
 | 
						|
		"private":    fmt.Sprintf("%v", s.Repository.Private),
 | 
						|
		"user":       s.Sender.User,
 | 
						|
		"admin":      fmt.Sprintf("%v", s.Sender.Admin),
 | 
						|
	}
 | 
						|
	f := map[string]interface{}{
 | 
						|
		"stars":    s.Repository.Stars,
 | 
						|
		"forks":    s.Repository.Forks,
 | 
						|
		"issues":   s.Repository.Issues,
 | 
						|
		"teamName": s.Team.Name,
 | 
						|
	}
 | 
						|
	m, err := metric.New(meas, t, f, time.Now())
 | 
						|
	if err != nil {
 | 
						|
		log.Fatalf("Failed to create %v event", event)
 | 
						|
	}
 | 
						|
	return m
 | 
						|
}
 | 
						|
 | 
						|
type WatchEvent struct {
 | 
						|
	Repository Repository `json:"repository"`
 | 
						|
	Sender     Sender     `json:"sender"`
 | 
						|
}
 | 
						|
 | 
						|
func (s WatchEvent) NewMetric() telegraf.Metric {
 | 
						|
	event := "delete"
 | 
						|
	t := map[string]string{
 | 
						|
		"event":      event,
 | 
						|
		"repository": s.Repository.Repository,
 | 
						|
		"private":    fmt.Sprintf("%v", s.Repository.Private),
 | 
						|
		"user":       s.Sender.User,
 | 
						|
		"admin":      fmt.Sprintf("%v", s.Sender.Admin),
 | 
						|
	}
 | 
						|
	f := map[string]interface{}{
 | 
						|
		"stars":  s.Repository.Stars,
 | 
						|
		"forks":  s.Repository.Forks,
 | 
						|
		"issues": s.Repository.Issues,
 | 
						|
	}
 | 
						|
	m, err := metric.New(meas, t, f, time.Now())
 | 
						|
	if err != nil {
 | 
						|
		log.Fatalf("Failed to create %v event", event)
 | 
						|
	}
 | 
						|
	return m
 | 
						|
}
 |