gitee.com/liuxuezhan/go-micro-v1.18.0@v1.0.0/api/router/options.go (about) 1 package router 2 3 import ( 4 "gitee.com/liuxuezhan/go-micro-v1.18.0/api/resolver" 5 "gitee.com/liuxuezhan/go-micro-v1.18.0/api/resolver/micro" 6 "gitee.com/liuxuezhan/go-micro-v1.18.0/config/cmd" 7 "gitee.com/liuxuezhan/go-micro-v1.18.0/registry" 8 ) 9 10 type Options struct { 11 Namespace string 12 Handler string 13 Registry registry.Registry 14 Resolver resolver.Resolver 15 } 16 17 type Option func(o *Options) 18 19 func NewOptions(opts ...Option) Options { 20 options := Options{ 21 Handler: "meta", 22 Registry: *cmd.DefaultOptions().Registry, 23 } 24 25 for _, o := range opts { 26 o(&options) 27 } 28 29 if options.Resolver == nil { 30 options.Resolver = micro.NewResolver( 31 resolver.WithHandler(options.Handler), 32 resolver.WithNamespace(options.Namespace), 33 ) 34 } 35 36 return options 37 } 38 39 func WithHandler(h string) Option { 40 return func(o *Options) { 41 o.Handler = h 42 } 43 } 44 45 func WithNamespace(ns string) Option { 46 return func(o *Options) { 47 o.Namespace = ns 48 } 49 } 50 51 func WithRegistry(r registry.Registry) Option { 52 return func(o *Options) { 53 o.Registry = r 54 } 55 } 56 57 func WithResolver(r resolver.Resolver) Option { 58 return func(o *Options) { 59 o.Resolver = r 60 } 61 }