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  }