package handler import ( "github.com/micro/go-micro/v2" "github.com/micro/go-micro/v2/api/router" ) var ( DefaultMaxRecvSize int64 = 1024 * 1024 * 100 // 10Mb ) type Options struct { MaxRecvSize int64 Namespace string Router router.Router Service micro.Service } type Option func(o *Options) // NewOptions fills in the blanks func NewOptions(opts ...Option) Options { var options Options for _, o := range opts { o(&options) } // create service if its blank if options.Service == nil { WithService(micro.NewService())(&options) } // set namespace if blank if len(options.Namespace) == 0 { WithNamespace("go.micro.api")(&options) } if options.MaxRecvSize == 0 { options.MaxRecvSize = DefaultMaxRecvSize } return options } // WithNamespace specifies the namespace for the handler func WithNamespace(s string) Option { return func(o *Options) { o.Namespace = s } } // WithRouter specifies a router to be used by the handler func WithRouter(r router.Router) Option { return func(o *Options) { o.Router = r } } // WithService specifies a micro.Service func WithService(s micro.Service) Option { return func(o *Options) { o.Service = s } } // WithmaxRecvSize specifies max body size func WithMaxRecvSize(size int64) Option { return func(o *Options) { o.MaxRecvSize = size } }