11package server
22
33import (
4+ "crypto/tls"
45 "errors"
56 "fmt"
67 "net/http"
@@ -156,11 +157,16 @@ func (r *RouteHandler) getLogs(c *gin.Context) {
156157 c .JSON (http .StatusOK , toServerResult (result ))
157158}
158159
159- func initRouter (ctx xcontext.Context , rh RouteHandler ) * gin.Engine {
160+ func initRouter (ctx xcontext.Context , rh RouteHandler , middlewares []gin. HandlerFunc ) * gin.Engine {
160161
161162 r := gin .New ()
162163 r .Use (gin .Logger ())
163164
165+ // add the middlewares
166+ for _ , hf := range middlewares {
167+ r .Use (hf )
168+ }
169+
164170 r .GET ("/status" , rh .status )
165171 r .POST ("/log" , rh .addLog )
166172 r .GET ("/log" , rh .getLogs )
@@ -171,15 +177,16 @@ func initRouter(ctx xcontext.Context, rh RouteHandler) *gin.Engine {
171177 return r
172178}
173179
174- func Serve (ctx xcontext.Context , port int , storage storage.Storage ) error {
180+ func Serve (ctx xcontext.Context , port int , storage storage.Storage , middlewares []gin. HandlerFunc , tlsConfig * tls. Config ) error {
175181 routeHandler := RouteHandler {
176182 storage : storage ,
177183 log : ctx .Logger (),
178184 }
179- router := initRouter (ctx , routeHandler )
185+ router := initRouter (ctx , routeHandler , middlewares )
180186 server := & http.Server {
181- Addr : fmt .Sprintf (":%d" , port ),
182- Handler : router ,
187+ Addr : fmt .Sprintf (":%d" , port ),
188+ Handler : router ,
189+ TLSConfig : tlsConfig ,
183190 }
184191
185192 go func () {
@@ -191,7 +198,14 @@ func Serve(ctx xcontext.Context, port int, storage storage.Storage) error {
191198 }
192199 }()
193200
194- if err := server .ListenAndServe (); err != nil && err != http .ErrServerClosed {
201+ var err error
202+ if tlsConfig != nil {
203+ err = server .ListenAndServeTLS ("" , "" )
204+ } else {
205+ err = server .ListenAndServe ()
206+ }
207+
208+ if err != nil && err != http .ErrServerClosed {
195209 return err
196210 }
197211
0 commit comments