Refactor duplicated code in repo handlers (#2657)
* Refactor duplicated code in repo handlers * ctx.Handle
This commit is contained in:
		
							parent
							
								
									43253202e9
								
							
						
					
					
						commit
						67e1c29dc5
					
				| @ -174,31 +174,7 @@ func RedirectToRepo(ctx *Context, redirectRepoID int64) { | ||||
| 	ctx.Redirect(redirectPath) | ||||
| } | ||||
| 
 | ||||
| // RepoIDAssignment returns an macaron handler which assigns the repo to the context.
 | ||||
| func RepoIDAssignment() macaron.Handler { | ||||
| 	return func(ctx *Context) { | ||||
| 		var ( | ||||
| 			err error | ||||
| 		) | ||||
| 
 | ||||
| 		repoID := ctx.ParamsInt64(":repoid") | ||||
| 
 | ||||
| 		// Get repository.
 | ||||
| 		repo, err := models.GetRepositoryByID(repoID) | ||||
| 		if err != nil { | ||||
| 			if models.IsErrRepoNotExist(err) { | ||||
| 				ctx.Handle(404, "GetRepositoryByID", nil) | ||||
| 			} else { | ||||
| 				ctx.Handle(500, "GetRepositoryByID", err) | ||||
| 			} | ||||
| 			return | ||||
| 		} | ||||
| 
 | ||||
| 		if err = repo.GetOwner(); err != nil { | ||||
| 			ctx.Handle(500, "GetOwner", err) | ||||
| 			return | ||||
| 		} | ||||
| 
 | ||||
| func repoAssignment(ctx *Context, repo *models.Repository) { | ||||
| 	// Admin has super access.
 | ||||
| 	if ctx.IsSigned && ctx.User.IsAdmin { | ||||
| 		ctx.Repo.AccessMode = models.AccessModeOwner | ||||
| @ -221,12 +197,13 @@ func RepoIDAssignment() macaron.Handler { | ||||
| 			EarlyResponseForGoGetMeta(ctx) | ||||
| 			return | ||||
| 		} | ||||
| 			ctx.Handle(404, "no access right", err) | ||||
| 		ctx.Handle(404, "no access right", nil) | ||||
| 		return | ||||
| 	} | ||||
| 	ctx.Data["HasAccess"] = true | ||||
| 
 | ||||
| 	if repo.IsMirror { | ||||
| 		var err error | ||||
| 		ctx.Repo.Mirror, err = models.GetMirrorByRepoID(repo.ID) | ||||
| 		if err != nil { | ||||
| 			ctx.Handle(500, "GetMirror", err) | ||||
| @ -240,6 +217,29 @@ func RepoIDAssignment() macaron.Handler { | ||||
| 	ctx.Repo.Repository = repo | ||||
| 	ctx.Data["RepoName"] = ctx.Repo.Repository.Name | ||||
| 	ctx.Data["IsBareRepo"] = ctx.Repo.Repository.IsBare | ||||
| } | ||||
| 
 | ||||
| // RepoIDAssignment returns a macaron handler which assigns the repo to the context.
 | ||||
| func RepoIDAssignment() macaron.Handler { | ||||
| 	return func(ctx *Context) { | ||||
| 		repoID := ctx.ParamsInt64(":repoid") | ||||
| 
 | ||||
| 		// Get repository.
 | ||||
| 		repo, err := models.GetRepositoryByID(repoID) | ||||
| 		if err != nil { | ||||
| 			if models.IsErrRepoNotExist(err) { | ||||
| 				ctx.Handle(404, "GetRepositoryByID", nil) | ||||
| 			} else { | ||||
| 				ctx.Handle(500, "GetRepositoryByID", err) | ||||
| 			} | ||||
| 			return | ||||
| 		} | ||||
| 
 | ||||
| 		if err = repo.GetOwner(); err != nil { | ||||
| 			ctx.Handle(500, "GetOwner", err) | ||||
| 			return | ||||
| 		} | ||||
| 		repoAssignment(ctx, repo) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| @ -298,47 +298,10 @@ func RepoAssignment() macaron.Handler { | ||||
| 		} | ||||
| 		repo.Owner = owner | ||||
| 
 | ||||
| 		// Admin has super access.
 | ||||
| 		if ctx.IsSigned && ctx.User.IsAdmin { | ||||
| 			ctx.Repo.AccessMode = models.AccessModeOwner | ||||
| 		} else { | ||||
| 			var userID int64 | ||||
| 			if ctx.User != nil { | ||||
| 				userID = ctx.User.ID | ||||
| 			} | ||||
| 			mode, err := models.AccessLevel(userID, repo) | ||||
| 			if err != nil { | ||||
| 				ctx.Handle(500, "AccessLevel", err) | ||||
| 		repoAssignment(ctx, repo) | ||||
| 		if ctx.Written() { | ||||
| 			return | ||||
| 		} | ||||
| 			ctx.Repo.AccessMode = mode | ||||
| 		} | ||||
| 
 | ||||
| 		// Check access.
 | ||||
| 		if ctx.Repo.AccessMode == models.AccessModeNone { | ||||
| 			if ctx.Query("go-get") == "1" { | ||||
| 				EarlyResponseForGoGetMeta(ctx) | ||||
| 				return | ||||
| 			} | ||||
| 			ctx.Handle(404, "no access right", err) | ||||
| 			return | ||||
| 		} | ||||
| 		ctx.Data["HasAccess"] = true | ||||
| 
 | ||||
| 		if repo.IsMirror { | ||||
| 			ctx.Repo.Mirror, err = models.GetMirrorByRepoID(repo.ID) | ||||
| 			if err != nil { | ||||
| 				ctx.Handle(500, "GetMirror", err) | ||||
| 				return | ||||
| 			} | ||||
| 			ctx.Data["MirrorEnablePrune"] = ctx.Repo.Mirror.EnablePrune | ||||
| 			ctx.Data["MirrorInterval"] = ctx.Repo.Mirror.Interval | ||||
| 			ctx.Data["Mirror"] = ctx.Repo.Mirror | ||||
| 		} | ||||
| 
 | ||||
| 		ctx.Repo.Repository = repo | ||||
| 		ctx.Data["RepoName"] = ctx.Repo.Repository.Name | ||||
| 		ctx.Data["IsBareRepo"] = ctx.Repo.Repository.IsBare | ||||
| 
 | ||||
| 		gitRepo, err := git.OpenRepository(models.RepoPath(userName, repoName)) | ||||
| 		if err != nil { | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user