1
1
package server
2
2
3
3
import (
4
+ "crypto/tls"
4
5
"errors"
5
6
"fmt"
6
7
"net/http"
@@ -156,11 +157,16 @@ func (r *RouteHandler) getLogs(c *gin.Context) {
156
157
c .JSON (http .StatusOK , toServerResult (result ))
157
158
}
158
159
159
- func initRouter (ctx xcontext.Context , rh RouteHandler ) * gin.Engine {
160
+ func initRouter (ctx xcontext.Context , rh RouteHandler , middlewares []gin. HandlerFunc ) * gin.Engine {
160
161
161
162
r := gin .New ()
162
163
r .Use (gin .Logger ())
163
164
165
+ // add the middlewares
166
+ for _ , hf := range middlewares {
167
+ r .Use (hf )
168
+ }
169
+
164
170
r .GET ("/status" , rh .status )
165
171
r .POST ("/log" , rh .addLog )
166
172
r .GET ("/log" , rh .getLogs )
@@ -171,15 +177,16 @@ func initRouter(ctx xcontext.Context, rh RouteHandler) *gin.Engine {
171
177
return r
172
178
}
173
179
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 {
175
181
routeHandler := RouteHandler {
176
182
storage : storage ,
177
183
log : ctx .Logger (),
178
184
}
179
- router := initRouter (ctx , routeHandler )
185
+ router := initRouter (ctx , routeHandler , middlewares )
180
186
server := & http.Server {
181
- Addr : fmt .Sprintf (":%d" , port ),
182
- Handler : router ,
187
+ Addr : fmt .Sprintf (":%d" , port ),
188
+ Handler : router ,
189
+ TLSConfig : tlsConfig ,
183
190
}
184
191
185
192
go func () {
@@ -191,7 +198,14 @@ func Serve(ctx xcontext.Context, port int, storage storage.Storage) error {
191
198
}
192
199
}()
193
200
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 {
195
209
return err
196
210
}
197
211
0 commit comments