summaryrefslogtreecommitdiffstats
path: root/routers/web
diff options
context:
space:
mode:
authorwxiaoguang <wxiaoguang@gmail.com>2023-05-21 09:50:53 +0800
committerGitHub <noreply@github.com>2023-05-21 09:50:53 +0800
commit6b33152b7dc81b38e5832a30c52cfad1902e86d0 (patch)
tree020272cc3b2d0566d286ed01f85ae74a9f48c177 /routers/web
parent6ba4f897231229c06ac98bf2e067665e3ef0bf23 (diff)
downloadgitea-6b33152b7dc81b38e5832a30c52cfad1902e86d0.tar.gz
gitea-6b33152b7dc81b38e5832a30c52cfad1902e86d0.zip
Decouple the different contexts from each other (#24786)
Replace #16455 Close #21803 Mixing different Gitea contexts together causes some problems: 1. Unable to respond proper content when error occurs, eg: Web should respond HTML while API should respond JSON 2. Unclear dependency, eg: it's unclear when Context is used in APIContext, which fields should be initialized, which methods are necessary. To make things clear, this PR introduces a Base context, it only provides basic Req/Resp/Data features. This PR mainly moves code. There are still many legacy problems and TODOs in code, leave unrelated changes to future PRs.
Diffstat (limited to 'routers/web')
-rw-r--r--routers/web/misc/markup.go10
-rw-r--r--routers/web/repo/attachment.go2
-rw-r--r--routers/web/repo/download.go10
-rw-r--r--routers/web/repo/http.go2
-rw-r--r--routers/web/repo/issue.go4
-rw-r--r--routers/web/repo/wiki.go2
6 files changed, 11 insertions, 19 deletions
diff --git a/routers/web/misc/markup.go b/routers/web/misc/markup.go
index 1690378945..c91da9a7f1 100644
--- a/routers/web/misc/markup.go
+++ b/routers/web/misc/markup.go
@@ -5,8 +5,6 @@
package misc
import (
- "net/http"
-
"code.gitea.io/gitea/modules/context"
api "code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/modules/web"
@@ -16,11 +14,5 @@ import (
// Markup render markup document to HTML
func Markup(ctx *context.Context) {
form := web.GetForm(ctx).(*api.MarkupOption)
-
- if ctx.HasAPIError() {
- ctx.Error(http.StatusUnprocessableEntity, "", ctx.GetErrMsg())
- return
- }
-
- common.RenderMarkup(ctx, form.Mode, form.Text, form.Context, form.FilePath, form.Wiki)
+ common.RenderMarkup(ctx.Base, ctx.Repo, form.Mode, form.Text, form.Context, form.FilePath, form.Wiki)
}
diff --git a/routers/web/repo/attachment.go b/routers/web/repo/attachment.go
index c46ec29841..fb95e63ecf 100644
--- a/routers/web/repo/attachment.go
+++ b/routers/web/repo/attachment.go
@@ -153,7 +153,7 @@ func ServeAttachment(ctx *context.Context, uuid string) {
}
defer fr.Close()
- common.ServeContentByReadSeeker(ctx, attach.Name, attach.CreatedUnix.AsTime(), fr)
+ common.ServeContentByReadSeeker(ctx.Base, attach.Name, attach.CreatedUnix.AsTime(), fr)
}
// GetAttachment serve attachments
diff --git a/routers/web/repo/download.go b/routers/web/repo/download.go
index 1c87f9bed7..a498180f35 100644
--- a/routers/web/repo/download.go
+++ b/routers/web/repo/download.go
@@ -47,7 +47,7 @@ func ServeBlobOrLFS(ctx *context.Context, blob *git.Blob, lastModified time.Time
log.Error("ServeBlobOrLFS: Close: %v", err)
}
closed = true
- return common.ServeBlob(ctx, blob, lastModified)
+ return common.ServeBlob(ctx.Base, ctx.Repo.TreePath, blob, lastModified)
}
if httpcache.HandleGenericETagCache(ctx.Req, ctx.Resp, `"`+pointer.Oid+`"`) {
return nil
@@ -71,7 +71,7 @@ func ServeBlobOrLFS(ctx *context.Context, blob *git.Blob, lastModified time.Time
log.Error("ServeBlobOrLFS: Close: %v", err)
}
}()
- common.ServeContentByReadSeeker(ctx, ctx.Repo.TreePath, lastModified, lfsDataRc)
+ common.ServeContentByReadSeeker(ctx.Base, ctx.Repo.TreePath, lastModified, lfsDataRc)
return nil
}
if err = dataRc.Close(); err != nil {
@@ -79,7 +79,7 @@ func ServeBlobOrLFS(ctx *context.Context, blob *git.Blob, lastModified time.Time
}
closed = true
- return common.ServeBlob(ctx, blob, lastModified)
+ return common.ServeBlob(ctx.Base, ctx.Repo.TreePath, blob, lastModified)
}
func getBlobForEntry(ctx *context.Context) (blob *git.Blob, lastModified time.Time) {
@@ -120,7 +120,7 @@ func SingleDownload(ctx *context.Context) {
return
}
- if err := common.ServeBlob(ctx, blob, lastModified); err != nil {
+ if err := common.ServeBlob(ctx.Base, ctx.Repo.TreePath, blob, lastModified); err != nil {
ctx.ServerError("ServeBlob", err)
}
}
@@ -148,7 +148,7 @@ func DownloadByID(ctx *context.Context) {
}
return
}
- if err = common.ServeBlob(ctx, blob, time.Time{}); err != nil {
+ if err = common.ServeBlob(ctx.Base, ctx.Repo.TreePath, blob, time.Time{}); err != nil {
ctx.ServerError("ServeBlob", err)
}
}
diff --git a/routers/web/repo/http.go b/routers/web/repo/http.go
index 4e45a9b6e2..b6ebd25915 100644
--- a/routers/web/repo/http.go
+++ b/routers/web/repo/http.go
@@ -109,7 +109,7 @@ func httpBase(ctx *context.Context) (h *serviceHandler) {
if err != nil {
if repo_model.IsErrRepoNotExist(err) {
if redirectRepoID, err := repo_model.LookupRedirect(owner.ID, reponame); err == nil {
- context.RedirectToRepo(ctx, redirectRepoID)
+ context.RedirectToRepo(ctx.Base, redirectRepoID)
return
}
repoExist = false
diff --git a/routers/web/repo/issue.go b/routers/web/repo/issue.go
index 88d2a97a7a..7a0dc9940b 100644
--- a/routers/web/repo/issue.go
+++ b/routers/web/repo/issue.go
@@ -2344,7 +2344,7 @@ func UpdatePullReviewRequest(ctx *context.Context) {
// SearchIssues searches for issues across the repositories that the user has access to
func SearchIssues(ctx *context.Context) {
- before, since, err := context.GetQueryBeforeSince(ctx)
+ before, since, err := context.GetQueryBeforeSince(ctx.Base)
if err != nil {
ctx.Error(http.StatusUnprocessableEntity, err.Error())
return
@@ -2545,7 +2545,7 @@ func getUserIDForFilter(ctx *context.Context, queryName string) int64 {
// ListIssues list the issues of a repository
func ListIssues(ctx *context.Context) {
- before, since, err := context.GetQueryBeforeSince(ctx)
+ before, since, err := context.GetQueryBeforeSince(ctx.Base)
if err != nil {
ctx.Error(http.StatusUnprocessableEntity, err.Error())
return
diff --git a/routers/web/repo/wiki.go b/routers/web/repo/wiki.go
index a335c114be..115418887d 100644
--- a/routers/web/repo/wiki.go
+++ b/routers/web/repo/wiki.go
@@ -671,7 +671,7 @@ func WikiRaw(ctx *context.Context) {
}
if entry != nil {
- if err = common.ServeBlob(ctx, entry.Blob(), time.Time{}); err != nil {
+ if err = common.ServeBlob(ctx.Base, ctx.Repo.TreePath, entry.Blob(), time.Time{}); err != nil {
ctx.ServerError("ServeBlob", err)
}
return