Skip to content

Use enums for the action field in GitHub Webhooks #3127

Open
@prnvbn

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

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