| package app |
| |
| import ( |
| "fmt" |
| |
| "github.com/iomodo/staff/git" |
| ) |
| |
| func (a *App) ProposalApproval(body []byte, signature string) error { |
| // Validate the webhook signature |
| if err := git.ValidateSignature(body, signature, a.config.GitHub.WebhookSecret); err != nil { |
| return fmt.Errorf("invalid webhook signature: %w", err) |
| } |
| |
| // Process the webhook payload |
| taskID, err := git.ProcessMergeWebhook(body, signature, a.config.GitHub.WebhookSecret) |
| if err != nil { |
| return fmt.Errorf("Failed to process webhook: %w", err) |
| } |
| |
| // Log the successful approval |
| a.logger.Info("Proposal approved via webhook", |
| "task_id", taskID, |
| ) |
| return nil |
| } |