Added webapp Dashboard + logic to interact with server.
[src/xds/xds-agent.git] / lib / agent / project-pathmap.go
1 package agent
2
3 import (
4         "path/filepath"
5 )
6
7 // IPROJECT interface implementation for native/path mapping projects
8
9 // PathMap .
10 type PathMap struct {
11         *Context
12         server *XdsServer
13         folder *FolderConfig
14 }
15
16 // NewProjectPathMap Create a new instance of PathMap
17 func NewProjectPathMap(ctx *Context, svr *XdsServer) *PathMap {
18         p := PathMap{
19                 Context: ctx,
20                 server:  svr,
21                 folder:  &FolderConfig{},
22         }
23         return &p
24 }
25
26 // Add a new project
27 func (p *PathMap) Add(cfg ProjectConfig) (*ProjectConfig, error) {
28         var err error
29
30         // SEB TODO: check local/server directory access
31
32         err = p.server.FolderAdd(p.server.ProjectToFolder(cfg), p.folder)
33         if err != nil {
34                 return nil, err
35         }
36
37         return p.GetProject(), nil
38 }
39
40 // Delete a project
41 func (p *PathMap) Delete() error {
42         return p.server.FolderDelete(p.folder.ID)
43 }
44
45 // GetProject Get public part of project config
46 func (p *PathMap) GetProject() *ProjectConfig {
47         prj := p.server.FolderToProject(*p.folder)
48         prj.ServerID = p.server.ID
49         return &prj
50 }
51
52 // SetProject Set project config
53 func (p *PathMap) SetProject(prj ProjectConfig) *ProjectConfig {
54         p.folder = p.server.ProjectToFolder(prj)
55         return p.GetProject()
56 }
57
58 // GetServer Get the XdsServer that holds this project
59 func (p *PathMap) GetServer() *XdsServer {
60         return p.server
61 }
62
63 // GetFullPath returns the full path of a directory (from server POV)
64 func (p *PathMap) GetFullPath(dir string) string {
65         if &dir == nil {
66                 return p.folder.DataPathMap.ServerPath
67         }
68         return filepath.Join(p.folder.DataPathMap.ServerPath, dir)
69 }
70
71 // Sync Force project files synchronization
72 func (p *PathMap) Sync() error {
73         return nil
74 }
75
76 // IsInSync Check if project files are in-sync
77 func (p *PathMap) IsInSync() (bool, error) {
78         return true, nil
79 }