github.com/annwntech/go-micro/v2@v2.9.5/config/source/options.go (about) 1 package source 2 3 import ( 4 "context" 5 6 "github.com/annwntech/go-micro/v2/client" 7 "github.com/annwntech/go-micro/v2/config/encoder" 8 "github.com/annwntech/go-micro/v2/config/encoder/json" 9 ) 10 11 type Options struct { 12 // Encoder 13 Encoder encoder.Encoder 14 15 // for alternative data 16 Context context.Context 17 18 // Client to use for RPC 19 Client client.Client 20 } 21 22 type Option func(o *Options) 23 24 func NewOptions(opts ...Option) Options { 25 options := Options{ 26 Encoder: json.NewEncoder(), 27 Context: context.Background(), 28 Client: client.DefaultClient, 29 } 30 31 for _, o := range opts { 32 o(&options) 33 } 34 35 return options 36 } 37 38 // WithEncoder sets the source encoder 39 func WithEncoder(e encoder.Encoder) Option { 40 return func(o *Options) { 41 o.Encoder = e 42 } 43 } 44 45 // WithClient sets the source client 46 func WithClient(c client.Client) Option { 47 return func(o *Options) { 48 o.Client = c 49 } 50 }