aboutsummaryrefslogtreecommitdiffstats
path: root/modules/context/context_response.go
diff options
context:
space:
mode:
Diffstat (limited to 'modules/context/context_response.go')
-rw-r--r--modules/context/context_response.go102
1 files changed, 2 insertions, 100 deletions
diff --git a/modules/context/context_response.go b/modules/context/context_response.go
index 8adff96994..aeeb51ba37 100644
--- a/modules/context/context_response.go
+++ b/modules/context/context_response.go
@@ -16,49 +16,17 @@ import (
user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/base"
- "code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/templates"
"code.gitea.io/gitea/modules/web/middleware"
)
-// SetTotalCountHeader set "X-Total-Count" header
-func (ctx *Context) SetTotalCountHeader(total int64) {
- ctx.RespHeader().Set("X-Total-Count", fmt.Sprint(total))
- ctx.AppendAccessControlExposeHeaders("X-Total-Count")
-}
-
-// AppendAccessControlExposeHeaders append headers by name to "Access-Control-Expose-Headers" header
-func (ctx *Context) AppendAccessControlExposeHeaders(names ...string) {
- val := ctx.RespHeader().Get("Access-Control-Expose-Headers")
- if len(val) != 0 {
- ctx.RespHeader().Set("Access-Control-Expose-Headers", fmt.Sprintf("%s, %s", val, strings.Join(names, ", ")))
- } else {
- ctx.RespHeader().Set("Access-Control-Expose-Headers", strings.Join(names, ", "))
- }
-}
-
-// Written returns true if there are something sent to web browser
-func (ctx *Context) Written() bool {
- return ctx.Resp.Status() > 0
-}
-
-// Status writes status code
-func (ctx *Context) Status(status int) {
- ctx.Resp.WriteHeader(status)
-}
-
-// Write writes data to web browser
-func (ctx *Context) Write(bs []byte) (int, error) {
- return ctx.Resp.Write(bs)
-}
-
// RedirectToUser redirect to a differently-named user
-func RedirectToUser(ctx *Context, userName string, redirectUserID int64) {
+func RedirectToUser(ctx *Base, userName string, redirectUserID int64) {
user, err := user_model.GetUserByID(ctx, redirectUserID)
if err != nil {
- ctx.ServerError("GetUserByID", err)
+ ctx.Error(http.StatusInternalServerError, "unable to get user")
return
}
@@ -211,69 +179,3 @@ func (ctx *Context) NotFoundOrServerError(logMsg string, errCheck func(error) bo
}
ctx.serverErrorInternal(logMsg, logErr)
}
-
-// PlainTextBytes renders bytes as plain text
-func (ctx *Context) plainTextInternal(skip, status int, bs []byte) {
- statusPrefix := status / 100
- if statusPrefix == 4 || statusPrefix == 5 {
- log.Log(skip, log.TRACE, "plainTextInternal (status=%d): %s", status, string(bs))
- }
- ctx.Resp.Header().Set("Content-Type", "text/plain;charset=utf-8")
- ctx.Resp.Header().Set("X-Content-Type-Options", "nosniff")
- ctx.Resp.WriteHeader(status)
- if _, err := ctx.Resp.Write(bs); err != nil {
- log.ErrorWithSkip(skip, "plainTextInternal (status=%d): write bytes failed: %v", status, err)
- }
-}
-
-// PlainTextBytes renders bytes as plain text
-func (ctx *Context) PlainTextBytes(status int, bs []byte) {
- ctx.plainTextInternal(2, status, bs)
-}
-
-// PlainText renders content as plain text
-func (ctx *Context) PlainText(status int, text string) {
- ctx.plainTextInternal(2, status, []byte(text))
-}
-
-// RespHeader returns the response header
-func (ctx *Context) RespHeader() http.Header {
- return ctx.Resp.Header()
-}
-
-// Error returned an error to web browser
-func (ctx *Context) Error(status int, contents ...string) {
- v := http.StatusText(status)
- if len(contents) > 0 {
- v = contents[0]
- }
- http.Error(ctx.Resp, v, status)
-}
-
-// JSON render content as JSON
-func (ctx *Context) JSON(status int, content interface{}) {
- ctx.Resp.Header().Set("Content-Type", "application/json;charset=utf-8")
- ctx.Resp.WriteHeader(status)
- if err := json.NewEncoder(ctx.Resp).Encode(content); err != nil {
- ctx.ServerError("Render JSON failed", err)
- }
-}
-
-// Redirect redirects the request
-func (ctx *Context) Redirect(location string, status ...int) {
- code := http.StatusSeeOther
- if len(status) == 1 {
- code = status[0]
- }
-
- if strings.Contains(location, "://") || strings.HasPrefix(location, "//") {
- // Some browsers (Safari) have buggy behavior for Cookie + Cache + External Redirection, eg: /my-path => https://other/path
- // 1. the first request to "/my-path" contains cookie
- // 2. some time later, the request to "/my-path" doesn't contain cookie (caused by Prevent web tracking)
- // 3. Gitea's Sessioner doesn't see the session cookie, so it generates a new session id, and returns it to browser
- // 4. then the browser accepts the empty session, then the user is logged out
- // So in this case, we should remove the session cookie from the response header
- removeSessionCookieHeader(ctx.Resp)
- }
- http.Redirect(ctx.Resp, ctx.Req, location, code)
-}