mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	Add some documentation to packages (#21648)
In #21637 it was mentioned that the purpose of the API routes for the packages is unclear. This PR adds some documentation. Fix #21637 Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: KN4CK3R <admin@oldschoolhack.me>
This commit is contained in:
		@@ -40,7 +40,9 @@ func reqPackageAccess(accessMode perm.AccessMode) func(ctx *context.Context) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func Routes(ctx gocontext.Context) *web.Route {
 | 
					// CommonRoutes provide endpoints for most package managers (except containers - see below)
 | 
				
			||||||
 | 
					// These are mounted on `/api/packages` (not `/api/v1/packages`)
 | 
				
			||||||
 | 
					func CommonRoutes(ctx gocontext.Context) *web.Route {
 | 
				
			||||||
	r := web.NewRoute()
 | 
						r := web.NewRoute()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	r.Use(context.PackageContexter(ctx))
 | 
						r.Use(context.PackageContexter(ctx))
 | 
				
			||||||
@@ -301,6 +303,9 @@ func Routes(ctx gocontext.Context) *web.Route {
 | 
				
			|||||||
	return r
 | 
						return r
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ContainerRoutes provides endpoints that implement the OCI API to serve containers
 | 
				
			||||||
 | 
					// These have to be mounted on `/v2/...` to comply with the OCI spec:
 | 
				
			||||||
 | 
					// https://github.com/opencontainers/distribution-spec/blob/main/spec.md
 | 
				
			||||||
func ContainerRoutes(ctx gocontext.Context) *web.Route {
 | 
					func ContainerRoutes(ctx gocontext.Context) *web.Route {
 | 
				
			||||||
	r := web.NewRoute()
 | 
						r := web.NewRoute()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1073,6 +1073,7 @@ func Routes(ctx gocontext.Context) *web.Route {
 | 
				
			|||||||
			}, repoAssignment())
 | 
								}, repoAssignment())
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// NOTE: these are Gitea package management API - see packages.CommonRoutes and packages.DockerContainerRoutes for endpoints that implement package manager APIs
 | 
				
			||||||
		m.Group("/packages/{username}", func() {
 | 
							m.Group("/packages/{username}", func() {
 | 
				
			||||||
			m.Group("/{type}/{name}/{version}", func() {
 | 
								m.Group("/{type}/{name}/{version}", func() {
 | 
				
			||||||
				m.Get("", packages.GetPackage)
 | 
									m.Get("", packages.GetPackage)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -185,8 +185,14 @@ func NormalRoutes(ctx context.Context) *web.Route {
 | 
				
			|||||||
	r.Mount("/", web_routers.Routes(ctx))
 | 
						r.Mount("/", web_routers.Routes(ctx))
 | 
				
			||||||
	r.Mount("/api/v1", apiv1.Routes(ctx))
 | 
						r.Mount("/api/v1", apiv1.Routes(ctx))
 | 
				
			||||||
	r.Mount("/api/internal", private.Routes())
 | 
						r.Mount("/api/internal", private.Routes())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if setting.Packages.Enabled {
 | 
						if setting.Packages.Enabled {
 | 
				
			||||||
		r.Mount("/api/packages", packages_router.Routes(ctx))
 | 
							// Add endpoints to match common package manager APIs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// This implements package support for most package managers
 | 
				
			||||||
 | 
							r.Mount("/api/packages", packages_router.CommonRoutes(ctx))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// This implements the OCI API (Note this is not preceded by /api but is instead /v2)
 | 
				
			||||||
		r.Mount("/v2", packages_router.ContainerRoutes(ctx))
 | 
							r.Mount("/v2", packages_router.ContainerRoutes(ctx))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return r
 | 
						return r
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user