private static void SyncCalendar() { using (Stream output = Console.OpenStandardOutput()) using (Stream input = Console.OpenStandardInput()) { var config = Config.Load(); using (var proxyManager = new ProxyManager(config.ProxyAccount, config.ProxyPassword)) { proxyManager.Apply(); var outlookClient = new GOCalendarSyncCommon.Client(output, input); // Clientのクラス名前が有りがちなのでフルで指定 var outlookCalendarProvider = new OutlookCalendarProvider(outlookClient); var googleCalendarProvider = new GoogleCalendarProvider(config.GoogleCalendarID); var syncTime = DateTime.Now; var start = DateTime.Today; var end = start.AddYears(Constants.SYNC_YEAR_RANGE); var outlookCalendarItems = outlookCalendarProvider.GetRange(start, end); var googleCalendarItems = googleCalendarProvider.GetRange(start, end); var synchronizer = new CalendarItemSynchronizer(googleCalendarItems, outlookCalendarItems); synchronizer.Synchronize(); // 先にGoogleカレンダーを更新する // もし先にOutlookカレンダーを更新すると、Outlookで削除された項目がGoogleに追加するより前に削除されたと誤認してしまう。 // OutlookカレンダーをGoogleカレンダーより1秒後に更新することで、Outlookで項目が削除されときにGoogleへの追加より後だと認識できるようにする。 googleCalendarProvider.Apply(googleCalendarItems); System.Threading.Thread.Sleep(1000); var lastModified = DateTime.Now; outlookCalendarProvider.Apply(outlookCalendarItems, lastModified); } } }
private static void SyncCalendar() { using (Stream output = Console.OpenStandardOutput()) using (Stream input = Console.OpenStandardInput()) { var config = Configuration.Load(); using (var proxyManager = new ProxyManager(config.ProxyAccount, config.ProxyPassword)) { proxyManager.Apply(); var outlookClient = new GOCalendarSyncCommon.Client(output, input); // Clientのクラス名前が有りがちなのでフルで指定 var lastModified = DateTime.Now; var outlookCalendarProvider = new OutlookCalendarProvider(outlookClient); var googleCalendarProvider = new GoogleCalendarProvider(config.GoogleCalendarID); var syncTime = DateTime.Now; var start = DateTime.Today; var end = start.AddYears(SYNC_YEAR_RANGE); var outlookCalendarItems = outlookCalendarProvider.GetRange(start, end); var googleCalendarItems = googleCalendarProvider.GetRange(start, end); var synchronizer = new CalendarItemSynchronizer(googleCalendarItems, outlookCalendarItems); synchronizer.Synchronize(); outlookCalendarProvider.Apply(outlookCalendarItems, lastModified); googleCalendarProvider.Apply(googleCalendarItems); } } }