@@ -13,14 +13,24 @@ import (
13
13
14
14
"github.com/fasthttp/router"
15
15
"github.com/randlabs/go-webserver/listener"
16
- "github.com/randlabs/go-webserver/middleware"
17
- "github.com/randlabs/go-webserver/models"
18
16
"github.com/randlabs/go-webserver/request"
19
17
"github.com/valyala/fasthttp"
20
18
)
21
19
22
20
// -----------------------------------------------------------------------------
23
21
22
+ // ListenErrorHandler is a callback to call if an error is encountered in the network listener.
23
+ type ListenErrorHandler func (srv * Server , err error )
24
+
25
+ // RequestErrorHandler is a callback to call if an error is encountered while processing a request.
26
+ type RequestErrorHandler func (req * request.RequestContext , err error )
27
+
28
+ // HandlerFunc defines a function that handles a request
29
+ type HandlerFunc func (req * request.RequestContext ) error
30
+
31
+ // MiddlewareFunc defines a function that is executed when a request is received
32
+ type MiddlewareFunc func (next HandlerFunc ) HandlerFunc
33
+
24
34
// Server is the main server object
25
35
type Server struct {
26
36
fastserver fasthttp.Server
@@ -29,7 +39,7 @@ type Server struct {
29
39
bindPort uint16
30
40
listenErrorHandler ListenErrorHandler
31
41
requestErrorHandler RequestErrorHandler
32
- middlewares []middleware. MiddlewareFunc
42
+ middlewares []MiddlewareFunc
33
43
state int32
34
44
startShutdownSignal chan struct {}
35
45
shutdownCompleteSignal chan struct {}
@@ -77,18 +87,12 @@ type Options struct {
77
87
RequestErrorHandler RequestErrorHandler
78
88
79
89
// A custom handler for 404 errors
80
- NotFoundHandler models. HandlerFunc
90
+ NotFoundHandler HandlerFunc
81
91
82
92
// TLSConfig optionally provides a TLS configuration for use.
83
93
TLSConfig * tls.Config
84
94
}
85
95
86
- // ListenErrorHandler is a callback to call if an error is encountered in the network listener.
87
- type ListenErrorHandler func (srv * Server , err error )
88
-
89
- // RequestErrorHandler is a callback to call if an error is encountered while processing a request.
90
- type RequestErrorHandler func (req * request.RequestContext , err error )
91
-
92
96
// ServerFilesOptions sets the parameters to use in a ServeFiles call
93
97
type ServerFilesOptions struct {
94
98
// Base directory where public files are located
@@ -105,7 +109,7 @@ type ServerFilesOptions struct {
105
109
AcceptByteRange bool
106
110
107
111
// Custom file not found handler. Defaults to the server NotFound handler.
108
- NotFoundHandler models. HandlerFunc
112
+ NotFoundHandler HandlerFunc
109
113
}
110
114
111
115
// -----------------------------------------------------------------------------
@@ -191,7 +195,7 @@ func Create(options Options) (*Server, error) {
191
195
bindPort : options .Port ,
192
196
listenErrorHandler : options .ListenErrorHandler ,
193
197
requestErrorHandler : options .RequestErrorHandler ,
194
- middlewares : make ([]middleware. MiddlewareFunc , 0 ),
198
+ middlewares : make ([]MiddlewareFunc , 0 ),
195
199
state : stateNotStarted ,
196
200
startShutdownSignal : make (chan struct {}, 1 ),
197
201
shutdownCompleteSignal : make (chan struct {}, 1 ),
@@ -333,47 +337,47 @@ func (srv *Server) Stop() {
333
337
}
334
338
335
339
// Use adds a middleware that will be executed as part of the request handler
336
- func (srv * Server ) Use (middleware middleware. MiddlewareFunc ) {
340
+ func (srv * Server ) Use (middleware MiddlewareFunc ) {
337
341
srv .middlewares = append (srv .middlewares , middleware )
338
342
}
339
343
340
344
// GET adds a GET handler for the specified route
341
- func (srv * Server ) GET (path string , handler models. HandlerFunc , middlewares ... middleware .MiddlewareFunc ) {
345
+ func (srv * Server ) GET (path string , handler HandlerFunc , middlewares ... MiddlewareFunc ) {
342
346
srv .router .Handle ("GET" , path , srv .createEndpointHandler (handler , middlewares ... ))
343
347
}
344
348
345
349
// HEAD adds a HEAD handler for the specified route
346
- func (srv * Server ) HEAD (path string , handler models. HandlerFunc , middlewares ... middleware .MiddlewareFunc ) {
350
+ func (srv * Server ) HEAD (path string , handler HandlerFunc , middlewares ... MiddlewareFunc ) {
347
351
srv .router .Handle ("HEAD" , path , srv .createEndpointHandler (handler , middlewares ... ))
348
352
}
349
353
350
354
// OPTIONS adds a OPTIONS handler for the specified route
351
- func (srv * Server ) OPTIONS (path string , handler models. HandlerFunc , middlewares ... middleware .MiddlewareFunc ) {
355
+ func (srv * Server ) OPTIONS (path string , handler HandlerFunc , middlewares ... MiddlewareFunc ) {
352
356
srv .router .Handle ("OPTIONS" , path , srv .createEndpointHandler (handler , middlewares ... ))
353
357
}
354
358
355
359
// POST adds a POST handler for the specified route
356
- func (srv * Server ) POST (path string , handler models. HandlerFunc , middlewares ... middleware .MiddlewareFunc ) {
360
+ func (srv * Server ) POST (path string , handler HandlerFunc , middlewares ... MiddlewareFunc ) {
357
361
srv .router .Handle ("POST" , path , srv .createEndpointHandler (handler , middlewares ... ))
358
362
}
359
363
360
364
// PUT adds a PUT handler for the specified route
361
- func (srv * Server ) PUT (path string , handler models. HandlerFunc , middlewares ... middleware .MiddlewareFunc ) {
365
+ func (srv * Server ) PUT (path string , handler HandlerFunc , middlewares ... MiddlewareFunc ) {
362
366
srv .router .Handle ("PUT" , path , srv .createEndpointHandler (handler , middlewares ... ))
363
367
}
364
368
365
369
// PATCH adds a PATCH handler for the specified route
366
- func (srv * Server ) PATCH (path string , handler models. HandlerFunc , middlewares ... middleware .MiddlewareFunc ) {
370
+ func (srv * Server ) PATCH (path string , handler HandlerFunc , middlewares ... MiddlewareFunc ) {
367
371
srv .router .Handle ("PATCH" , path , srv .createEndpointHandler (handler , middlewares ... ))
368
372
}
369
373
370
374
// DELETE adds a DELETE handler for the specified route
371
- func (srv * Server ) DELETE (path string , handler models. HandlerFunc , middlewares ... middleware .MiddlewareFunc ) {
375
+ func (srv * Server ) DELETE (path string , handler HandlerFunc , middlewares ... MiddlewareFunc ) {
372
376
srv .router .Handle ("DELETE" , path , srv .createEndpointHandler (handler , middlewares ... ))
373
377
}
374
378
375
379
// ServeFiles adds custom filesystem handler for the specified route
376
- func (srv * Server ) ServeFiles (path string , options ServerFilesOptions , middlewares ... middleware. MiddlewareFunc ) error {
380
+ func (srv * Server ) ServeFiles (path string , options ServerFilesOptions , middlewares ... MiddlewareFunc ) error {
377
381
378
382
// Check some options
379
383
if ! filepath .IsAbs (options .RootDirectory ) {
0 commit comments