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
 | |
| }
 |