/
data.go
57 lines (46 loc) · 1.04 KB
/
data.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
package config
import (
"encoding/json"
"go.uber.org/zap/zapcore"
"github.com/yagihash/fsw-calendar/fetcher/class"
"github.com/yagihash/fsw-calendar/fetcher/course"
)
type Data struct {
CalendarID string `json:"calendar_id"`
Course course.Course `json:"course"`
Class class.Class `json:"class""`
}
func (d *Data) UnmarshalJSON(b []byte) error {
var tmp map[string]string
if err := json.Unmarshal(b, &tmp); err != nil {
return err
}
switch tmp["course"] {
case "rc":
d.Course = course.RC
case "ss":
d.Course = course.SS
default:
d.Course = course.Unknown
}
switch tmp["class"] {
case "ss-4":
d.Class = class.SS4
case "t-4":
d.Class = class.T4
case "ns-4":
d.Class = class.NS4
case "s-4":
d.Class = class.S4
default:
d.Class = class.Unknown
}
d.CalendarID = tmp["calendar_id"]
return nil
}
func (d *Data) MarshalLogObject(e zapcore.ObjectEncoder) error {
e.AddString("calendar_id", d.CalendarID)
e.AddString("course", d.Course.String())
e.AddString("class", d.Class.String())
return nil
}