X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=lib%2Fxsapiv1%2Ffolders.go;fp=lib%2Fxsapiv1%2Ffolders.go;h=9506a1d40f89e11f3eea0c5ab4c61af63d3be977;hb=2f7828d01f4c4ca2909f95f098627cd5475ed225;hp=0000000000000000000000000000000000000000;hpb=5caebfb4b7c3b73988f067082b219ce5b7f409ba;p=src%2Fxds%2Fxds-server.git diff --git a/lib/xsapiv1/folders.go b/lib/xsapiv1/folders.go new file mode 100644 index 0000000..9506a1d --- /dev/null +++ b/lib/xsapiv1/folders.go @@ -0,0 +1,61 @@ +package xsapiv1 + +// FolderType definition +type FolderType string + +const ( + TypePathMap = "PathMap" + TypeCloudSync = "CloudSync" + TypeCifsSmb = "CIFS" +) + +// Folder Status definition +const ( + StatusErrorConfig = "ErrorConfig" + StatusDisable = "Disable" + StatusEnable = "Enable" + StatusPause = "Pause" + StatusSyncing = "Syncing" +) + +// FolderConfig is the config for one folder +type FolderConfig struct { + ID string `json:"id"` + Label string `json:"label"` + ClientPath string `json:"path"` + Type FolderType `json:"type"` + Status string `json:"status"` + IsInSync bool `json:"isInSync"` + DefaultSdk string `json:"defaultSdk"` + ClientData string `json:"clientData"` // free form field that can used by client + + // Not exported fields from REST API point of view + RootPath string `json:"-"` + + // FIXME: better to define an equivalent to union data and then implement + // UnmarshalJSON/MarshalJSON to decode/encode according to Type value + // Data interface{} `json:"data"` + + // Specific data depending on which Type is used + DataPathMap PathMapConfig `json:"dataPathMap,omitempty"` + DataCloudSync CloudSyncConfig `json:"dataCloudSync,omitempty"` +} + +// FolderConfigUpdatableFields List fields that can be updated using Update function +var FolderConfigUpdatableFields = []string{ + "Label", "DefaultSdk", "ClientData", +} + +// PathMapConfig Path mapping specific data +type PathMapConfig struct { + ServerPath string `json:"serverPath"` + + // Don't keep temporary file name (IOW we don't want to save it and reuse it) + CheckFile string `json:"checkFile" xml:"-"` + CheckContent string `json:"checkContent" xml:"-"` +} + +// CloudSyncConfig CloudSync (AKA Syncthing) specific data +type CloudSyncConfig struct { + SyncThingID string `json:"syncThingID"` +}