gitee.com/sasukebo/go-micro/v4@v4.7.1/api/server/options.go (about)

     1  package server
     2  
     3  import (
     4  	"crypto/tls"
     5  	"gitee.com/sasukebo/go-micro/v4/api/server/cors"
     6  	"net/http"
     7  
     8  	"gitee.com/sasukebo/go-micro/v4/api/resolver"
     9  	"gitee.com/sasukebo/go-micro/v4/api/server/acme"
    10  )
    11  
    12  type Option func(o *Options)
    13  
    14  type Options struct {
    15  	EnableACME   bool
    16  	EnableCORS   bool
    17  	CORSConfig   *cors.Config
    18  	ACMEProvider acme.Provider
    19  	EnableTLS    bool
    20  	ACMEHosts    []string
    21  	TLSConfig    *tls.Config
    22  	Resolver     resolver.Resolver
    23  	Wrappers     []Wrapper
    24  }
    25  
    26  type Wrapper func(h http.Handler) http.Handler
    27  
    28  func WrapHandler(w Wrapper) Option {
    29  	return func(o *Options) {
    30  		o.Wrappers = append(o.Wrappers, w)
    31  	}
    32  }
    33  
    34  func EnableCORS(b bool) Option {
    35  	return func(o *Options) {
    36  		o.EnableCORS = b
    37  	}
    38  }
    39  
    40  func CORSConfig(c *cors.Config) Option {
    41  	return func(o *Options) {
    42  		o.CORSConfig = c
    43  	}
    44  }
    45  
    46  func EnableACME(b bool) Option {
    47  	return func(o *Options) {
    48  		o.EnableACME = b
    49  	}
    50  }
    51  
    52  func ACMEHosts(hosts ...string) Option {
    53  	return func(o *Options) {
    54  		o.ACMEHosts = hosts
    55  	}
    56  }
    57  
    58  func ACMEProvider(p acme.Provider) Option {
    59  	return func(o *Options) {
    60  		o.ACMEProvider = p
    61  	}
    62  }
    63  
    64  func EnableTLS(b bool) Option {
    65  	return func(o *Options) {
    66  		o.EnableTLS = b
    67  	}
    68  }
    69  
    70  func TLSConfig(t *tls.Config) Option {
    71  	return func(o *Options) {
    72  		o.TLSConfig = t
    73  	}
    74  }
    75  
    76  func Resolver(r resolver.Resolver) Option {
    77  	return func(o *Options) {
    78  		o.Resolver = r
    79  	}
    80  }