micro/api/server/options.go

84 lines
1.4 KiB
Go
Raw Normal View History

2019-06-03 20:44:43 +03:00
package server
import (
"crypto/tls"
2020-04-07 21:29:26 +03:00
"net/http"
"github.com/unistack-org/micro/v3/api/resolver"
"github.com/unistack-org/micro/v3/api/server/acme"
2019-06-03 20:44:43 +03:00
)
// Option func
2019-06-03 20:44:43 +03:00
type Option func(o *Options)
// Options for api server
2019-06-03 20:44:43 +03:00
type Options struct {
2020-04-07 21:29:26 +03:00
EnableACME bool
EnableCORS bool
ACMEProvider acme.Provider
EnableTLS bool
ACMEHosts []string
TLSConfig *tls.Config
Resolver resolver.Resolver
Wrappers []Wrapper
}
// NewOptions returns new Options
func NewOptions(opts ...Option) Options {
options := Options{}
for _, o := range opts {
o(&options)
}
return options
}
2020-04-07 21:29:26 +03:00
type Wrapper func(h http.Handler) http.Handler
func WrapHandler(w ...Wrapper) Option {
2020-04-07 21:29:26 +03:00
return func(o *Options) {
o.Wrappers = append(o.Wrappers, w...)
2020-04-07 21:29:26 +03:00
}
}
2020-03-04 14:40:53 +03:00
func EnableCORS(b bool) Option {
return func(o *Options) {
o.EnableCORS = b
}
}
func EnableACME(b bool) Option {
return func(o *Options) {
o.EnableACME = b
}
2019-06-03 20:44:43 +03:00
}
func ACMEHosts(hosts ...string) Option {
return func(o *Options) {
o.ACMEHosts = hosts
}
}
func ACMEProvider(p acme.Provider) Option {
2019-06-03 20:44:43 +03:00
return func(o *Options) {
o.ACMEProvider = p
2019-06-03 20:44:43 +03:00
}
}
func EnableTLS(b bool) Option {
return func(o *Options) {
o.EnableTLS = b
}
}
func TLSConfig(t *tls.Config) Option {
return func(o *Options) {
o.TLSConfig = t
}
}
2020-04-02 19:44:48 +03:00
2020-04-07 18:24:51 +03:00
func Resolver(r resolver.Resolver) Option {
2020-04-02 19:44:48 +03:00
return func(o *Options) {
2020-04-07 18:24:51 +03:00
o.Resolver = r
2020-04-02 19:44:48 +03:00
}
}