Files
actions-runner-controller/pkg/hookdeliveryforwarder/checkpointer.go
Yusuke Kuoka f858e2e432 Add POC of GitHub Webhook Delivery Forwarder (#682)
* 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
2021-07-14 10:18:55 +09:00

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