46 lines
1.1 KiB
Go
46 lines
1.1 KiB
Go
package api
|
|
|
|
import (
|
|
"net/http"
|
|
"strings"
|
|
|
|
"srs.epita.fr/fic-server/admin/sync"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
func declareRepositoriesRoutes(router *gin.RouterGroup) {
|
|
if gi, ok := sync.GlobalImporter.(sync.GitImporter); ok {
|
|
router.GET("/repositories", func(c *gin.Context) {
|
|
mod, err := gi.GetSubmodules()
|
|
if err != nil {
|
|
c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"errmsg": err.Error()})
|
|
return
|
|
}
|
|
c.JSON(http.StatusOK, gin.H{"repositories": mod})
|
|
})
|
|
|
|
router.GET("/repositories/*repopath", func(c *gin.Context) {
|
|
repopath := strings.TrimPrefix(c.Param("repopath"), "/")
|
|
|
|
mod, err := gi.GetSubmodule(repopath)
|
|
if err != nil {
|
|
c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"errmsg": err.Error()})
|
|
return
|
|
}
|
|
c.JSON(http.StatusOK, mod)
|
|
})
|
|
|
|
router.POST("/repositories/*repopath", func(c *gin.Context) {
|
|
repopath := strings.TrimPrefix(c.Param("repopath"), "/")
|
|
|
|
mod, err := gi.IsRepositoryUptodate(repopath)
|
|
if err != nil {
|
|
c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"errmsg": err.Error()})
|
|
return
|
|
}
|
|
c.JSON(http.StatusOK, mod)
|
|
})
|
|
}
|
|
}
|