aboutsummaryrefslogtreecommitdiffstats
path: root/modules/context/response.go
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2021-01-28 01:46:35 +0800
committerGitHub <noreply@github.com>2021-01-27 18:46:35 +0100
commita51cc6dea41b154b946e982fde6cc1a600210a71 (patch)
tree07e9f38a2f3572bb8ed9a666d33dd30e976bd5e6 /modules/context/response.go
parent4c6e0295069a3c2f0df3d9f30560906bc2aa73a8 (diff)
downloadgitea-a51cc6dea41b154b946e982fde6cc1a600210a71.tar.gz
gitea-a51cc6dea41b154b946e982fde6cc1a600210a71.zip
Fix access log (#14475)
Fix #14121, #14478. The `AccessLog` middleware has to be after `Contexter` or `APIContexter` so that we can get `LoginUserName` if possible. And also there is a **BREAK** change that it removed internal API access log.
Diffstat (limited to 'modules/context/response.go')
-rw-r--r--modules/context/response.go10
1 files changed, 9 insertions, 1 deletions
diff --git a/modules/context/response.go b/modules/context/response.go
index 1881ec7b33..bdbbb97af7 100644
--- a/modules/context/response.go
+++ b/modules/context/response.go
@@ -12,6 +12,7 @@ type ResponseWriter interface {
Flush()
Status() int
Before(func(ResponseWriter))
+ Size() int
}
var (
@@ -21,11 +22,17 @@ var (
// Response represents a response
type Response struct {
http.ResponseWriter
+ written int
status int
befores []func(ResponseWriter)
beforeExecuted bool
}
+// Size return written size
+func (r *Response) Size() int {
+ return r.written
+}
+
// Write writes bytes to HTTP endpoint
func (r *Response) Write(bs []byte) (int, error) {
if !r.beforeExecuted {
@@ -35,8 +42,9 @@ func (r *Response) Write(bs []byte) (int, error) {
r.beforeExecuted = true
}
size, err := r.ResponseWriter.Write(bs)
+ r.written += size
if err != nil {
- return 0, err
+ return size, err
}
if r.status == 0 {
r.WriteHeader(200)