8000 GitHub - noware-ai/github-webhook-dotnet: Collection of .NET data models to parse GitHub webhook payload.
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

noware-ai/github-webhook-dotnet

Repository files navigation

Collection of event data models to parse GitHub webhook payload.

Usage:

  • Enable GitHub webhook to your .NET endpoint, use application/json format
  • Capture request body, ie JSON payload
  • Use generic GitHubWebhookPayload class for a generic data parse
  • Use GitHubWebhook.GetEventType() to detect specific event types
  • Use .AsABCEventName() for specific data parse

Generic deserialization

string json = "...request payload...";

GitHubWebhookPayload ghData = JsonSerializer.Deserialize<GitHubWebhookPayload>(json);

Detecting the event type

string eventName = req.Headers.TryGetValue("X-GitHub-Event", out var header) ? (string)header : string.Empty;
string json = "...request payload...";

// Using GitHubEvents Enum
GitHubEvents ghEventType = GitHubWebhook.GetEventType(json, eventName);

Deserialize to event class

string json = "...request payload...";
GitHubWebhookPayload data = JsonSerializer.Deserialize<GitHubWebhookPayload>(json);

string eventName = req.Headers.TryGetValue("X-GitHub-Event", out var header) ? (string)header : string.Empty;
GitHubEvents ghEventType = GitHubWebhook.GetEventType(json, eventName);

if (ghEventType == GitHubEvents.IssueOpened)
{
    // Extract relevant data from GitHubWebhookPayload
    IssueOpened ghEventData = data.AsIssueOpened();
}

Note

The collection of data models does not cover 100% of scenarios. PRs with additional classes and parsing are welcome.

About

Collection of .NET data models to parse GitHub webhook payload.

Resources

License

Stars

Watchers

Forks

Languages

0