...

Source file src/github.com/google/go-github/v45/github/event.go

Documentation: github.com/google/go-github/v45/github

     1  // Copyright 2018 The go-github AUTHORS. All rights reserved.
     2  //
     3  // Use of this source code is governed by a BSD-style
     4  // license that can be found in the LICENSE file.
     5  
     6  package github
     7  
     8  import (
     9  	"encoding/json"
    10  	"time"
    11  )
    12  
    13  // Event represents a GitHub event.
    14  type Event struct {
    15  	Type       *string          `json:"type,omitempty"`
    16  	Public     *bool            `json:"public,omitempty"`
    17  	RawPayload *json.RawMessage `json:"payload,omitempty"`
    18  	Repo       *Repository      `json:"repo,omitempty"`
    19  	Actor      *User            `json:"actor,omitempty"`
    20  	Org        *Organization    `json:"org,omitempty"`
    21  	CreatedAt  *time.Time       `json:"created_at,omitempty"`
    22  	ID         *string          `json:"id,omitempty"`
    23  }
    24  
    25  func (e Event) String() string {
    26  	return Stringify(e)
    27  }
    28  
    29  // ParsePayload parses the event payload. For recognized event types,
    30  // a value of the corresponding struct type will be returned.
    31  func (e *Event) ParsePayload() (payload interface{}, err error) {
    32  	switch *e.Type {
    33  	case "BranchProtectionRuleEvent":
    34  		payload = &BranchProtectionRuleEvent{}
    35  	case "CheckRunEvent":
    36  		payload = &CheckRunEvent{}
    37  	case "CheckSuiteEvent":
    38  		payload = &CheckSuiteEvent{}
    39  	case "CommitCommentEvent":
    40  		payload = &CommitCommentEvent{}
    41  	case "ContentReferenceEvent":
    42  		payload = &ContentReferenceEvent{}
    43  	case "CreateEvent":
    44  		payload = &CreateEvent{}
    45  	case "DeleteEvent":
    46  		payload = &DeleteEvent{}
    47  	case "DeployKeyEvent":
    48  		payload = &DeployKeyEvent{}
    49  	case "DeploymentEvent":
    50  		payload = &DeploymentEvent{}
    51  	case "DeploymentStatusEvent":
    52  		payload = &DeploymentStatusEvent{}
    53  	case "DiscussionEvent":
    54  		payload = &DiscussionEvent{}
    55  	case "ForkEvent":
    56  		payload = &ForkEvent{}
    57  	case "GitHubAppAuthorizationEvent":
    58  		payload = &GitHubAppAuthorizationEvent{}
    59  	case "GollumEvent":
    60  		payload = &GollumEvent{}
    61  	case "InstallationEvent":
    62  		payload = &InstallationEvent{}
    63  	case "InstallationRepositoriesEvent":
    64  		payload = &InstallationRepositoriesEvent{}
    65  	case "IssueCommentEvent":
    66  		payload = &IssueCommentEvent{}
    67  	case "IssuesEvent":
    68  		payload = &IssuesEvent{}
    69  	case "LabelEvent":
    70  		payload = &LabelEvent{}
    71  	case "MarketplacePurchaseEvent":
    72  		payload = &MarketplacePurchaseEvent{}
    73  	case "MemberEvent":
    74  		payload = &MemberEvent{}
    75  	case "MembershipEvent":
    76  		payload = &MembershipEvent{}
    77  	case "MetaEvent":
    78  		payload = &MetaEvent{}
    79  	case "MilestoneEvent":
    80  		payload = &MilestoneEvent{}
    81  	case "OrganizationEvent":
    82  		payload = &OrganizationEvent{}
    83  	case "OrgBlockEvent":
    84  		payload = &OrgBlockEvent{}
    85  	case "PackageEvent":
    86  		payload = &PackageEvent{}
    87  	case "PageBuildEvent":
    88  		payload = &PageBuildEvent{}
    89  	case "PingEvent":
    90  		payload = &PingEvent{}
    91  	case "ProjectEvent":
    92  		payload = &ProjectEvent{}
    93  	case "ProjectCardEvent":
    94  		payload = &ProjectCardEvent{}
    95  	case "ProjectColumnEvent":
    96  		payload = &ProjectColumnEvent{}
    97  	case "PublicEvent":
    98  		payload = &PublicEvent{}
    99  	case "PullRequestEvent":
   100  		payload = &PullRequestEvent{}
   101  	case "PullRequestReviewEvent":
   102  		payload = &PullRequestReviewEvent{}
   103  	case "PullRequestReviewCommentEvent":
   104  		payload = &PullRequestReviewCommentEvent{}
   105  	case "PullRequestReviewThreadEvent":
   106  		payload = &PullRequestReviewThreadEvent{}
   107  	case "PullRequestTargetEvent":
   108  		payload = &PullRequestTargetEvent{}
   109  	case "PushEvent":
   110  		payload = &PushEvent{}
   111  	case "ReleaseEvent":
   112  		payload = &ReleaseEvent{}
   113  	case "RepositoryEvent":
   114  		payload = &RepositoryEvent{}
   115  	case "RepositoryDispatchEvent":
   116  		payload = &RepositoryDispatchEvent{}
   117  	case "RepositoryImportEvent":
   118  		payload = &RepositoryImportEvent{}
   119  	case "RepositoryVulnerabilityAlertEvent":
   120  		payload = &RepositoryVulnerabilityAlertEvent{}
   121  	case "SecretScanningAlertEvent":
   122  		payload = &SecretScanningAlertEvent{}
   123  	case "StarEvent":
   124  		payload = &StarEvent{}
   125  	case "StatusEvent":
   126  		payload = &StatusEvent{}
   127  	case "TeamEvent":
   128  		payload = &TeamEvent{}
   129  	case "TeamAddEvent":
   130  		payload = &TeamAddEvent{}
   131  	case "UserEvent":
   132  		payload = &UserEvent{}
   133  	case "WatchEvent":
   134  		payload = &WatchEvent{}
   135  	case "WorkflowDispatchEvent":
   136  		payload = &WorkflowDispatchEvent{}
   137  	case "WorkflowJobEvent":
   138  		payload = &WorkflowJobEvent{}
   139  	case "WorkflowRunEvent":
   140  		payload = &WorkflowRunEvent{}
   141  	}
   142  	err = json.Unmarshal(*e.RawPayload, &payload)
   143  	return payload, err
   144  }
   145  
   146  // Payload returns the parsed event payload. For recognized event types,
   147  // a value of the corresponding struct type will be returned.
   148  //
   149  // Deprecated: Use ParsePayload instead, which returns an error
   150  // rather than panics if JSON unmarshaling raw payload fails.
   151  func (e *Event) Payload() (payload interface{}) {
   152  	var err error
   153  	payload, err = e.ParsePayload()
   154  	if err != nil {
   155  		panic(err)
   156  	}
   157  	return payload
   158  }
   159  

View as plain text