From be13167b869161b6e19dc3e94835245cdc7911e5 Mon Sep 17 00:00:00 2001 From: Sebastien Douheret Date: Tue, 31 Oct 2017 18:09:45 +0100 Subject: Moved all structs exposed by API into apiv1 package Signed-off-by: Sebastien Douheret --- lib/apiv1/config.go | 22 ++++++++++++++++++ lib/apiv1/events.go | 33 ++++++++++++++++++++++++++ lib/apiv1/exec.go | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++ lib/apiv1/projects.go | 32 ++++++++++++++++++++++++++ lib/apiv1/sdks.go | 11 +++++++++ lib/apiv1/version.go | 15 ++++++++++++ 6 files changed, 177 insertions(+) create mode 100644 lib/apiv1/config.go create mode 100644 lib/apiv1/events.go create mode 100644 lib/apiv1/exec.go create mode 100644 lib/apiv1/projects.go create mode 100644 lib/apiv1/sdks.go create mode 100644 lib/apiv1/version.go (limited to 'lib/apiv1') diff --git a/lib/apiv1/config.go b/lib/apiv1/config.go new file mode 100644 index 0000000..f5c1fb5 --- /dev/null +++ b/lib/apiv1/config.go @@ -0,0 +1,22 @@ +package apiv1 + +// APIConfig parameters (json format) of /config command +type APIConfig struct { + Servers []ServerCfg `json:"servers"` + + // Not exposed outside in JSON + Version string `json:"-"` + APIVersion string `json:"-"` + VersionGitTag string `json:"-"` +} + +// ServerCfg . +type ServerCfg struct { + ID string `json:"id"` + URL string `json:"url"` + APIURL string `json:"apiUrl"` + PartialURL string `json:"partialUrl"` + ConnRetry int `json:"connRetry"` + Connected bool `json:"connected"` + Disabled bool `json:"disabled"` +} diff --git a/lib/apiv1/events.go b/lib/apiv1/events.go new file mode 100644 index 0000000..8bad394 --- /dev/null +++ b/lib/apiv1/events.go @@ -0,0 +1,33 @@ +package apiv1 + +// EventRegisterArgs is the parameters (json format) of /events/register command +type EventRegisterArgs struct { + Name string `json:"name"` + ProjectID string `json:"filterProjectID"` +} + +// EventUnRegisterArgs is the parameters (json format) of /events/unregister command +type EventUnRegisterArgs struct { + Name string `json:"name"` + ID int `json:"id"` +} + +// Events definitions +const ( + // EventTypePrefix Used as event prefix + EventTypePrefix = "event:" // following by event type + + // Supported Events type + EVTAll = "all" + EVTServerConfig = "server-config" // data type apiv1.ServerCfg + EVTProjectAdd = "project-add" // data type apiv1.ProjectConfig + EVTProjectDelete = "project-delete" // data type apiv1.ProjectConfig + EVTProjectChange = "project-state-change" // data type apiv1.ProjectConfig +) + +// EventMsg Message send +type EventMsg struct { + Time string `json:"time"` + Type string `json:"type"` + Data interface{} `json:"data"` +} diff --git a/lib/apiv1/exec.go b/lib/apiv1/exec.go new file mode 100644 index 0000000..914ed79 --- /dev/null +++ b/lib/apiv1/exec.go @@ -0,0 +1,64 @@ +package apiv1 + +type ( + // ExecArgs JSON parameters of /exec command + ExecArgs struct { + ID string `json:"id" binding:"required"` + SdkID string `json:"sdkID"` // sdk ID to use for setting env + CmdID string `json:"cmdID"` // command unique ID + Cmd string `json:"cmd" binding:"required"` + Args []string `json:"args"` + Env []string `json:"env"` + RPath string `json:"rpath"` // relative path into project + TTY bool `json:"tty"` // Use a tty, specific to gdb --tty option + TTYGdbserverFix bool `json:"ttyGdbserverFix"` // Set to true to activate gdbserver workaround about inferior output + ExitImmediate bool `json:"exitImmediate"` // when true, exit event sent immediately when command exited (IOW, don't wait file synchronization) + CmdTimeout int `json:"timeout"` // command completion timeout in Second + } + + // ExecInMsg Message used to received input characters (stdin) + ExecInMsg struct { + CmdID string `json:"cmdID"` + Timestamp string `json:"timestamp"` + Stdin string `json:"stdin"` + } + + // ExecOutMsg Message used to send output characters (stdout+stderr) + ExecOutMsg struct { + CmdID string `json:"cmdID"` + Timestamp string `json:"timestamp"` + Stdout string `json:"stdout"` + Stderr string `json:"stderr"` + } + + // ExecExitMsg Message sent when executed command exited + ExecExitMsg struct { + CmdID string `json:"cmdID"` + Timestamp string `json:"timestamp"` + Code int `json:"code"` + Error error `json:"error"` + } + + // ExecSignalArgs JSON parameters of /exec/signal command + ExecSignalArgs struct { + CmdID string `json:"cmdID" binding:"required"` // command id + Signal string `json:"signal" binding:"required"` // signal number + } +) + +const ( + // ExecInEvent Event send in WS when characters are sent (stdin) + ExecInEvent = "exec:input" + + // ExecOutEvent Event send in WS when characters are received (stdout or stderr) + ExecOutEvent = "exec:output" + + // ExecExitEvent Event send in WS when program exited + ExecExitEvent = "exec:exit" + + // ExecInferiorInEvent Event send in WS when characters are sent to an inferior (used by gdb inferior/tty) + ExecInferiorInEvent = "exec:inferior-input" + + // ExecInferiorOutEvent Event send in WS when characters are received by an inferior + ExecInferiorOutEvent = "exec:inferior-output" +) diff --git a/lib/apiv1/projects.go b/lib/apiv1/projects.go new file mode 100644 index 0000000..d76fa09 --- /dev/null +++ b/lib/apiv1/projects.go @@ -0,0 +1,32 @@ +package apiv1 + +// ProjectType definition +type ProjectType string + +const ( + TypePathMap = "PathMap" + TypeCloudSync = "CloudSync" + TypeCifsSmb = "CIFS" +) + +// Project Status definition +const ( + StatusErrorConfig = "ErrorConfig" + StatusDisable = "Disable" + StatusEnable = "Enable" + StatusPause = "Pause" + StatusSyncing = "Syncing" +) + +// ProjectConfig is the config for one project +type ProjectConfig struct { + ID string `json:"id"` + ServerID string `json:"serverId"` + Label string `json:"label"` + ClientPath string `json:"clientPath"` + ServerPath string `json:"serverPath"` + Type ProjectType `json:"type"` + Status string `json:"status"` + IsInSync bool `json:"isInSync"` + DefaultSdk string `json:"defaultSdk"` +} diff --git a/lib/apiv1/sdks.go b/lib/apiv1/sdks.go new file mode 100644 index 0000000..dfa44e2 --- /dev/null +++ b/lib/apiv1/sdks.go @@ -0,0 +1,11 @@ +package apiv1 + +// SDK Define a cross tool chain used to build application +type SDK struct { + ID string `json:"id" binding:"required"` + Name string `json:"name"` + Profile string `json:"profile"` + Version string `json:"version"` + Arch string `json:"arch"` + Path string `json:"path"` +} diff --git a/lib/apiv1/version.go b/lib/apiv1/version.go new file mode 100644 index 0000000..956f890 --- /dev/null +++ b/lib/apiv1/version.go @@ -0,0 +1,15 @@ +package apiv1 + +// VersionData +type VersionData struct { + ID string `json:"id"` + Version string `json:"version"` + APIVersion string `json:"apiVersion"` + VersionGitTag string `json:"gitTag"` +} + +// XDSVersion +type XDSVersion struct { + Client VersionData `json:"client"` + Server []VersionData `json:"servers"` +} -- cgit 1.2.3-korg