/
schedule.go
54 lines (45 loc) · 1.18 KB
/
schedule.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
43
44
45
46
47
48
49
50
51
52
53
54
package api
import (
"github.com/pborman/uuid"
)
type Schedule struct {
UUID string `json:"uuid"`
Name string `json:"name"`
Summary string `json:"summary"`
When string `json:"when"`
}
type ScheduleFilter struct {
Unused YesNo
Name string
}
func GetSchedules(filter ScheduleFilter) ([]Schedule, error) {
uri := ShieldURI("/v1/schedules")
uri.MaybeAddParameter("name", filter.Name)
uri.MaybeAddParameter("unused", filter.Unused)
var data []Schedule
return data, uri.Get(&data)
}
func GetSchedule(id uuid.UUID) (Schedule, error) {
var data Schedule
return data, ShieldURI("/v1/schedule/%s", id).Get(&data)
}
func CreateSchedule(contentJSON string) (Schedule, error) {
data := struct {
UUID string `json:"uuid"`
}{}
err := ShieldURI("/v1/schedules").Post(&data, contentJSON)
if err == nil {
return GetSchedule(uuid.Parse(data.UUID))
}
return Schedule{}, err
}
func UpdateSchedule(id uuid.UUID, contentJSON string) (Schedule, error) {
err := ShieldURI("/v1/schedule/%s", id).Put(nil, contentJSON)
if err == nil {
return GetSchedule(id)
}
return Schedule{}, err
}
func DeleteSchedule(id uuid.UUID) error {
return ShieldURI("/v1/schedule/%s", id).Delete(nil)
}