示例#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 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);
                    }
                }
        }