|
@@ -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)
|
|
|
+}
|