-
Notifications
You must be signed in to change notification settings - Fork 18
/
label_types.go
90 lines (70 loc) · 1.29 KB
/
label_types.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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package proton
import (
"encoding/json"
"strings"
)
const (
InboxLabel = "0"
AllDraftsLabel = "1"
AllSentLabel = "2"
TrashLabel = "3"
SpamLabel = "4"
AllMailLabel = "5"
ArchiveLabel = "6"
SentLabel = "7"
DraftsLabel = "8"
OutboxLabel = "9"
StarredLabel = "10"
AllScheduledLabel = "12"
)
type Label struct {
ID string
ParentID string
Name string
Path []string
Color string
Type LabelType
}
func (label *Label) UnmarshalJSON(data []byte) error {
type Alias Label
aux := &struct {
Path string
*Alias
}{
Alias: (*Alias)(label),
}
if err := json.Unmarshal(data, &aux); err != nil {
return err
}
label.Path = strings.Split(aux.Path, "/")
return nil
}
func (label Label) MarshalJSON() ([]byte, error) {
type Alias Label
aux := &struct {
Path string
*Alias
}{
Path: strings.Join(label.Path, "/"),
Alias: (*Alias)(&label),
}
return json.Marshal(aux)
}
type CreateLabelReq struct {
Name string
Color string
Type LabelType
ParentID string `json:",omitempty"`
}
type UpdateLabelReq struct {
Name string
Color string
ParentID string `json:",omitempty"`
}
type LabelType int
const (
LabelTypeLabel LabelType = iota + 1
LabelTypeContactGroup
LabelTypeFolder
LabelTypeSystem
)