Пример #1
0
        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);
                    }
                }
        }
Пример #2
0
 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");
     });
 }