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 void buttonTest_Click(object sender, EventArgs e) { ExceptionHarness(() => { ClearLog(); AppendLog("接続のテスト中...\r\n"); var googleCalendarID = textBoxGoogleCalendarID.Text; var proxyAccout = textBoxProxyAccount.Text; var proxyPassword = textBoxProxyPassword.Text; using (var proxyMgr = new ProxyManager(proxyAccout, proxyPassword)) { proxyMgr.Apply(); var googleCalendarProvider = new GoogleCalendarProvider(googleCalendarID); DateTime start = DateTime.Today; DateTime end = start.AddDays(1); googleCalendarProvider.GetRange(start, end); } AppendLog("正常に接続できました。\r\n"); }); }