in messaging/messaging.go [247:311]
func (a *AndroidNotification) UnmarshalJSON(b []byte) error {
type androidInternal AndroidNotification
temp := struct {
EventTimestamp string `json:"event_time,omitempty"`
Priority string `json:"notification_priority,omitempty"`
Visibility string `json:"visibility,omitempty"`
VibrateTimings []string `json:"vibrate_timings,omitempty"`
*androidInternal
}{
androidInternal: (*androidInternal)(a),
}
if err := json.Unmarshal(b, &temp); err != nil {
return err
}
if temp.Priority != "" {
priorities := map[string]AndroidNotificationPriority{
"PRIORITY_MIN": PriorityMin,
"PRIORITY_LOW": PriorityLow,
"PRIORITY_DEFAULT": PriorityDefault,
"PRIORITY_HIGH": PriorityHigh,
"PRIORITY_MAX": PriorityMax,
}
if prio, ok := priorities[temp.Priority]; ok {
a.Priority = prio
} else {
return fmt.Errorf("unknown priority value: %q", temp.Priority)
}
}
if temp.Visibility != "" {
visibilities := map[string]AndroidNotificationVisibility{
"PRIVATE": VisibilityPrivate,
"PUBLIC": VisibilityPublic,
"SECRET": VisibilitySecret,
}
if vis, ok := visibilities[temp.Visibility]; ok {
a.Visibility = vis
} else {
return fmt.Errorf("unknown visibility value: %q", temp.Visibility)
}
}
if temp.EventTimestamp != "" {
ts, err := time.Parse(rfc3339Zulu, temp.EventTimestamp)
if err != nil {
return err
}
a.EventTimestamp = &ts
}
var vibTimings []int64
for _, t := range temp.VibrateTimings {
vibTime, err := stringToDuration(t)
if err != nil {
return err
}
millis := int64(vibTime / time.Millisecond)
vibTimings = append(vibTimings, millis)
}
a.VibrateTimingMillis = vibTimings
return nil
}