Skip to content

Commit 7b92a9d

Browse files
committed
refactor(serverHandler): move access log and pre middleware to preprocessHandler
1 parent 503a194 commit 7b92a9d

File tree

4 files changed

+48
-54
lines changed

4 files changed

+48
-54
lines changed

src/serverHandler/logHandler.go

Lines changed: 0 additions & 23 deletions
This file was deleted.
Lines changed: 3 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
package serverHandler
22

33
import (
4-
"mjpclab.dev/ghfs/src/middleware"
54
"mjpclab.dev/ghfs/src/param"
6-
"mjpclab.dev/ghfs/src/serverLog"
75
"net/http"
86
)
97

@@ -12,30 +10,10 @@ type aliasWithHandler struct {
1210
handler http.Handler
1311
}
1412

15-
type multiplexHandler struct {
16-
logger *serverLog.Logger
17-
preMiddlewares []middleware.Middleware
18-
aliasWithHandlers []aliasWithHandler
19-
}
13+
type multiplexHandler []aliasWithHandler
2014

2115
func (mux multiplexHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
22-
if len(mux.preMiddlewares) > 0 {
23-
middlewareContext := &middleware.Context{
24-
PrefixReqPath: r.URL.RawPath, // init by pathTransformHandler
25-
VhostReqPath: r.URL.Path,
26-
Logger: mux.logger,
27-
}
28-
for i := range mux.preMiddlewares {
29-
processResult := mux.preMiddlewares[i](w, r, middlewareContext)
30-
if processResult == middleware.Processed {
31-
return
32-
} else if processResult == middleware.SkipRests {
33-
break
34-
}
35-
}
36-
}
37-
38-
for _, ah := range mux.aliasWithHandlers {
16+
for _, ah := range mux {
3917
if ah.alias.isMatch(r.URL.Path) || ah.alias.isPredecessorOf(r.URL.Path) {
4018
ah.handler.ServeHTTP(w, r)
4119
return
@@ -70,9 +48,5 @@ func newMultiplexHandler(
7048
}
7149
}
7250

73-
return multiplexHandler{
74-
logger: ap.logger,
75-
preMiddlewares: p.PreMiddlewares,
76-
aliasWithHandlers: aliasWithHandlers,
77-
}
51+
return multiplexHandler(aliasWithHandlers)
7852
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package serverHandler
2+
3+
import (
4+
"mjpclab.dev/ghfs/src/middleware"
5+
"mjpclab.dev/ghfs/src/serverLog"
6+
"net/http"
7+
)
8+
9+
type preprocessHandler struct {
10+
logger *serverLog.Logger
11+
preMiddlewares []middleware.Middleware
12+
nextHandler http.Handler
13+
}
14+
15+
func (pph preprocessHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
16+
logRequest(pph.logger, r)
17+
18+
if len(pph.preMiddlewares) > 0 {
19+
middlewareContext := &middleware.Context{
20+
PrefixReqPath: r.URL.RawPath, // init by pathTransformHandler
21+
VhostReqPath: r.URL.Path,
22+
Logger: pph.logger,
23+
}
24+
for i := range pph.preMiddlewares {
25+
processResult := pph.preMiddlewares[i](w, r, middlewareContext)
26+
if processResult == middleware.Processed {
27+
return
28+
} else if processResult == middleware.SkipRests {
29+
break
30+
}
31+
}
32+
}
33+
34+
pph.nextHandler.ServeHTTP(w, r)
35+
}
36+
37+
func newPreprocessHandler(logger *serverLog.Logger, preMiddlewares []middleware.Middleware, nextHandler http.Handler) http.Handler {
38+
return preprocessHandler{
39+
logger: logger,
40+
preMiddlewares: preMiddlewares,
41+
nextHandler: nextHandler,
42+
}
43+
}

src/serverHandler/vhostHandler.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,8 @@ func NewVhostHandler(
104104
}
105105

106106
muxHandler := newMultiplexHandler(p, ap)
107-
logHandler := newLogHandler(logger, muxHandler)
108-
pathTransformHandler := newPathTransformHandler(p.PrefixUrls, logHandler)
107+
preprocessHandler := newPreprocessHandler(logger, p.PreMiddlewares, muxHandler)
108+
pathTransformHandler := newPathTransformHandler(p.PrefixUrls, preprocessHandler)
109109

110110
return pathTransformHandler, nil
111111
}

0 commit comments

Comments
 (0)