8 // EventRegisterArgs is the parameters (json format) of /events/register command
9 type EventRegisterArgs struct {
10 Name string `json:"name"`
11 ProjectID string `json:"filterProjectID"`
14 // EventUnRegisterArgs is the parameters (json format) of /events/unregister command
15 type EventUnRegisterArgs struct {
16 Name string `json:"name"`
20 // Events Type definitions
22 // EventTypePrefix Used as event prefix
23 EventTypePrefix = "event:" // following by event type
25 // Supported Events type
26 EVTAll = EventTypePrefix + "all"
27 EVTServerConfig = EventTypePrefix + "server-config" // type EventMsg with Data type apiv1.ServerCfg
28 EVTProjectAdd = EventTypePrefix + "project-add" // type EventMsg with Data type apiv1.ProjectConfig
29 EVTProjectDelete = EventTypePrefix + "project-delete" // type EventMsg with Data type apiv1.ProjectConfig
30 EVTProjectChange = EventTypePrefix + "project-state-change" // type EventMsg with Data type apiv1.ProjectConfig
33 // EVTAllList List of all supported events
34 var EVTAllList = []string{
41 // EventMsg Event message send over Websocket, data format depend to Type (see DecodeXXX function)
42 type EventMsg struct {
43 Time string `json:"time"` // Timestamp
44 FromSessionID string `json:"sessionID"` // Session ID of client that emits this event
45 Type string `json:"type"` // Data type
46 Data interface{} `json:"data"` // Data
49 // DecodeServerCfg Helper to decode Data field type ServerCfg
50 func (e *EventMsg) DecodeServerCfg() (ServerCfg, error) {
52 if e.Type != EVTServerConfig {
53 return p, fmt.Errorf("Invalid type")
55 d, err := json.Marshal(e.Data)
57 err = json.Unmarshal(d, &p)
62 // DecodeProjectConfig Helper to decode Data field type ProjectConfig
63 func (e *EventMsg) DecodeProjectConfig() (ProjectConfig, error) {
67 case EVTProjectAdd, EVTProjectChange, EVTProjectDelete:
69 d, err = json.Marshal(e.Data)
71 err = json.Unmarshal(d, &p)
74 err = fmt.Errorf("Invalid type")