Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 69d9176

Browse files
fix optional path segments not working out as planned
1 parent 2a8a0bc commit 69d9176

File tree

6 files changed

+144
-82
lines changed

6 files changed

+144
-82
lines changed

‎routers/api/v1/api.go

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1196,11 +1196,13 @@ func Routes() *web.Router {
11961196
// (repo scope)
11971197
m.Group("/starred", func() {
11981198
m.Get("", user.GetMyStarredRepos)
1199-
m.Group("/{username}/{group_id}?/{reponame}", func() {
1199+
fn:= func() {
12001200
m.Get("", user.IsStarring)
12011201
m.Put("", user.Star)
12021202
m.Delete("", user.Unstar)
1203-
}, repoAssignment(), checkTokenPublicOnly())
1203+
}
1204+
m.Group("/{username}/{reponame}", fn, repoAssignment(), checkTokenPublicOnly())
1205+
m.Group("/{username}/{group_id}/{reponame}", fn, repoAssignment(), checkTokenPublicOnly())
12041206
}, reqStarsEnabled(), tokenRequiresScopes(auth_model.AccessTokenScopeCategoryRepository))
12051207
m.Get("/times", repo.ListMyTrackedTimes)
12061208
m.Get("/stopwatches", repo.GetStopwatches)
@@ -1247,8 +1249,7 @@ func Routes() *web.Router {
12471249

12481250
// (repo scope)
12491251
m.Post("/migrate", reqToken(), bind(api.MigrateRepoOptions{}), repo.Migrate)
1250-
1251-
m.Group("/{username}/{group_id}?/{reponame}", func() {
1252+
fn := func() {
12521253
m.Get("/compare/*", reqRepoReader(unit.TypeCode), repo.CompareDiff)
12531254

12541255
m.Combo("").Get(reqAnyRepoReader(), repo.Get).
@@ -1534,27 +1535,31 @@ func Routes() *web.Router {
15341535
}, reqAdmin(), reqToken())
15351536

15361537
m.Methods("HEAD,GET", "/{ball_type:tarball|zipball|bundle}/*", reqRepoReader(unit.TypeCode), repo.DownloadArchive)
1537-
}, repoAssignment(), checkTokenPublicOnly())
1538+
}
1539+
m.Group("/{username}/{reponame}", fn, repoAssignment(), checkTokenPublicOnly())
1540+
m.Group("/{username}/{group_id}/{reponame}", fn, repoAssignment(), checkTokenPublicOnly())
15381541
}, tokenRequiresScopes(auth_model.AccessTokenScopeCategoryRepository))
15391542

15401543
// Artifacts direct download endpoint authenticates via signed url
15411544
// it is protected by the "sig" parameter (to help to access private repo), so no need to use other middlewares
1542-
m.Get("/repos/{username}/{group_id}?/{reponame}/actions/artifacts/{artifact_id}/zip/raw", repo.DownloadArtifactRaw)
1545+
m.Get("/repos/{username}/{reponame}/actions/artifacts/{artifact_id}/zip/raw", repo.DownloadArtifactRaw)
1546+
m.Get("/repos/{username}/{group_id}/{reponame}/actions/artifacts/{artifact_id}/zip/raw", repo.DownloadArtifactRaw)
15431547

15441548
// Notifications (requires notifications scope)
15451549
m.Group("/repos", func() {
1546-
m.Group("/{username}/{group_id}?/{reponame}", func() {
1550+
fn:= func() {
15471551
m.Combo("/notifications", reqToken()).
15481552
Get(notify.ListRepoNotifications).
15491553
Put(notify.ReadRepoNotifications)
1550-
}, repoAssignment(), checkTokenPublicOnly())
1554+
}
1555+
m.Group("/{username}/{reponame}", fn, repoAssignment(), checkTokenPublicOnly())
1556+
m.Group("/{username}/{group_id}/{reponame}", fn, repoAssignment(), checkTokenPublicOnly())
15511557
}, tokenRequiresScopes(auth_model.AccessTokenScopeCategoryNotification))
15521558

