Skip to content

Commit 488ae7b

Browse files
committed
feat(middleware): update context definition
- add changable property File - add changable property Item
1 parent 3dc7f92 commit 488ae7b

File tree

3 files changed

+16
-5
lines changed

3 files changed

+16
-5
lines changed

src/middleware/context.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package middleware
33
import (
44
"mjpclab.dev/ghfs/src/serverLog"
55
"mjpclab.dev/ghfs/src/user"
6+
"os"
67
)
78

89
type Context struct {
@@ -28,6 +29,9 @@ type Context struct {
2829

2930
Status *int
3031

32+
File **os.File
33+
FileInfo *os.FileInfo
34+
3135
Users *user.List
3236
Logger *serverLog.Logger
3337
}

src/serverHandler/aliasHandler.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -105,9 +105,10 @@ func (h *aliasHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
105105
// data
106106
data, fsPath := h.getResponseData(r)
107107
h.logErrors(data.errors)
108-
file := data.File
109-
if file != nil {
110-
defer file.Close()
108+
if data.File != nil {
109+
defer func() {
110+
data.File.Close()
111+
}()
111112
}
112113

113114
if h.applyMiddlewares(h.inMiddlewares, w, r, data, fsPath) {
@@ -168,10 +169,9 @@ func (h *aliasHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
168169
}
169170

170171
// final process
171-
item := data.Item
172172
if data.wantJson {
173173
h.json(w, r, data)
174-
} else if shouldServeAsContent(file, item) {
174+
} else if shouldServeAsContent(data.File, data.Item) {
175175
h.content(w, r, data)
176176
} else {
177177
h.page(w, r, data)

src/serverHandler/middleware.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,13 @@ func (h *aliasHandler) applyMiddlewares(mids []middleware.Middleware, w http.Res
3737
Logger: h.logger,
3838
}
3939

40+
if data.File != nil {
41+
context.File = &data.File
42+
}
43+
if data.Item != nil {
44+
context.FileInfo = &data.Item
45+
}
46+
4047
for i := range mids {
4148
result := mids[i](w, r, context)
4249
if result == middleware.Outputted {

0 commit comments

Comments
 (0)