mirror of https://github.com/knative/docs.git
74 lines
1.8 KiB
Go
74 lines
1.8 KiB
Go
package client
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/cloudevents/sdk-go/v2/binding"
|
|
)
|
|
|
|
// Option is the function signature required to be considered an client.Option.
|
|
type Option func(interface{}) error
|
|
|
|
// WithEventDefaulter adds an event defaulter to the end of the defaulter chain.
|
|
func WithEventDefaulter(fn EventDefaulter) Option {
|
|
return func(i interface{}) error {
|
|
if c, ok := i.(*ceClient); ok {
|
|
if fn == nil {
|
|
return fmt.Errorf("client option was given an nil event defaulter")
|
|
}
|
|
c.eventDefaulterFns = append(c.eventDefaulterFns, fn)
|
|
}
|
|
return nil
|
|
}
|
|
}
|
|
|
|
func WithForceBinary() Option {
|
|
return func(i interface{}) error {
|
|
if c, ok := i.(*ceClient); ok {
|
|
c.outboundContextDecorators = append(c.outboundContextDecorators, binding.WithForceBinary)
|
|
}
|
|
return nil
|
|
}
|
|
}
|
|
|
|
func WithForceStructured() Option {
|
|
return func(i interface{}) error {
|
|
if c, ok := i.(*ceClient); ok {
|
|
c.outboundContextDecorators = append(c.outboundContextDecorators, binding.WithForceStructured)
|
|
}
|
|
return nil
|
|
}
|
|
}
|
|
|
|
// WithUUIDs adds DefaultIDToUUIDIfNotSet event defaulter to the end of the
|
|
// defaulter chain.
|
|
func WithUUIDs() Option {
|
|
return func(i interface{}) error {
|
|
if c, ok := i.(*ceClient); ok {
|
|
c.eventDefaulterFns = append(c.eventDefaulterFns, DefaultIDToUUIDIfNotSet)
|
|
}
|
|
return nil
|
|
}
|
|
}
|
|
|
|
// WithTimeNow adds DefaultTimeToNowIfNotSet event defaulter to the end of the
|
|
// defaulter chain.
|
|
func WithTimeNow() Option {
|
|
return func(i interface{}) error {
|
|
if c, ok := i.(*ceClient); ok {
|
|
c.eventDefaulterFns = append(c.eventDefaulterFns, DefaultTimeToNowIfNotSet)
|
|
}
|
|
return nil
|
|
}
|
|
}
|
|
|
|
// WithTracePropagation enables trace propagation via the distributed tracing
|
|
// extension.
|
|
func WithTracePropagation() Option {
|
|
return func(i interface{}) error {
|
|
if c, ok := i.(*obsClient); ok {
|
|
c.addTracing = true
|
|
}
|
|
return nil
|
|
}
|
|
}
|