From 3f84913b74c6b1ece8b385303c58f6239153a9a7 Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Fri, 6 Apr 2018 09:32:34 +0200 Subject: [PATCH] Fixed the way cancellation is determined (fixes #3) --- src/calanonsync/calanonsync.go | 2 +- src/calanonsync/ews.go | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/calanonsync/calanonsync.go b/src/calanonsync/calanonsync.go index 22ee4fa..6120322 100644 --- a/src/calanonsync/calanonsync.go +++ b/src/calanonsync/calanonsync.go @@ -25,7 +25,7 @@ func main() { for _, item := range items { // Ignore private items. - if item.Sensitivity != "Private" && !item.IsCancelled { + if item.Sensitivity != "Private" && !item.IsCancelled() { // None-private items though ... remember them by hash. // The hash will equal the CalDAV UID (and its filename). relevantEWSItems[item.Hash()] = item diff --git a/src/calanonsync/ews.go b/src/calanonsync/ews.go index 4b0f797..a7c11ad 100644 --- a/src/calanonsync/ews.go +++ b/src/calanonsync/ews.go @@ -29,10 +29,18 @@ type CalendarItem struct { RecurrenceId string Sensitivity string CalendarItemType string - IsCancelled bool + AppointmentState AppointmentState IsAllDayEvent bool } +type AppointmentState int + +const ( + AppointmentStateMeeting AppointmentState = 1 << iota // This appointment is a meeting. + AppointmentStateReceived // This appointment has been received. + AppointmentStateCancelled // This appointment has been canceled. +) + // Build a hash for the given calendar item by combining the UID and // the recurrenceId therefore guaranteeing a unique identifier for the // event, even if it has been a calculated recurrence (which would @@ -44,6 +52,10 @@ func (ci CalendarItem) Hash() string { return strings.ToUpper(hex.EncodeToString(h.Sum(nil))) } +func (ci CalendarItem) IsCancelled() bool { + return ci.AppointmentState&AppointmentStateCancelled != 0 +} + type EWSCalendar struct { httpClient *http.Client url string @@ -262,7 +274,7 @@ var calendarQuery = template.Must(template.New("calendarQuery").Parse(` - +