diff options
author | Sebastien Douheret <sebastien.douheret@iot.bzh> | 2017-09-25 14:15:16 +0200 |
---|---|---|
committer | Sebastien Douheret <sebastien.douheret@iot.bzh> | 2017-10-06 18:25:04 +0200 |
commit | 97ca1f277dc8b6973d6fa67add5593a9c395ce60 (patch) | |
tree | 761649d7771e8699a67567476c17fb2fa0e28e57 /lib/agent/project-st.go | |
parent | 12a20d0905b0d3e7e0f4c9ec8ee619f683256d71 (diff) |
Added webapp Dashboard + logic to interact with server.
Signed-off-by: Sebastien Douheret <sebastien.douheret@iot.bzh>
Diffstat (limited to 'lib/agent/project-st.go')
-rw-r--r-- | lib/agent/project-st.go | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/lib/agent/project-st.go b/lib/agent/project-st.go new file mode 100644 index 0000000..28a287c --- /dev/null +++ b/lib/agent/project-st.go @@ -0,0 +1,93 @@ +package agent + +import "github.com/iotbzh/xds-agent/lib/syncthing" + +// SEB TODO + +// IPROJECT interface implementation for syncthing projects + +// STProject . +type STProject struct { + *Context + server *XdsServer + folder *FolderConfig +} + +// NewProjectST Create a new instance of STProject +func NewProjectST(ctx *Context, svr *XdsServer) *STProject { + p := STProject{ + Context: ctx, + server: svr, + folder: &FolderConfig{}, + } + return &p +} + +// Add a new project +func (p *STProject) Add(cfg ProjectConfig) (*ProjectConfig, error) { + var err error + + err = p.server.FolderAdd(p.server.ProjectToFolder(cfg), p.folder) + if err != nil { + return nil, err + } + svrPrj := p.GetProject() + + // Declare project into local Syncthing + p.SThg.FolderChange(st.FolderChangeArg{ + ID: cfg.ID, + Label: cfg.Label, + RelativePath: cfg.ClientPath, + SyncThingID: p.server.ServerConfig.Builder.SyncThingID, + }) + + return svrPrj, nil +} + +// Delete a project +func (p *STProject) Delete() error { + return p.server.FolderDelete(p.folder.ID) +} + +// GetProject Get public part of project config +func (p *STProject) GetProject() *ProjectConfig { + prj := p.server.FolderToProject(*p.folder) + prj.ServerID = p.server.ID + return &prj +} + +// SetProject Set project config +func (p *STProject) SetProject(prj ProjectConfig) *ProjectConfig { + // SEB TODO + p.folder = p.server.ProjectToFolder(prj) + return p.GetProject() +} + +// GetServer Get the XdsServer that holds this project +func (p *STProject) GetServer() *XdsServer { + // SEB TODO + return p.server +} + +// GetFullPath returns the full path of a directory (from server POV) +func (p *STProject) GetFullPath(dir string) string { + /* SEB + if &dir == nil { + return p.folder.DataSTProject.ServerPath + } + return filepath.Join(p.folder.DataSTProject.ServerPath, dir) + */ + return "SEB TODO" +} + +// Sync Force project files synchronization +func (p *STProject) Sync() error { + // SEB TODO + return nil +} + +// IsInSync Check if project files are in-sync +func (p *STProject) IsInSync() (bool, error) { + // SEB TODO + return false, nil +} |