woodpecker/server/subscribe.go

47 lines
966 B
Go

package server
import (
"github.com/gin-gonic/gin"
"github.com/drone/drone/common"
)
// Unubscribe accapets a request to unsubscribe the
// currently authenticated user to the repository.
//
// DEL /api/subscribers/:owner/:name
//
func Unsubscribe(c *gin.Context) {
store := ToDatastore(c)
repo := ToRepo(c)
user := ToUser(c)
delete(user.Repos, repo.FullName)
err := store.UpdateUser(user)
if err != nil {
c.Fail(400, err)
} else {
c.Writer.WriteHeader(200)
}
}
// Subscribe accapets a request to subscribe the
// currently authenticated user to the repository.
//
// POST /api/subscriber/:owner/:name
//
func Subscribe(c *gin.Context) {
store := ToDatastore(c)
repo := ToRepo(c)
user := ToUser(c)
if user.Repos == nil {
user.Repos = map[string]struct{}{}
}
user.Repos[repo.FullName] = struct{}{}
err := store.UpdateUser(user)
if err != nil {
c.Fail(400, err)
} else {
c.JSON(200, &common.Subscriber{Subscribed: true})
}
}