|
@@ -41,12 +41,23 @@ func NewServer(addr string, secret []byte) IServer {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func NewServerTLS(addr string, secret []byte, tlsKey, tlsCert string) IServer {
|
|
|
+ serv := NewServer(addr, secret).(*Server)
|
|
|
+ serv.tlsEnabled = true
|
|
|
+ serv.tlsKey = tlsKey
|
|
|
+ serv.tlsCert = tlsCert
|
|
|
+ return serv
|
|
|
+}
|
|
|
+
|
|
|
// Server реализует сервер для рест апи
|
|
|
type Server struct {
|
|
|
- secret []byte
|
|
|
- server *http.Server
|
|
|
- opened atomic.Bool
|
|
|
- ctx context.Context
|
|
|
+ secret []byte
|
|
|
+ server *http.Server
|
|
|
+ opened atomic.Bool
|
|
|
+ ctx context.Context
|
|
|
+ tlsEnabled bool
|
|
|
+ tlsKey string
|
|
|
+ tlsCert string
|
|
|
}
|
|
|
|
|
|
// Context возвращает контекст сервера
|
|
@@ -72,7 +83,11 @@ func (s *Server) Listen(timeout time.Duration) (err error) {
|
|
|
go func() {
|
|
|
var cancel context.CancelFunc
|
|
|
s.ctx, cancel = context.WithCancel(context.Background())
|
|
|
- err = s.server.ListenAndServe()
|
|
|
+ if !s.tlsEnabled {
|
|
|
+ err = s.server.ListenAndServe()
|
|
|
+ } else {
|
|
|
+ err = s.server.ListenAndServeTLS(s.tlsCert, s.tlsKey)
|
|
|
+ }
|
|
|
s.opened.Store(false)
|
|
|
cancel()
|
|
|
}()
|