mirror of
https://github.com/actions/actions-runner-controller.git
synced 2025-12-10 19:50:30 +00:00
* Add POC of GitHub Webhook Delivery Forwarder * multi-forwarder and ctrl-c existing and fix for non-woring http post * Rename source files * Extract signal handling into a dedicated source file * Faster ctrl-c handling * Enable automatic creation of repo hook on startup * Add support for forwarding org hook deliveries * Set hook secret on hook creation via envvar (HOOK_SECRET) * Fix org hook support * Fix HOOK_SECRET for consistency * Refactor to prepare for custom log position provider * Refactor to extract inmemory log position provider * Add configmap-based log position provider * Rename githubwebhookdeliveryforwarder to hookdeliveryforwarder * Refactor to rename LogPositionProvider to Checkpointer and extract ConfigMap checkpointer into a dedicated pkg * Refactor to extract logger initialization * Add hookdeliveryforwarder README and bump go-github to unreleased ver
31 lines
572 B
Go
31 lines
572 B
Go
package hookdeliveryforwarder
|
|
|
|
import "time"
|
|
|
|
type Checkpointer interface {
|
|
GetOrCreate(hookID int64) (*State, error)
|
|
Update(hookID int64, pos *State) error
|
|
}
|
|
|
|
type InMemoryCheckpointer struct {
|
|
t time.Time
|
|
id int64
|
|
}
|
|
|
|
func (p *InMemoryCheckpointer) GetOrCreate(hookID int64) (*State, error) {
|
|
return &State{DeliveredAt: p.t}, nil
|
|
}
|
|
|
|
func (p *InMemoryCheckpointer) Update(hookID int64, pos *State) error {
|
|
p.t = pos.DeliveredAt
|
|
p.id = pos.ID
|
|
|
|
return nil
|
|
}
|
|
|
|
func NewInMemoryLogPositionProvider() Checkpointer {
|
|
return &InMemoryCheckpointer{
|
|
t: time.Now(),
|
|
}
|
|
}
|