diff --git a/helpers.go b/helpers.go index c919999..f7e0d7c 100644 --- a/helpers.go +++ b/helpers.go @@ -184,15 +184,15 @@ type NaiveTime struct { Minutes uint } -func (nt NaiveTime) Sub(other NaiveTime) time.Duration { +func (nt *NaiveTime) Sub(other *NaiveTime) time.Duration { return time.Hour*time.Duration(nt.Hours-other.Hours) + time.Minute*time.Duration(nt.Minutes-other.Minutes) } -func ParseNaiveTime(integer uint64) NaiveTime { +func ParseNaiveTime(integer uint64) *NaiveTime { minutes := uint(integer % 100) hours := uint(integer / 100) - return NaiveTime{Hours: hours, Minutes: minutes} + return &NaiveTime{Hours: hours, Minutes: minutes} } func (nt NaiveTime) String() string { diff --git a/types.go b/types.go index fc1f960..a024f39 100644 --- a/types.go +++ b/types.go @@ -92,10 +92,15 @@ func (m *MeetingTimeResponse) EndDay() time.Time { // StartTime returns the start time of the meeting time as a NaiveTime object // This is not cached and is parsed on each invocation. It may also panic without handling. -func (m *MeetingTimeResponse) StartTime() NaiveTime { - value, err := strconv.ParseUint(m.MeetingTime.BeginTime, 10, 32) +func (m *MeetingTimeResponse) StartTime() *NaiveTime { + raw := m.MeetingTime.BeginTime + if raw == "" { + return nil + } + + value, err := strconv.ParseUint(raw, 10, 32) if err != nil { - log.Fatal().Err(err).Str("raw", m.MeetingTime.BeginTime).Msg("Cannot parse start time integer") + log.Fatal().Err(err).Str("raw", raw).Msg("Cannot parse start time integer") } return ParseNaiveTime(value) @@ -103,10 +108,15 @@ func (m *MeetingTimeResponse) StartTime() NaiveTime { // EndTime returns the end time of the meeting time as a NaiveTime object // This is not cached and is parsed on each invocation. It may also panic without handling. -func (m *MeetingTimeResponse) EndTime() NaiveTime { - value, err := strconv.ParseUint(m.MeetingTime.EndTime, 10, 32) +func (m *MeetingTimeResponse) EndTime() *NaiveTime { + raw := m.MeetingTime.EndTime + if raw == "" { + return nil + } + + value, err := strconv.ParseUint(raw, 10, 32) if err != nil { - log.Fatal().Err(err).Str("raw", m.MeetingTime.EndTime).Msg("Cannot parse end time integer") + log.Fatal().Err(err).Str("raw", raw).Msg("Cannot parse end time integer") } return ParseNaiveTime(value)