X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=lib%2Fagent%2Fxdsserver.go;h=203709472092b21537eb8dc1bf4e1ee34df33e4a;hb=57670b6f5a8e98c80670b0627bfad7dec7085f54;hp=b76908c0337dc8e6a67e9bff9ba7e4b0dea3d989;hpb=2d90eac319979dba64371258b30e61e77a15db7d;p=src%2Fxds%2Fxds-agent.git diff --git a/lib/agent/xdsserver.go b/lib/agent/xdsserver.go index b76908c..2037094 100644 --- a/lib/agent/xdsserver.go +++ b/lib/agent/xdsserver.go @@ -11,6 +11,7 @@ import ( "time" "github.com/gin-gonic/gin" + "github.com/iotbzh/xds-agent/lib/apiv1" "github.com/iotbzh/xds-agent/lib/xdsconfig" common "github.com/iotbzh/xds-common/golib" uuid "github.com/satori/go.uuid" @@ -213,7 +214,7 @@ func (xs *XdsServer) GetFolders(folders *[]XdsFolderConfig) error { // FolderAdd Send POST request to add a folder func (xs *XdsServer) FolderAdd(fld *XdsFolderConfig, res interface{}) error { - response, err := xs._HTTPPost("/folder", fld) + response, err := xs._HTTPPost("/folders", fld) if err != nil { return err } @@ -228,12 +229,12 @@ func (xs *XdsServer) FolderAdd(fld *XdsFolderConfig, res interface{}) error { // FolderDelete Send DELETE request to delete a folder func (xs *XdsServer) FolderDelete(id string) error { - return xs.client.HTTPDelete("/folder/" + id) + return xs.client.HTTPDelete("/folders/" + id) } // FolderSync Send POST request to force synchronization of a folder func (xs *XdsServer) FolderSync(id string) error { - return xs.client.HTTPPost("/folder/sync/"+id, "") + return xs.client.HTTPPost("/folders/sync/"+id, "") } // SetAPIRouterGroup . @@ -250,7 +251,13 @@ func (xs *XdsServer) PassthroughGet(url string) { xs.apiRouter.GET(url, func(c *gin.Context) { var data interface{} - if err := xs._HTTPGet(url, &data); err != nil { + // Take care of param (eg. id in /projects/:id) + nURL := url + if strings.Contains(url, ":") { + nURL = strings.TrimPrefix(c.Request.URL.Path, xs.APIURL) + } + // Send Get request + if err := xs._HTTPGet(nURL, &data); err != nil { if strings.Contains(err.Error(), "connection refused") { xs.Connected = false xs._NotifyState() @@ -278,7 +285,13 @@ func (xs *XdsServer) PassthroughPost(url string) { return } - response, err := xs._HTTPPost(url, bodyReq[:n]) + // Take care of param (eg. id in /projects/:id) + nURL := url + if strings.Contains(url, ":") { + nURL = strings.TrimPrefix(c.Request.URL.Path, xs.APIURL) + } + // Send Post request + response, err := xs._HTTPPost(nURL, bodyReq[:n]) if err != nil { common.APIError(c, err.Error()) return @@ -366,7 +379,7 @@ func (xs *XdsServer) EventOff(evName string, id uuid.UUID) error { } // ProjectToFolder Convert Project structure to Folder structure -func (xs *XdsServer) ProjectToFolder(pPrj ProjectConfig) *XdsFolderConfig { +func (xs *XdsServer) ProjectToFolder(pPrj apiv1.ProjectConfig) *XdsFolderConfig { stID := "" if pPrj.Type == XdsTypeCloudSync { stID, _ = xs.SThg.IDGet() @@ -395,7 +408,7 @@ func (xs *XdsServer) ProjectToFolder(pPrj ProjectConfig) *XdsFolderConfig { } // FolderToProject Convert Folder structure to Project structure -func (xs *XdsServer) FolderToProject(fPrj XdsFolderConfig) ProjectConfig { +func (xs *XdsServer) FolderToProject(fPrj XdsFolderConfig) apiv1.ProjectConfig { inSync := fPrj.IsInSync sts := fPrj.Status @@ -404,27 +417,27 @@ func (xs *XdsServer) FolderToProject(fPrj XdsFolderConfig) ProjectConfig { sts = fPrj.DataCloudSync.STSvrStatus switch fPrj.DataCloudSync.STLocStatus { - case StatusErrorConfig, StatusDisable, StatusPause: + case apiv1.StatusErrorConfig, apiv1.StatusDisable, apiv1.StatusPause: sts = fPrj.DataCloudSync.STLocStatus break - case StatusSyncing: - if sts != StatusErrorConfig && sts != StatusDisable && sts != StatusPause { - sts = StatusSyncing + case apiv1.StatusSyncing: + if sts != apiv1.StatusErrorConfig && sts != apiv1.StatusDisable && sts != apiv1.StatusPause { + sts = apiv1.StatusSyncing } break - case StatusEnable: + case apiv1.StatusEnable: // keep STSvrStatus break } } - pPrj := ProjectConfig{ + pPrj := apiv1.ProjectConfig{ ID: fPrj.ID, ServerID: xs.ID, Label: fPrj.Label, ClientPath: fPrj.ClientPath, ServerPath: fPrj.DataPathMap.ServerPath, - Type: ProjectType(fPrj.Type), + Type: apiv1.ProjectType(fPrj.Type), Status: sts, IsInSync: inSync, DefaultSdk: fPrj.DefaultSdk, @@ -591,7 +604,7 @@ func (xs *XdsServer) _SocketConnect() error { // Send event to notify changes func (xs *XdsServer) _NotifyState() { - evSts := ServerCfg{ + evSts := apiv1.ServerCfg{ ID: xs.ID, URL: xs.BaseURL, APIURL: xs.APIURL, @@ -599,7 +612,7 @@ func (xs *XdsServer) _NotifyState() { ConnRetry: xs.ConnRetry, Connected: xs.Connected, } - if err := xs.events.Emit(EVTServerConfig, evSts); err != nil { + if err := xs.events.Emit(apiv1.EVTServerConfig, evSts); err != nil { xs.Log.Warningf("Cannot notify XdsServer state change: %v", err) } }