X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=lib%2Fagent%2Fapiv1-projects.go;h=57848969f7543f4bac319f235908a10fb188b647;hb=4d843d2bde236ec23810d0904dfb8aebbc53a37b;hp=d4b5e74ae3d366d4c0c0752f7b566a6a896c2b94;hpb=97ca1f277dc8b6973d6fa67add5593a9c395ce60;p=src%2Fxds%2Fxds-agent.git diff --git a/lib/agent/apiv1-projects.go b/lib/agent/apiv1-projects.go index d4b5e74..5784896 100644 --- a/lib/agent/apiv1-projects.go +++ b/lib/agent/apiv1-projects.go @@ -4,6 +4,7 @@ import ( "net/http" "github.com/gin-gonic/gin" + "github.com/iotbzh/xds-agent/lib/apiv1" common "github.com/iotbzh/xds-common/golib" ) @@ -14,7 +15,12 @@ func (s *APIService) getProjects(c *gin.Context) { // getProject returns a specific project configuration func (s *APIService) getProject(c *gin.Context) { - prj := s.projects.Get(c.Param("id")) + id, err := s.projects.ResolveID(c.Param("id")) + if err != nil { + common.APIError(c, err.Error()) + return + } + prj := s.projects.Get(id) if prj == nil { common.APIError(c, "Invalid id") return @@ -25,7 +31,7 @@ func (s *APIService) getProject(c *gin.Context) { // addProject adds a new project to server config func (s *APIService) addProject(c *gin.Context) { - var cfgArg ProjectConfig + var cfgArg apiv1.ProjectConfig if c.BindJSON(&cfgArg) != nil { common.APIError(c, "Invalid arguments") return @@ -33,7 +39,7 @@ func (s *APIService) addProject(c *gin.Context) { s.Log.Debugln("Add project config: ", cfgArg) - newFld, err := s.projects.Add(cfgArg) + newFld, err := s.projects.Add(cfgArg, s.sessions.GetID(c)) if err != nil { common.APIError(c, err.Error()) return @@ -44,29 +50,61 @@ func (s *APIService) addProject(c *gin.Context) { // syncProject force synchronization of project files func (s *APIService) syncProject(c *gin.Context) { - id := c.Param("id") + id, err := s.projects.ResolveID(c.Param("id")) + if err != nil { + common.APIError(c, err.Error()) + return + } s.Log.Debugln("Sync project id: ", id) - err := s.projects.ForceSync(id) + err = s.projects.ForceSync(id) if err != nil { common.APIError(c, err.Error()) return } - c.JSON(http.StatusOK, "") + c.JSON(http.StatusOK, nil) } // delProject deletes project from server config func (s *APIService) delProject(c *gin.Context) { - id := c.Param("id") + id, err := s.projects.ResolveID(c.Param("id")) + if err != nil { + common.APIError(c, err.Error()) + return + } s.Log.Debugln("Delete project id ", id) - delEntry, err := s.projects.Delete(id) + delEntry, err := s.projects.Delete(id, s.sessions.GetID(c)) if err != nil { common.APIError(c, err.Error()) return } c.JSON(http.StatusOK, delEntry) } + +// updateProject Update some field of a specific project +func (s *APIService) updateProject(c *gin.Context) { + id, err := s.projects.ResolveID(c.Param("id")) + if err != nil { + common.APIError(c, err.Error()) + return + } + + var cfgArg apiv1.ProjectConfig + if c.BindJSON(&cfgArg) != nil { + common.APIError(c, "Invalid arguments") + return + } + + s.Log.Debugln("Update project id ", id) + + upPrj, err := s.projects.Update(id, cfgArg, s.sessions.GetID(c)) + if err != nil { + common.APIError(c, err.Error()) + return + } + c.JSON(http.StatusOK, upPrj) +}