-
Notifications
You must be signed in to change notification settings - Fork 0
/
requestAction.go
70 lines (61 loc) · 1.54 KB
/
requestAction.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
/*
* Copyright (c) 2021. D-Haven.org
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package fact_totem_client
import (
"bytes"
"encoding/json"
)
type Action int
const (
Append Action = iota
Read
Tail
Scan
)
func (a Action) String() string {
return toString[a]
}
var toString = map[Action]string{
Append: "Append",
Read: "Read",
Tail: "Tail",
Scan: "Scan",
}
var toId = map[string]Action{
"Append": Append,
"Read": Read,
"Tail": Tail,
"Scan": Scan,
}
// MarshalJSON marshals the enum as a quoted json string
func (a Action) MarshalJSON() ([]byte, error) {
buffer := bytes.NewBufferString(`"`)
buffer.WriteString(toString[a])
buffer.WriteString(`"`)
return buffer.Bytes(), nil
}
// UnmarshalJSON unmashals a quoted json string to the enum value
func (a *Action) UnmarshalJSON(b []byte) error {
var j string
err := json.Unmarshal(b, &j)
if err != nil {
return err
}
// Note that if the string cannot be found then it will be set to the zero value, 'Timeout' in this case.
*a = toId[j]
return nil
}