diff options
Diffstat (limited to 'pkg/cfg/cfg.go')
| -rw-r--r-- | pkg/cfg/cfg.go | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/pkg/cfg/cfg.go b/pkg/cfg/cfg.go new file mode 100644 index 00000000..0d7a6427 --- /dev/null +++ b/pkg/cfg/cfg.go @@ -0,0 +1,34 @@ +package cfg + +import ( + "crypto/tls" + "net/http" +) + +type Config struct { + BindAddress string + Mux http.Handler + TLS *tls.Config +} + +func New(addr string, options ...Option) *Config { + if addr == "" { + addr = ":0" + } + + c := &Config{ + BindAddress: addr, + Mux: http.DefaultServeMux, + } + for _, option := range options { + option(c) + } + return c +} + +func (c *Config) Run(server *http.Server) error { + if c.TLS != nil { + return server.ListenAndServeTLS("", "") + } + return server.ListenAndServe() +} |
