mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	add get repo API
This commit is contained in:
		
							
								
								
									
										13
									
								
								cmd/web.go
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								cmd/web.go
									
									
									
									
									
								
							@@ -224,11 +224,12 @@ func runWeb(ctx *cli.Context) {
 | 
			
		||||
 | 
			
		||||
			m.Group("/repos", func() {
 | 
			
		||||
				m.Get("/search", v1.SearchRepos)
 | 
			
		||||
			})
 | 
			
		||||
 | 
			
		||||
				m.Group("", func() {
 | 
			
		||||
					m.Post("/migrate", bindIgnErr(auth.MigrateRepoForm{}), v1.MigrateRepo)
 | 
			
		||||
					m.Delete("/:username/:reponame", v1.DeleteRepo)
 | 
			
		||||
				}, middleware.ApiReqToken())
 | 
			
		||||
			m.Group("/repos", func() {
 | 
			
		||||
				m.Post("/migrate", bindIgnErr(auth.MigrateRepoForm{}), v1.MigrateRepo)
 | 
			
		||||
				m.Combo("/:username/:reponame").Get(v1.GetRepo)
 | 
			
		||||
				m.Delete("/:username/:reponame", v1.DeleteRepo)
 | 
			
		||||
 | 
			
		||||
				m.Group("/:username/:reponame", func() {
 | 
			
		||||
					m.Combo("/hooks").Get(v1.ListRepoHooks).
 | 
			
		||||
@@ -236,8 +237,8 @@ func runWeb(ctx *cli.Context) {
 | 
			
		||||
					m.Patch("/hooks/:id:int", bind(api.EditHookOption{}), v1.EditRepoHook)
 | 
			
		||||
					m.Get("/raw/*", middleware.RepoRef(), v1.GetRepoRawFile)
 | 
			
		||||
					m.Get("/archive/*", v1.GetRepoArchive)
 | 
			
		||||
				}, middleware.ApiRepoAssignment(), middleware.ApiReqToken())
 | 
			
		||||
			})
 | 
			
		||||
				}, middleware.ApiRepoAssignment())
 | 
			
		||||
			}, middleware.ApiReqToken())
 | 
			
		||||
 | 
			
		||||
			m.Any("/*", func(ctx *middleware.Context) {
 | 
			
		||||
				ctx.Error(404)
 | 
			
		||||
 
 | 
			
		||||
@@ -252,37 +252,55 @@ func MigrateRepo(ctx *middleware.Context, form auth.MigrateRepoForm) {
 | 
			
		||||
	ctx.JSON(201, ToApiRepository(ctxUser, repo, api.Permission{true, true, true}))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func DeleteRepo(ctx *middleware.Context) {
 | 
			
		||||
	user, err := models.GetUserByName(ctx.Params(":username"))
 | 
			
		||||
func parseOwnerAndRepo(ctx *middleware.Context) (*models.User, *models.Repository) {
 | 
			
		||||
	owner, err := models.GetUserByName(ctx.Params(":username"))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		if models.IsErrUserNotExist(err) {
 | 
			
		||||
			ctx.APIError(422, "", err)
 | 
			
		||||
		} else {
 | 
			
		||||
			ctx.APIError(500, "GetUserByName", err)
 | 
			
		||||
		}
 | 
			
		||||
		return
 | 
			
		||||
		return nil, nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	repo, err := models.GetRepositoryByName(user.Id, ctx.Params(":reponame"))
 | 
			
		||||
	repo, err := models.GetRepositoryByName(owner.Id, ctx.Params(":reponame"))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		if models.IsErrRepoNotExist(err) {
 | 
			
		||||
			ctx.Error(404)
 | 
			
		||||
		} else {
 | 
			
		||||
			ctx.APIError(500, "GetRepositoryByName", err)
 | 
			
		||||
		}
 | 
			
		||||
		return nil, nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return owner, repo
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func GetRepo(ctx *middleware.Context) {
 | 
			
		||||
	owner, repo := parseOwnerAndRepo(ctx)
 | 
			
		||||
	if ctx.Written() {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if user.IsOrganization() && !user.IsOwnedBy(ctx.User.Id) {
 | 
			
		||||
	ctx.JSON(200, ToApiRepository(owner, repo, api.Permission{true, true, true}))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func DeleteRepo(ctx *middleware.Context) {
 | 
			
		||||
	owner, repo := parseOwnerAndRepo(ctx)
 | 
			
		||||
	if ctx.Written() {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if owner.IsOrganization() && !owner.IsOwnedBy(ctx.User.Id) {
 | 
			
		||||
		ctx.APIError(403, "", "Given user is not owner of organization.")
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if err := models.DeleteRepository(user.Id, repo.ID); err != nil {
 | 
			
		||||
	if err := models.DeleteRepository(owner.Id, repo.ID); err != nil {
 | 
			
		||||
		ctx.APIError(500, "DeleteRepository", err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	log.Trace("Repository deleted: %s/%s", user.Name, repo.Name)
 | 
			
		||||
	log.Trace("Repository deleted: %s/%s", owner.Name, repo.Name)
 | 
			
		||||
	ctx.Status(204)
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user