1
0
mirror of https://github.com/go-micro/go-micro.git synced 2025-01-29 18:04:17 +02:00
go-micro/api/server/options.go

103 lines
1.6 KiB
Go
Raw Normal View History

2019-06-03 18:44:43 +01:00
package server
import (
"crypto/tls"
2020-04-07 19:29:26 +01:00
"net/http"
"go-micro.dev/v4/api/server/cors"
"go-micro.dev/v4/logger"
2021-10-12 12:55:53 +01:00
"go-micro.dev/v4/api/resolver"
"go-micro.dev/v4/api/server/acme"
2019-06-03 18:44:43 +01:00
)
type Option func(o *Options)
type Options struct {
2020-04-07 19:29:26 +01:00
EnableACME bool
EnableCORS bool
CORSConfig *cors.Config
2020-04-07 19:29:26 +01:00
ACMEProvider acme.Provider
EnableTLS bool
ACMEHosts []string
TLSConfig *tls.Config
Resolver resolver.Resolver
Wrappers []Wrapper
Logger logger.Logger
2020-04-07 19:29:26 +01:00
}
type Wrapper func(h http.Handler) http.Handler
func NewOptions(opts ...Option) Options {
options := Options{
Logger: logger.DefaultLogger,
}
for _, o := range opts {
o(&options)
}
return options
}
2020-04-07 19:29:26 +01:00
func WrapHandler(w Wrapper) Option {
return func(o *Options) {
o.Wrappers = append(o.Wrappers, w)
}
}
2020-03-04 11:40:53 +00:00
func EnableCORS(b bool) Option {
return func(o *Options) {
o.EnableCORS = b
}
}
func CORSConfig(c *cors.Config) Option {
return func(o *Options) {
o.CORSConfig = c
}
}
func EnableACME(b bool) Option {
return func(o *Options) {
o.EnableACME = b
}
2019-06-03 18:44:43 +01:00
}
func ACMEHosts(hosts ...string) Option {
return func(o *Options) {
o.ACMEHosts = hosts
}
}
func ACMEProvider(p acme.Provider) Option {
2019-06-03 18:44:43 +01:00
return func(o *Options) {
o.ACMEProvider = p
2019-06-03 18:44:43 +01: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 17:44:48 +01:00
2020-04-07 16:24:51 +01:00
func Resolver(r resolver.Resolver) Option {
2020-04-02 17:44:48 +01:00
return func(o *Options) {
2020-04-07 16:24:51 +01:00
o.Resolver = r
2020-04-02 17:44:48 +01:00
}
}
// Logger sets the underline logging framework
func Logger(l logger.Logger) Option {
return func(o *Options) {
o.Logger = l
}
}