|  | @@ -11,6 +11,24 @@ import (
 | 
	
		
			
				|  |  |  	"github.com/gogits/gogs/modules/context"
 | 
	
		
			
				|  |  |  )
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +func ListCollaborators(ctx *context.APIContext) {
 | 
	
		
			
				|  |  | +	collaborators, err := ctx.Repo.Repository.GetCollaborators()
 | 
	
		
			
				|  |  | +	if err != nil {
 | 
	
		
			
				|  |  | +		if models.IsErrUserNotExist(err) {
 | 
	
		
			
				|  |  | +			ctx.Error(422, "", err)
 | 
	
		
			
				|  |  | +		} else {
 | 
	
		
			
				|  |  | +			ctx.Error(500, "GetCollaborators", err)
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		return
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	apiCollaborators := make([]*api.Collaborator, len(collaborators))
 | 
	
		
			
				|  |  | +	for i := range collaborators {
 | 
	
		
			
				|  |  | +		apiCollaborators[i] = collaborators[i].APIFormat()
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	ctx.JSON(200, &apiCollaborators)
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  func AddCollaborator(ctx *context.APIContext, form api.AddCollaboratorOption) {
 | 
	
		
			
				|  |  |  	collaborator, err := models.GetUserByName(ctx.Params(":collaborator"))
 | 
	
		
			
				|  |  |  	if err != nil {
 | 
	
	
		
			
				|  | @@ -36,3 +54,46 @@ func AddCollaborator(ctx *context.APIContext, form api.AddCollaboratorOption) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	ctx.Status(204)
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +func IsCollaborator(ctx *context.APIContext) {
 | 
	
		
			
				|  |  | +	collaborator, err := models.GetUserByName(ctx.Params(":collaborator"))
 | 
	
		
			
				|  |  | +	if err != nil {
 | 
	
		
			
				|  |  | +		if models.IsErrUserNotExist(err) {
 | 
	
		
			
				|  |  | +			ctx.Error(422, "", err)
 | 
	
		
			
				|  |  | +		} else {
 | 
	
		
			
				|  |  | +			ctx.Error(500, "GetUserByName", err)
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		return
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	is, err := ctx.Repo.Repository.IsCollaborator(collaborator.ID)
 | 
	
		
			
				|  |  | +	if err != nil {
 | 
	
		
			
				|  |  | +		ctx.Error(500, "IsCollaboration", err)
 | 
	
		
			
				|  |  | +		return
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	if !is {
 | 
	
		
			
				|  |  | +		ctx.Status(404)
 | 
	
		
			
				|  |  | +	} else {
 | 
	
		
			
				|  |  | +		ctx.Status(204)
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +func DeleteCollaborator(ctx *context.APIContext) {
 | 
	
		
			
				|  |  | +	collaborator, err := models.GetUserByName(ctx.Params(":collaborator"))
 | 
	
		
			
				|  |  | +	if err != nil {
 | 
	
		
			
				|  |  | +		if models.IsErrUserNotExist(err) {
 | 
	
		
			
				|  |  | +			ctx.Error(422, "", err)
 | 
	
		
			
				|  |  | +		} else {
 | 
	
		
			
				|  |  | +			ctx.Error(500, "GetUserByName", err)
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		return
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	if err := ctx.Repo.Repository.DeleteCollaboration(collaborator.ID); err != nil {
 | 
	
		
			
				|  |  | +		ctx.Error(500, "DeleteCollaboration", err)
 | 
	
		
			
				|  |  | +		return
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	ctx.Status(204)
 | 
	
		
			
				|  |  | +}
 |