X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=lib%2Fagent%2Fapiv1-projects.go;h=ceb92bbc851ad926bc2d4bd2cd92dd8eeba383dd;hb=a2cc38902ff7528870822110c4f04329a3918564;hp=d4b5e74ae3d366d4c0c0752f7b566a6a896c2b94;hpb=2d90eac319979dba64371258b30e61e77a15db7d;p=src%2Fxds%2Fxds-agent.git diff --git a/lib/agent/apiv1-projects.go b/lib/agent/apiv1-projects.go index d4b5e74..ceb92bb 100644 --- a/lib/agent/apiv1-projects.go +++ b/lib/agent/apiv1-projects.go @@ -1,10 +1,28 @@ +/* + * Copyright (C) 2017-2018 "IoT.bzh" + * Author Sebastien Douheret + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package agent import ( "net/http" + "gerrit.automotivelinux.org/gerrit/src/xds/xds-agent/lib/xaapiv1" + common "gerrit.automotivelinux.org/gerrit/src/xds/xds-common.git/golib" "github.com/gin-gonic/gin" - common "github.com/iotbzh/xds-common/golib" ) // getProjects returns all projects configuration @@ -14,7 +32,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 +48,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 xaapiv1.ProjectConfig if c.BindJSON(&cfgArg) != nil { common.APIError(c, "Invalid arguments") return @@ -33,7 +56,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), c.Request.Host) if err != nil { common.APIError(c, err.Error()) return @@ -44,29 +67,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 xaapiv1.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) +}