15531559
// Issue (requires issue scope)
15541560
m.Group("/repos", func() {
15551561
m.Get("/issues/search", repo.SearchIssues)
1556-
1557-
m.Group("/{username}/{group_id}?/{reponame}", func() {
1562+
fn := func() {
15581563
m.Group("/issues", func() {
15591564
m.Combo("").Get(repo.ListIssues).
15601565
Post(reqToken(), mustNotBeArchived, bind(api.CreateIssueOption{}), reqRepoReader(unit.TypeIssues), repo.CreateIssue)
@@ -1666,7 +1671,9 @@ func Routes() *web.Router {
16661671
Patch(reqToken(), reqRepoWriter(unit.TypeIssues, unit.TypePullRequests), bind(api.EditMilestoneOption{}), repo.EditMilestone).
16671672
Delete(reqToken(), reqRepoWriter(unit.TypeIssues, unit.TypePullRequests), repo.DeleteMilestone)
16681673
})
1669-
}, repoAssignment(), checkTokenPublicOnly())
1674+
}
1675+
m.Group("/{username}/{reponame}", fn, repoAssignment(), checkTokenPublicOnly())
1676+
m.Group("/{username}/{group_id}/{reponame}", fn, repoAssignment(), checkTokenPublicOnly())
16701677
}, tokenRequiresScopes(auth_model.AccessTokenScopeCategoryIssue))
16711678

16721679
// NOTE: these are Gitea package management API - see packages.CommonRoutes and packages.DockerContainerRoutes for endpoints that implement package manager APIs

‎routers/common/lfs.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ const RouterMockPointCommonLFS = "common-lfs"
1414

1515
func AddOwnerRepoGitLFSRoutes(m *web.Router, middlewares ...any) {
1616
// shared by web and internal routers
17-
m.Group("/{username}/{reponame}/info/lfs", func() {
17+
fn:= func() {
1818
m.Post("/objects/batch", lfs.CheckAcceptMediaType, lfs.BatchHandler)
1919
m.Put("/objects/{oid}/{size}", lfs.UploadHandler)
2020
m.Get("/objects/{oid}/{filename}", lfs.DownloadHandler)
@@ -27,5 +27,7 @@ func AddOwnerRepoGitLFSRoutes(m *web.Router, middlewares ...any) {
2727
m.Post("/{lid}/unlock", lfs.UnLockHandler)
2828
}, lfs.CheckAcceptMediaType)
2929
m.Any("/*", http.NotFound)
30-
}, append([]any{web.RouterMockPoint(RouterMockPointCommonLFS)}, middlewares...)...)
30+
}
31+
m.Group("/{username}/{reponame}/info/lfs", fn, append([]any{web.RouterMockPoint(RouterMockPointCommonLFS)}, middlewares...)...)
32+
m.Group("/{username}/{group_id}/{reponame}/info/lfs", fn, append([]any{web.RouterMockPoint(RouterMockPointCommonLFS)}, middlewares...)...)
3133
}

‎routers/web/githttp.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import (
1010
)
1111

1212
func addOwnerRepoGitHTTPRouters(m *web.Router) {
13-
m.Group("/{username}/{group_id}?/{reponame}", func() {
13+
fn:= func() {
1414
m.Methods("POST,OPTIONS", "/git-upload-pack", repo.ServiceUploadPack)
1515
m.Methods("POST,OPTIONS", "/git-receive-pack", repo.ServiceReceivePack)
1616
m.Methods("GET,OPTIONS", "/info/refs", repo.GetInfoRefs)
@@ -22,5 +22,7 @@ func addOwnerRepoGitHTTPRouters(m *web.Router) {
2222
m.Methods("GET,OPTIONS", "/objects/{head:[0-9a-f]{2}}/{hash:[0-9a-f]{38,62}}", repo.GetLooseObject)
2323
m.Methods("GET,OPTIONS", "/objects/pack/pack-{file:[0-9a-f]{40,64}}.pack", repo.GetPackFile)
2424
m.Methods("GET,OPTIONS", "/objects/pack/pack-{file:[0-9a-f]{40,64}}.idx", repo.GetIdxFile)
25-
}, optSignInIgnoreCsrf, repo.HTTPGitEnabledHandler, repo.CorsHandler(), context.UserAssignmentWeb())
25+
}
26+
m.Group("/{username}/{reponame}", fn, optSignInIgnoreCsrf, repo.HTTPGitEnabledHandler, repo.CorsHandler(), context.UserAssignmentWeb())
27+
m.Group("/{username}/{group_id}/{reponame}", fn, optSignInIgnoreCsrf, repo.HTTPGitEnabledHandler, repo.CorsHandler(), context.UserAssignmentWeb())
2628
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /