parent
7b18c67ac9
commit
46637b1164
6 changed files with 20 additions and 0 deletions
|
@ -288,6 +288,7 @@ func APIContexter() func(http.Handler) http.Handler {
|
||||||
},
|
},
|
||||||
Org: &APIOrganization{},
|
Org: &APIOrganization{},
|
||||||
}
|
}
|
||||||
|
defer ctx.Close()
|
||||||
|
|
||||||
ctx.Req = WithAPIContext(WithContext(req, ctx.Context), &ctx)
|
ctx.Req = WithAPIContext(WithContext(req, ctx.Context), &ctx)
|
||||||
ctx.csrf = Csrfer(csrfOpts, ctx.Context)
|
ctx.csrf = Csrfer(csrfOpts, ctx.Context)
|
||||||
|
|
|
@ -71,6 +71,16 @@ type Context struct {
|
||||||
Org *Organization
|
Org *Organization
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Close frees all resources hold by Context
|
||||||
|
func (ctx *Context) Close() error {
|
||||||
|
var err error
|
||||||
|
if ctx.Req != nil && ctx.Req.MultipartForm != nil {
|
||||||
|
err = ctx.Req.MultipartForm.RemoveAll() // remove the temp files buffered to tmp directory
|
||||||
|
}
|
||||||
|
// TODO: close opened repo, and more
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
// TrHTMLEscapeArgs runs Tr but pre-escapes all arguments with html.EscapeString.
|
// TrHTMLEscapeArgs runs Tr but pre-escapes all arguments with html.EscapeString.
|
||||||
// This is useful if the locale message is intended to only produce HTML content.
|
// This is useful if the locale message is intended to only produce HTML content.
|
||||||
func (ctx *Context) TrHTMLEscapeArgs(msg string, args ...string) string {
|
func (ctx *Context) TrHTMLEscapeArgs(msg string, args ...string) string {
|
||||||
|
@ -643,6 +653,8 @@ func Contexter() func(next http.Handler) http.Handler {
|
||||||
"RunModeIsProd": setting.IsProd,
|
"RunModeIsProd": setting.IsProd,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
defer ctx.Close()
|
||||||
|
|
||||||
// PageData is passed by reference, and it will be rendered to `window.config.pageData` in `head.tmpl` for JavaScript modules
|
// PageData is passed by reference, and it will be rendered to `window.config.pageData` in `head.tmpl` for JavaScript modules
|
||||||
ctx.PageData = map[string]interface{}{}
|
ctx.PageData = map[string]interface{}{}
|
||||||
ctx.Data["PageData"] = ctx.PageData
|
ctx.Data["PageData"] = ctx.PageData
|
||||||
|
|
|
@ -38,6 +38,8 @@ func PrivateContexter() func(http.Handler) http.Handler {
|
||||||
Data: map[string]interface{}{},
|
Data: map[string]interface{}{},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
defer ctx.Close()
|
||||||
|
|
||||||
ctx.Req = WithPrivateContext(req, ctx)
|
ctx.Req = WithPrivateContext(req, ctx)
|
||||||
next.ServeHTTP(ctx.Resp, ctx.Req)
|
next.ServeHTTP(ctx.Resp, ctx.Req)
|
||||||
})
|
})
|
||||||
|
|
|
@ -39,6 +39,7 @@ func MockContext(t *testing.T, path string) *context.Context {
|
||||||
Resp: context.NewResponse(resp),
|
Resp: context.NewResponse(resp),
|
||||||
Locale: &mockLocale{},
|
Locale: &mockLocale{},
|
||||||
}
|
}
|
||||||
|
defer ctx.Close()
|
||||||
|
|
||||||
requestURL, err := url.Parse(path)
|
requestURL, err := url.Parse(path)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
|
@ -35,6 +35,8 @@ func createContext(req *http.Request) (*context.Context, *httptest.ResponseRecor
|
||||||
Render: rnd,
|
Render: rnd,
|
||||||
Data: make(map[string]interface{}),
|
Data: make(map[string]interface{}),
|
||||||
}
|
}
|
||||||
|
defer c.Close()
|
||||||
|
|
||||||
return c, resp
|
return c, resp
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -84,6 +84,8 @@ func Init(next http.Handler) http.Handler {
|
||||||
"PasswordHashAlgorithms": user_model.AvailableHashAlgorithms,
|
"PasswordHashAlgorithms": user_model.AvailableHashAlgorithms,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
defer ctx.Close()
|
||||||
|
|
||||||
for _, lang := range translation.AllLangs() {
|
for _, lang := range translation.AllLangs() {
|
||||||
if lang.Lang == locale.Language() {
|
if lang.Lang == locale.Language() {
|
||||||
ctx.Data["LangName"] = lang.Name
|
ctx.Data["LangName"] = lang.Name
|
||||||
|
|
Reference in a new issue