-
Notifications
You must be signed in to change notification settings - Fork 0
/
group_routes.go
42 lines (36 loc) · 993 Bytes
/
group_routes.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package v1
import (
"encoding/json"
"net/http"
)
func handleGetGroups(cs *ControlSurface, rw http.ResponseWriter, _ *http.Request) {
root := NewGroup(cs.RunState.Runner.GetDefaultGroup(), nil)
groups := FlattenGroup(root)
data, err := json.Marshal(newGroupsJSONAPI(groups))
if err != nil {
apiError(rw, "Encoding error", err.Error(), http.StatusInternalServerError)
return
}
_, _ = rw.Write(data)
}
func handleGetGroup(cs *ControlSurface, rw http.ResponseWriter, _ *http.Request, id string) {
root := NewGroup(cs.RunState.Runner.GetDefaultGroup(), nil)
groups := FlattenGroup(root)
var group *Group
for _, g := range groups {
if g.ID == id {
group = g
break
}
}
if group == nil {
apiError(rw, "Not Found", "No group with that ID was found", http.StatusNotFound)
return
}
data, err := json.Marshal(newGroupJSONAPI(group))
if err != nil {
apiError(rw, "Encoding error", err.Error(), http.StatusInternalServerError)
return
}
_, _ = rw.Write(data)
}