Skip to content

Use enums for the action field in GitHub Webhooks #3127

Open

Description

@prnvbn

Issue Description:

Many GitHub webhooks contain the action field, which is enumerated. For example, in the GitHub documentation for webhook payloads and events, the check_run event includes an action property that can take on values such as "completed", "created", "requested_action", and "rerequested". However, in the library, these fields are currently represented as free-form strings. In my opinion, making these enums would be more user-friendly.

Proposed Solution

A rudimentary example of how this can be done is as follows (go play ground link)

package main

import (
	"encoding/json"
	"fmt"
)

type ChecRunAction string

const (
	CheckRunCreated         ChecRunAction = "created"
	CheckRunRequested       ChecRunAction = "requested"
	CheckRunRerequested     ChecRunAction = "rerequested"
	CheckRunRequestedAction ChecRunAction = "requested_action"
)

func main() {
	jsonStr := `{"hi": "created"}`

	var v struct {
		A ChecRunAction `json:"hi"`
	}
	json.Unmarshal([]byte(jsonStr), &v)
	fmt.Println(v)
}

Activity

  1. prnvbn commented on Apr 11, 2024

    @prnvbn
    ContributorAuthor

    If you agree, I can make this change

  2. gmlewis commented on Apr 11, 2024

    @gmlewis
    Collaborator

    That seems safe to me.

  3. prnvbn commented on Apr 12, 2024

    @prnvbn
    ContributorAuthor

    nice, will send a PR your way!

  4. prnvbn commented on Apr 21, 2024

    @prnvbn
    ContributorAuthor

    @gmlewis, please could you review the PR: #3136?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions