public static void Initialize(NameSpace mapiNameSpace) { s_mapiNameSpace = mapiNameSpace; const string testerServerEmailAddress = "*****@*****.**"; if (mapiNameSpace == null) { throw new ArgumentNullException("mapiNameSpace"); } _entityMapper = new EventEntityMapper(mapiNameSpace.CurrentUser.Address, new Uri("mailto:" + testerServerEmailAddress), mapiNameSpace.Application.TimeZones.CurrentTimeZone.ID, mapiNameSpace.Application.Version); s_outlookFolderEntryId = ConfigurationManager.AppSettings[string.Format("{0}.OutlookFolderEntryId", Environment.MachineName)]; s_outlookFolderStoreId = ConfigurationManager.AppSettings[string.Format("{0}.OutlookFolderStoreId", Environment.MachineName)]; _outlookRepository = new OutlookEventRepository(mapiNameSpace, s_outlookFolderEntryId, s_outlookFolderStoreId, NullDateTimeRangeProvider.Instance); s_synchronizerFactory = new SynchronizerFactory( @"a:\invalid path", NullTotalProgressFactory.Instance, s_mapiNameSpace, TimeSpan.Zero, TimeSpan.Zero); s_outlookEventRepository = new OutlookEventRepository( s_mapiNameSpace, s_outlookFolderEntryId, s_outlookFolderStoreId, NullDateTimeRangeProvider.Instance); }
public void Initialize() { var applicationDataDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "CalDavSynchronizer"); var optionsDataAccess = new OptionsDataAccess( Path.Combine( applicationDataDirectory, ComponentContainer.GetOrCreateConfigFileName(applicationDataDirectory, "Outlook") )); var options = optionsDataAccess.LoadOptions().Single(o => o.Name == ProfileName); if (ServerAdapterTypeOverride.HasValue) { options.ServerAdapterType = ServerAdapterTypeOverride.Value; } _calDavDataAccess = new CalDavDataAccess( new Uri(options.CalenderUrl), SynchronizerFactory.CreateWebDavClient( options, TimeSpan.FromSeconds(30), new OutlookAccountPasswordProvider("Outlook", "16.0.0.4266"), new GeneralOptionsDataAccess().LoadOptions())); }
public ComponentContainer(Application application) { _uiService = new UiService(); _generalOptionsDataAccess = new GeneralOptionsDataAccess(); var generalOptions = _generalOptionsDataAccess.LoadOptions(); FrameworkElement.LanguageProperty.OverrideMetadata( typeof(FrameworkElement), new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag))); ConfigureServicePointManager(generalOptions); ConfigureLogLevel(generalOptions.EnableDebugLog); _itemChangeWatcher = new OutlookItemChangeWatcher(application.Inspectors); _itemChangeWatcher.ItemSavedOrDeleted += ItemChangeWatcherItemSavedOrDeleted; _session = application.Session; s_logger.Info("Startup..."); EnsureSynchronizationContext(); _applicationDataDirectory = Path.Combine( Environment.GetFolderPath( generalOptions.StoreAppDataInRoamingFolder ? Environment.SpecialFolder.ApplicationData : Environment.SpecialFolder.LocalApplicationData), "CalDavSynchronizer"); _optionsDataAccess = new OptionsDataAccess( Path.Combine( _applicationDataDirectory, GetOrCreateConfigFileName(_applicationDataDirectory, _session.CurrentProfileName) )); var synchronizerFactory = new SynchronizerFactory( GetProfileDataDirectory, new TotalProgressFactory( new ProgressFormFactory(), int.Parse(ConfigurationManager.AppSettings["loadOperationThresholdForProgressDisplay"]), ExceptionHandler.Instance), _session, TimeSpan.Parse(ConfigurationManager.AppSettings["calDavConnectTimeout"])); _synchronizationReportRepository = CreateSynchronizationReportRepository(); _filteringSynchronizationReportRepository = new FilteringSynchronizationReportRepositoryWrapper(_synchronizationReportRepository); UpdateGeneralOptionDependencies(generalOptions); _filteringSynchronizationReportRepository.ReportAdded += _synchronizationReportRepository_ReportAdded; _scheduler = new Scheduler( synchronizerFactory, _filteringSynchronizationReportRepository, EnsureSynchronizationContext); _scheduler.SetOptions(_optionsDataAccess.LoadOptions(), generalOptions.CheckIfOnline); _updateChecker = new UpdateChecker(new AvailableVersionService(), () => _generalOptionsDataAccess.IgnoreUpdatesTilVersion); _updateChecker.NewerVersionFound += UpdateChecker_NewerVersionFound; _updateChecker.IsEnabled = generalOptions.ShouldCheckForNewerVersions; _reportGarbageCollection = new ReportGarbageCollection(_synchronizationReportRepository, TimeSpan.FromDays(generalOptions.MaxReportAgeInDays)); }
public TestComponentContainer() { Application = new Application(); Application.Session.Logon(); _testComWrapperFactoryWrapper = new TestComWrapperFactoryWrapper(new TestComWrapperFactory(null)); ComponentContainer = new ComponentContainer(Application, new InMemoryGeneralOptionsDataAccess(), _testComWrapperFactoryWrapper, new TestExceptionHandlingStrategy()); SynchronizerFactory = ComponentContainer.GetSynchronizerFactory(); }
private IWebDavClient CreateWebDavClient() { return(SynchronizerFactory.CreateWebDavClient( _userNameTextBox.Text, _passwordTextBox.Text, TimeSpan.Parse(ConfigurationManager.AppSettings["calDavConnectTimeout"]), _serverAdapterTypeControl.SelectedServerAdapterType, _dependencies.CloseConnectionAfterEachRequest, _dependencies.ProxyOptions)); }
private IWebDavClient CreateWebDavClient() { return(SynchronizerFactory.CreateWebDavClient( _emailAddressTextBox.Text, null, TimeSpan.Parse(ConfigurationManager.AppSettings["calDavConnectTimeout"]), ServerAdapterType.GoogleOAuth, _dependencies.CloseConnectionAfterEachRequest, _dependencies.ProxyOptions)); }
public static WebClient CreateWebClientWithCredentialsAndProxy(NetworkCredential credentials, ProxyOptions proxyOptions) { var proxy = proxyOptions != null?SynchronizerFactory.CreateProxy(proxyOptions) : null; var client = new WebClient { Credentials = credentials, Proxy = proxy }; return(client); }
public IWebDavClient CreateWebDavClient() { return(SynchronizerFactory.CreateWebDavClient( _serverSettingsViewModel.UserName, _serverSettingsViewModel.UseAccountPassword ? _outlookAccountPasswordProvider.GetPassword(_outlookFolderViewModel.FolderAccountName) : _serverSettingsViewModel.Password, _serverSettingsViewModel.CalenderUrl, TimeSpan.Parse(ConfigurationManager.AppSettings["calDavConnectTimeout"]), _serverSettingsViewModel.ServerAdapterType, _networkSettingsViewModel.CloseConnectionAfterEachRequest, _networkSettingsViewModel.PreemptiveAuthentication, _networkSettingsViewModel.ForceBasicAuthentication, _networkSettingsViewModel.CreateProxyOptions())); }
public void SetUp() { _synchronizerFactory = new SynchronizerFactory( g => @"A:\data", NullTotalProgressFactory.Instance, new OutlookSessionStub(), new NullDaslFilterProvider(), NullOutlookAccountPasswordProvider.Instance, new GlobalTimeZoneCache(), new NullQueryOutlookFolderStrategy(), new ExceptionHandlingStrategy(), new ComWrapperFactory()); }
public IWebDavClient CreateWebDavClient() { return(SynchronizerFactory.CreateWebDavClient( _emailAddressTextBox.Text, null, _calenderUrlTextBox.Text, TimeSpan.Parse(ConfigurationManager.AppSettings["calDavConnectTimeout"]), ServerAdapterType.WebDavHttpClientBasedWithGoogleOAuth, _networkAndProxyOptions.CloseConnectionAfterEachRequest, _networkAndProxyOptions.PreemptiveAuthentication, _networkAndProxyOptions.ForceBasicAuthentication, _networkAndProxyOptions.ProxyOptions)); }
private IWebDavClient CreateWebDavClient(NetworkSettingsViewModel networkSettings, GeneralOptions generalOptions) { return(SynchronizerFactory.CreateWebDavClient( EmailAddress, SecureStringUtility.ToSecureString(string.Empty), CalenderUrl, TimeSpan.Parse(ConfigurationManager.AppSettings["calDavConnectTimeout"]), ServerAdapterType.WebDavHttpClientBasedWithGoogleOAuth, networkSettings.CloseConnectionAfterEachRequest, networkSettings.PreemptiveAuthentication, networkSettings.ForceBasicAuthentication, networkSettings.CreateProxyOptions(), generalOptions.AcceptInvalidCharsInServerResponse)); }
public IWebDavClient CreateWebDavClient(Uri url) { return(SynchronizerFactory.CreateWebDavClient( _serverSettingsViewModel.UserName, _serverSettingsViewModel.UseAccountPassword ? _outlookAccountPasswordProvider.GetPassword(_outlookFolderViewModel.FolderAccountName) : _serverSettingsViewModel.Password, url.ToString(), TimeSpan.Parse(ConfigurationManager.AppSettings["calDavConnectTimeout"]), _serverSettingsViewModel.ServerAdapterType, _networkSettingsViewModel.CloseConnectionAfterEachRequest, _networkSettingsViewModel.PreemptiveAuthentication, _networkSettingsViewModel.ForceBasicAuthentication, _networkSettingsViewModel.CreateProxyOptions(), _generalOptions.AcceptInvalidCharsInServerResponse)); }
private IWebDavClient CreateWebDavClient(NetworkSettingsViewModel networkSettings, GeneralOptions generalOptions) { return(SynchronizerFactory.CreateWebDavClient( UserName, Password, CalenderUrl, TimeSpan.Parse(ConfigurationManager.AppSettings["calDavConnectTimeout"]), ServerAdapterType.WebDavHttpClientBased, networkSettings.CloseConnectionAfterEachRequest, networkSettings.PreemptiveAuthentication, networkSettings.ForceBasicAuthentication, networkSettings.CreateProxyOptions(), generalOptions.AcceptInvalidCharsInServerResponse)); }
private IWebDavClient CreateWebDavClient(NetworkSettingsViewModel networkSettings, GeneralOptions generalOptions, string davUrl) { return(SynchronizerFactory.CreateWebDavClient( UserName, UseAccountPassword ? _outlookAccountPasswordProvider.GetPassword(null) : Password, davUrl, generalOptions.CalDavConnectTimeout, ServerAdapterType.WebDavHttpClientBased, networkSettings.CloseConnectionAfterEachRequest, networkSettings.PreemptiveAuthentication, networkSettings.ForceBasicAuthentication, networkSettings.CreateProxyOptions(), generalOptions.AcceptInvalidCharsInServerResponse)); }
public IWebDavClient CreateWebDavClient() { return(SynchronizerFactory.CreateWebDavClient( _userNameTextBox.Text, _useAccountPasswordCheckBox.Checked ? _outlookAccountPasswordProvider.GetPassword(_dependencies.FolderAccountName) : SecureStringUtility.ToSecureString(_passwordTextBox.Text), _calenderUrlTextBox.Text, TimeSpan.Parse(ConfigurationManager.AppSettings["calDavConnectTimeout"]), ServerAdapterType.WebDavHttpClientBased, _networkAndProxyOptions.CloseConnectionAfterEachRequest, _networkAndProxyOptions.PreemptiveAuthentication, _networkAndProxyOptions.ForceBasicAuthentication, _networkAndProxyOptions.ProxyOptions)); }
public IWebDavClient CreateWebDavClient(Uri url = null) { return(SynchronizerFactory.CreateWebDavClient( UserName, UseAccountPassword ? _outlookAccountPasswordProvider.GetPassword(FolderAccountName) : Password, url != null ? url.ToString() : CalenderUrl, _generalOptions.CalDavConnectTimeout, ServerAdapterType, CloseConnectionAfterEachRequest, PreemptiveAuthentication, ForceBasicAuthentication, CreateProxyOptions(), _generalOptions.EnableClientCertificate, _generalOptions.AcceptInvalidCharsInServerResponse)); }
public static async Task <bool> IsOnline(ProxyOptions proxyOptionsOrNull) { if (System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable()) { // Use NCSI to detect network status according to https://technet.microsoft.com/en-us/library/ee126135(v=WS.10).aspx // try DNS first try { IPHostEntry hostEntry = await Dns.GetHostEntryAsync("dns.msftncsi.com"); IPAddress ipAddress = Array.Find(hostEntry.AddressList, ip => ip.AddressFamily == AddressFamily.InterNetwork); if (ipAddress != null && ipAddress.ToString() == "131.107.255.255") { return(true); } } catch (Exception) { } // if DNS failed, try to download the ncsi.txt try { string txt; using (var client = new WebClient()) { IWebProxy proxy = (proxyOptionsOrNull != null) ? SynchronizerFactory.CreateProxy(proxyOptionsOrNull) : null; client.Proxy = proxy; txt = await client.DownloadStringTaskAsync(new Uri("http://www.msftncsi.com/ncsi.txt")); } if (txt != "Microsoft NCSI") { return(false); } return(true); } catch (Exception) { return(false); } } else { return(false); } }
public static void Initialize(NameSpace mapiNameSpace) { s_mapiNameSpace = mapiNameSpace; const string testerServerEmailAddress = "*****@*****.**"; if (mapiNameSpace == null) { throw new ArgumentNullException("mapiNameSpace"); } var globalTimeZoneCache = new GlobalTimeZoneCache(); var eventMappingConfiguration = new EventMappingConfiguration(); s_entityMapper = new EventEntityMapper( mapiNameSpace.CurrentUser.Address, new Uri("mailto:" + testerServerEmailAddress), mapiNameSpace.Application.TimeZones.CurrentTimeZone.ID, mapiNameSpace.Application.Version, new TimeZoneCache(null, false, globalTimeZoneCache), eventMappingConfiguration, null); s_outlookFolderEntryId = ConfigurationManager.AppSettings[string.Format("{0}.OutlookFolderEntryId", Environment.MachineName)]; s_outlookFolderStoreId = ConfigurationManager.AppSettings[string.Format("{0}.OutlookFolderStoreId", Environment.MachineName)]; var daslFilterProvider = new DaslFilterProvider(false); s_synchronizerFactory = new SynchronizerFactory( _ => @"a:\invalid path", NullTotalProgressFactory.Instance, s_mapiNameSpace, daslFilterProvider, new OutlookAccountPasswordProvider(mapiNameSpace.CurrentProfileName, mapiNameSpace.Application.Version), globalTimeZoneCache, QueryOutlookFolderByRequestingItemStrategy.Instance); s_outlookEventRepository = new OutlookEventRepository( s_mapiNameSpace, s_outlookFolderEntryId, s_outlookFolderStoreId, NullDateTimeRangeProvider.Instance, eventMappingConfiguration, daslFilterProvider, QueryOutlookFolderByRequestingItemStrategy.Instance); }
public void SetUp() { var profileTypeRegistry = MockRepository.GenerateStub <IProfileTypeRegistry>(); profileTypeRegistry.Stub(_ => _.DetermineType(null)).IgnoreArguments().Return(new GenericProfile()); _synchronizerFactory = new SynchronizerFactory( g => @"A:\data", NullTotalProgressFactory.Instance, new OutlookSessionStub(), new NullDaslFilterProvider(), NullOutlookAccountPasswordProvider.Instance, new GlobalTimeZoneCache(), new NullQueryOutlookFolderStrategy(), new ExceptionHandlingStrategy(), new ComWrapperFactory(), MockRepository.GenerateStub <IOptionsDataAccess>(), profileTypeRegistry); }
public ComponentContainer(NameSpace session) { try { XmlConfigurator.Configure(); _session = session; s_logger.Info("Startup..."); EnsureSynchronizationContext(); var applicationDataDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "CalDavSynchronizer"); _optionsDataAccess = new OptionsDataAccess( Path.Combine( applicationDataDirectory, GetOrCreateConfigFileName(applicationDataDirectory, _session.CurrentProfileName) )); var synchronizerFactory = new SynchronizerFactory( applicationDataDirectory, new TotalProgressFactory( new ProgressFormFactory(), int.Parse(ConfigurationManager.AppSettings["loadOperationThresholdForProgressDisplay"]), ExceptionHandler.Instance), _session, TimeSpan.Parse(ConfigurationManager.AppSettings["calDavConnectTimeout"]), TimeSpan.Parse(ConfigurationManager.AppSettings["calDavReadWriteTimeout"])); _scheduler = new Scheduler(synchronizerFactory, EnsureSynchronizationContext); _scheduler.SetOptions(_optionsDataAccess.LoadOptions()); _updateChecker = new UpdateChecker(new AvailableVersionService()); _updateChecker.NewerVersionFound += UpdateChecker_NewerVersionFound; _updateChecker.IsEnabled = _optionsDataAccess.ShouldCheckForNewerVersions; } catch (Exception x) { ExceptionHandler.Instance.LogException(x, s_logger); throw; } s_logger.Info("Startup finnished"); }
public void Initialize() { var applicationDataDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "CalDavSynchronizer"); var optionsDataAccess = new OptionsDataAccess( Path.Combine( applicationDataDirectory, ComponentContainer.GetOrCreateConfigFileName(applicationDataDirectory, "Outlook") )); var options = optionsDataAccess.LoadOptions().Single(o => o.Name == ProfileName); _calDavDataAccess = SynchronizerFactory.CreateCalDavDataAccess( options.CalenderUrl, options.UserName, options.Password, TimeSpan.FromSeconds(30), options.ServerAdapterType); }
private void InitializeSynchronizer() { try { XmlConfigurator.Configure(); Session = Application.Session; s_logger.Info("Startup..."); EnsureSynchronizationContext(); var applicationDataDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "CalDavSynchronizer"); OptionsDataAccess = new OptionsDataAccess( Path.Combine( applicationDataDirectory, GetOrCreateConfigFileName(applicationDataDirectory, Session.CurrentProfileName) )); var synchronizerFactory = new SynchronizerFactory( applicationDataDirectory, new TotalProgressFactory( new Ui.ProgressFormFactory(), int.Parse(ConfigurationManager.AppSettings["loadOperationThresholdForProgressDisplay"]), ExceptionHandler.Instance), Application.Session); Scheduler = new Scheduler(synchronizerFactory); Scheduler.SetOptions(OptionsDataAccess.LoadOptions()); } catch (Exception x) { ExceptionHandler.Instance.LogException(x, s_logger); throw; } s_logger.Info("Startup finnished"); }
public IWebProxy GetProxyIfConfigured() { return(_networkAndProxyOptions.ProxyOptions != null?SynchronizerFactory.CreateProxy(_networkAndProxyOptions.ProxyOptions) : null); }
public ComponentContainer(Application application, IGeneralOptionsDataAccess generalOptionsDataAccess, IComWrapperFactory comWrapperFactory, IExceptionHandlingStrategy exceptionHandlingStrategy) { if (application == null) { throw new ArgumentNullException(nameof(application)); } if (generalOptionsDataAccess == null) { throw new ArgumentNullException(nameof(generalOptionsDataAccess)); } if (comWrapperFactory == null) { throw new ArgumentNullException(nameof(comWrapperFactory)); } s_logger.Info("Startup..."); s_logger.Info($"Version: {Assembly.GetExecutingAssembly().GetName().Version}"); s_logger.Info($"Operating system: {Environment.OSVersion}"); _profileTypeRegistry = ProfileTypeRegistry.Instance; if (GeneralOptionsDataAccess.WpfRenderModeSoftwareOnly) { RenderOptions.ProcessRenderMode = System.Windows.Interop.RenderMode.SoftwareOnly; } _generalOptionsDataAccess = generalOptionsDataAccess; _synchronizationStatus = new SynchronizationStatus(); var generalOptions = _generalOptionsDataAccess.LoadOptions(); _daslFilterProvider = new DaslFilterProvider(generalOptions.IncludeCustomMessageClasses); SetWpfLocale(generalOptions.CultureName); ConfigureServicePointManager(generalOptions); ConfigureLogLevel(generalOptions.EnableDebugLog); _session = application.Session; _outlookAccountPasswordProvider = string.IsNullOrEmpty(_session.CurrentProfileName) ? NullOutlookAccountPasswordProvider.Instance : new OutlookAccountPasswordProvider(_session.CurrentProfileName, application.Version); _globalTimeZoneCache = new GlobalTimeZoneCache(); var applicationDataDirectoryBase = Path.Combine( Environment.GetFolderPath( generalOptions.StoreAppDataInRoamingFolder ? Environment.SpecialFolder.ApplicationData : Environment.SpecialFolder.LocalApplicationData), "CalDavSynchronizer"); string optionsFilePath; (_applicationDataDirectory, optionsFilePath) = GetOrCreateDataDirectory(applicationDataDirectoryBase, _session.CurrentProfileName); _optionsDataAccess = new OptionsDataAccess(optionsFilePath); _uiService = new UiService(); var options = _optionsDataAccess.Load(); _permanentStatusesViewModel = new PermanentStatusesViewModel(_uiService, this, options); _permanentStatusesViewModel.OptionsRequesting += PermanentStatusesViewModel_OptionsRequesting; _queryFolderStrategyWrapper = new OutlookFolderStrategyWrapper(QueryOutlookFolderByRequestingItemStrategy.Instance); _totalProgressFactory = new TotalProgressFactory( _uiService, generalOptions.ShowProgressBar, generalOptions.ThresholdForProgressDisplay, ExceptionHandler.Instance); _outlookSession = new OutlookSession(_session); _synchronizerFactory = new SynchronizerFactory( GetProfileDataDirectory, _totalProgressFactory, _outlookSession, _daslFilterProvider, _outlookAccountPasswordProvider, _globalTimeZoneCache, _queryFolderStrategyWrapper, exceptionHandlingStrategy, comWrapperFactory, _optionsDataAccess, _profileTypeRegistry); _synchronizationReportRepository = CreateSynchronizationReportRepository(); UpdateGeneralOptionDependencies(generalOptions); _scheduler = new Scheduler( _synchronizerFactory, this, EnsureSynchronizationContext, new FolderChangeWatcherFactory( _session), _synchronizationStatus); EnsureCacheCompatibility(options); _availableVersionService = new AvailableVersionService(); _updateChecker = new UpdateChecker(_availableVersionService, () => _generalOptionsDataAccess.IgnoreUpdatesTilVersion); _updateChecker.NewerVersionFound += UpdateChecker_NewerVersionFound; _updateChecker.IsEnabled = generalOptions.ShouldCheckForNewerVersions; _reportGarbageCollection = new ReportGarbageCollection(_synchronizationReportRepository, TimeSpan.FromDays(generalOptions.MaxReportAgeInDays)); _trayNotifier = generalOptions.EnableTrayIcon ? new TrayNotifier(this) : NullTrayNotifer.Instance; try { using (var syncObjects = GenericComObjectWrapper.Create(_session.SyncObjects)) { if (syncObjects.Inner != null && syncObjects.Inner.Count > 0) { _syncObject = syncObjects.Inner[1]; if (generalOptions.TriggerSyncAfterSendReceive) { _syncObject.SyncEnd += SyncObject_SyncEnd; } } } } catch (COMException ex) { s_logger.Error("Can't access SyncObjects", ex); } _oneTimeTaskRunner = new OneTimeTaskRunner(_outlookSession); DDayICalWorkaround.DDayICalCustomization.InitializeNoThrow(); }
public IWebProxy GetProxyIfConfigured() { return(SynchronizerFactory.CreateProxy(CreateProxyOptions())); }
public ComponentContainer(Application application) { s_logger.Info("Startup..."); _generalOptionsDataAccess = new GeneralOptionsDataAccess(); _synchronizationStatus = new SynchronizationStatus(); var generalOptions = _generalOptionsDataAccess.LoadOptions(); _daslFilterProvider = new DaslFilterProvider(generalOptions.IncludeCustomMessageClasses); FrameworkElement.LanguageProperty.OverrideMetadata( typeof(FrameworkElement), new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag))); ConfigureServicePointManager(generalOptions); ConfigureLogLevel(generalOptions.EnableDebugLog); _session = application.Session; _outlookAccountPasswordProvider = string.IsNullOrEmpty(_session.CurrentProfileName) ? NullOutlookAccountPasswordProvider.Instance : new OutlookAccountPasswordProvider(_session.CurrentProfileName, application.Version); _globalTimeZoneCache = new GlobalTimeZoneCache(); EnsureSynchronizationContext(); _applicationDataDirectory = Path.Combine( Environment.GetFolderPath( generalOptions.StoreAppDataInRoamingFolder ? Environment.SpecialFolder.ApplicationData : Environment.SpecialFolder.LocalApplicationData), "CalDavSynchronizer"); _optionsDataAccess = new OptionsDataAccess( Path.Combine( _applicationDataDirectory, GetOrCreateConfigFileName(_applicationDataDirectory, _session.CurrentProfileName) )); _synchronizerFactory = new SynchronizerFactory( GetProfileDataDirectory, new TotalProgressFactory( new ProgressFormFactory(), int.Parse(ConfigurationManager.AppSettings["loadOperationThresholdForProgressDisplay"]), ExceptionHandler.Instance), _session, _daslFilterProvider, _outlookAccountPasswordProvider, _globalTimeZoneCache); _synchronizationReportRepository = CreateSynchronizationReportRepository(); UpdateGeneralOptionDependencies(generalOptions); _scheduler = new Scheduler( _synchronizerFactory, this, EnsureSynchronizationContext, new FolderChangeWatcherFactory( _session), _synchronizationStatus); var options = _optionsDataAccess.LoadOptions(); EnsureCacheCompatibility(options); _profileStatusesViewModel = new ProfileStatusesViewModel(this); _profileStatusesViewModel.EnsureProfilesDisplayed(options); _availableVersionService = new AvailableVersionService(); _updateChecker = new UpdateChecker(_availableVersionService, () => _generalOptionsDataAccess.IgnoreUpdatesTilVersion); _updateChecker.NewerVersionFound += UpdateChecker_NewerVersionFound; _updateChecker.IsEnabled = generalOptions.ShouldCheckForNewerVersions; _reportGarbageCollection = new ReportGarbageCollection(_synchronizationReportRepository, TimeSpan.FromDays(generalOptions.MaxReportAgeInDays)); _trayNotifier = generalOptions.EnableTrayIcon ? new TrayNotifier(this) : NullTrayNotifer.Instance; _uiService = new UiService(_profileStatusesViewModel); using (var syncObjects = GenericComObjectWrapper.Create(_session.SyncObjects)) { if (syncObjects.Inner != null && syncObjects.Inner.Count > 0) { _syncObject = syncObjects.Inner[1]; if (generalOptions.TriggerSyncAfterSendReceive) { _syncObject.SyncEnd += _sync_SyncEnd; } } } }
public async Task <ServerResources> GetServerResources() { var trimmedUrl = CalenderUrl.Trim(); var url = new Uri(trimmedUrl.EndsWith("/") ? trimmedUrl : trimmedUrl + "/"); var webDavClient = _prototypeModel.CreateWebDavClient(); var calDavDataAccess = new CalDavDataAccess(url, webDavClient); var foundResources = await calDavDataAccess.GetUserResourcesIncludingCalendarProxies(false); var cardDavDataAccess = new CardDavDataAccess(url, webDavClient, string.Empty, contentType => true); var foundAddressBooks = await cardDavDataAccess.GetUserAddressBooksNoThrow(true); var service = await GoogleHttpClientFactory.LoginToGoogleTasksService(EmailAddress, SynchronizerFactory.CreateProxy(_prototypeModel.CreateProxyOptions())); var taskLists = await service.Tasklists.List().ExecuteAsync(); var taskListsData = taskLists?.Items.Select(i => new TaskListData(i.Id, i.Title, AccessPrivileges.All)).ToArray() ?? new TaskListData[] { }; return(new ServerResources(foundResources.CalendarResources, foundAddressBooks, taskListsData)); }
public async Task <ServerResources> GetServerResources(NetworkSettingsViewModel networkSettings, GeneralOptions generalOptions) { var trimmedUrl = CalenderUrl.Trim(); var url = new Uri(trimmedUrl.EndsWith("/") ? trimmedUrl : trimmedUrl + "/"); var webDavClient = CreateWebDavClient(networkSettings, generalOptions); var calDavDataAccess = new CalDavDataAccess(url, webDavClient); var foundResources = await calDavDataAccess.GetUserResourcesNoThrow(false); var foundAddressBooks = new[] { new AddressBookData(new Uri("googleApi://defaultAddressBook"), "Default AddressBook") }; var service = await GoogleHttpClientFactory.LoginToGoogleTasksService(EmailAddress, SynchronizerFactory.CreateProxy(networkSettings.CreateProxyOptions())); var taskLists = await service.Tasklists.List().ExecuteAsync(); var taskListsData = taskLists?.Items.Select(i => new TaskListData(i.Id, i.Title)).ToArray() ?? new TaskListData[] { }; return(new ServerResources(foundResources.CalendarResources, foundAddressBooks, taskListsData)); }
private async Task TestServerConnection() { const string connectionTestCaption = "Test settings"; try { StringBuilder errorMessageBuilder = new StringBuilder(); if (!ValidateCalendarUrl(errorMessageBuilder)) { MessageBox.Show(errorMessageBuilder.ToString(), "The calendar Url is invalid", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } var calDavDataAccess = SynchronizerFactory.CreateCalDavDataAccess( _calenderUrlTextBox.Text, _userNameTextBox.Text, _passwordTextBox.Text, TimeSpan.Parse(ConfigurationManager.AppSettings["calDavConnectTimeout"]), SelectedServerAdapterType); var cardDavDataAccess = SynchronizerFactory.CreateCardDavDataAccess( _calenderUrlTextBox.Text, _userNameTextBox.Text, _passwordTextBox.Text, TimeSpan.Parse(ConfigurationManager.AppSettings["calDavConnectTimeout"]), SelectedServerAdapterType); var isCalendar = await calDavDataAccess.IsResourceCalender(); var isAddressBook = await cardDavDataAccess.IsResourceAddressBook(); if (!isCalendar && !isAddressBook) { MessageBox.Show("The specified Url is neither a calendar nor an addressbook!", connectionTestCaption); return; } if (isCalendar && isAddressBook) { MessageBox.Show("Ressources which are a calendar and a addressbook are not valid!", connectionTestCaption); return; } bool hasError = false; errorMessageBuilder.Clear(); if (isCalendar) { hasError = await TestCalendar(calDavDataAccess, errorMessageBuilder); } if (isAddressBook) { hasError = await TestAddressBook(cardDavDataAccess, errorMessageBuilder); } if (hasError) { MessageBox.Show("Connection test NOT successful:" + Environment.NewLine + errorMessageBuilder.ToString(), connectionTestCaption); } else { MessageBox.Show("Connection test successful.", connectionTestCaption); } } catch (Exception x) { MessageBox.Show(x.Message, connectionTestCaption); } }
public IWebProxy GetProxyIfConfigured() { return(SynchronizerFactory.CreateProxy(_networkSettingsViewModel.CreateProxyOptions())); }