private void Test_Conn()
 {
     if (!ConnectionTester.TestConnection())
     {
         var a = NavigationService.GetNavigationService(this);
         a.Navigate((Uri)(new Uri("Pages/waitConnection.xaml", UriKind.Relative)));
     }
 }
Exemple #2
0
        private void Start()
        {
            // Initialize the communication channel with the host
            ApplicationBridge.Initialize();

            Panel rootPanel = new Grid();

            RootVisual = rootPanel;

            // Test the connection speed and launch the webviewer once it's completed
            ConnectionTester.TestConnection(new Action(StartWebViewer));
        }
        //Server=KRK; Initial Catalog=NorthWind;User Id=sa; Password=123123;
        #region [ Test method ]

        private void Test(object sender, EventArgs e)
        {
            if (cmbxConnectionType.SelectedIndex == -1)
            {
                MessageBox.Show("Please, Choose a connectionType.");
                return;
            }

            if (true == string.IsNullOrWhiteSpace(txtConnStr.Text))
            {
                MessageBox.Show(
                    "Connection string can not be empty.",
                    "Warning!..");
                return;
            }

            ConnectionTypes connType = (ConnectionTypes)cmbxConnectionType.Items[cmbxConnectionType.SelectedIndex];

            ConnectionTester.TestConnection(connType, txtConnStr.Text);
            MessageBox.Show(string.Format("{0}", Error), "Result");
        }
Exemple #4
0
 private void Page_Loaded(object sender, RoutedEventArgs e)
 {
     WaitConn = new Thread(new ThreadStart(delegate()
     {
         while (true)
         {
             if (ConnectionTester.TestConnection())
             {
                 Application.Current.Dispatcher.Invoke((Action) delegate()
                 {
                     var a = NavigationService.GetNavigationService(this);
                     a.Navigate((Uri)(new Uri("Pages/main.xaml", UriKind.Relative)));
                 });
                 WaitConn.Abort();
             }
             Thread.Sleep(1000);
         }
     }));
     WaitConn.IsBackground = true;
     WaitConn.Name         = "Ожидание соединения";
     WaitConn.Start();
 }
Exemple #5
0
        public async Task <string> TestGoogleConnection(OptionsModel options, string url)
        {
            if (options.SelectedFolderOrNull == null)
            {
                MessageBox.Show(Strings.Get($"Please select an Outlook folder to specify the item type for this profile"), ConnectionTestCaption);
                return(url);
            }

            var outlookFolderType = options.SelectedFolderOrNull.DefaultItemType;

            StringBuilder errorMessageBuilder = new StringBuilder();

            if (!ValidateEmailAddress(errorMessageBuilder, options.EmailAddress, false))
            {
                MessageBox.Show(errorMessageBuilder.ToString(), Strings.Get($"The Email address is invalid"), MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(url);
            }

            if (outlookFolderType == OlItemType.olTaskItem)
            {
                return(await TestGoogleTaskConnection(options, errorMessageBuilder, outlookFolderType, url));
            }

            if (outlookFolderType == OlItemType.olContactItem && options.UseGoogleNativeApi)
            {
                return(await TestGoogleContactsConnection(options, outlookFolderType, url));
            }

            if (!ValidateWebDavUrl(url, errorMessageBuilder, false))
            {
                MessageBox.Show(errorMessageBuilder.ToString(), Strings.Get($"The CalDav/CardDav URL is invalid"), MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(url);
            }

            var enteredUri   = new Uri(url);
            var webDavClient = options.CreateWebDavClient(enteredUri);

            Uri autoDiscoveredUrl;

            if (ConnectionTester.RequiresAutoDiscovery(enteredUri))
            {
                var autoDiscoveryResult = await DoAutoDiscovery(enteredUri, webDavClient, false, true, outlookFolderType);

                switch (autoDiscoveryResult.Status)
                {
                case AutoDiscoverResultStatus.UserCancelled:
                    return(url);

                case AutoDiscoverResultStatus.ResourceSelected:
                    autoDiscoveredUrl = autoDiscoveryResult.RessourceUrl;
                    break;

                default:
                    autoDiscoveredUrl = null;
                    break;
                }
            }
            else
            {
                autoDiscoveredUrl = null;
            }


            var finalUrl = autoDiscoveredUrl?.ToString() ?? url;

            var result = await ConnectionTester.TestConnection(new Uri(finalUrl), webDavClient);

            if (result.ResourceType != ResourceType.None)
            {
                FixSynchronizationMode(options, result);
                FixWebDavCollectionSync(options, result);
            }

            if (outlookFolderType == OlItemType.olContactItem)
            {
                // Google Addressbook doesn't have any properties. As long as there doesn't occur an exception, the test is successful.
                MessageBox.Show(Strings.Get($"Connection test successful."), ConnectionTestCaption);
            }
            else
            {
                DisplayTestReport(
                    result,
                    options.SynchronizationMode,
                    _enumDisplayNameProvider.Get(options.SynchronizationMode),
                    outlookFolderType);
            }

            return(finalUrl);
        }
Exemple #6
0
        public async Task <string> TestWebDavConnection(OptionsModel options)
        {
            string url = options.CalenderUrl;

            if (options.SelectedFolderOrNull == null)
            {
                MessageBox.Show(Strings.Get($"Please select an Outlook folder to specify the item type for this profile"), ConnectionTestCaption);
                return(url);
            }

            var outlookFolderType = options.SelectedFolderOrNull.DefaultItemType;

            string        serverUrl           = url;
            StringBuilder errorMessageBuilder = new StringBuilder();

            if (string.IsNullOrEmpty(url) && (!string.IsNullOrEmpty(options.EmailAddress) || !string.IsNullOrEmpty(options.UserName)))
            {
                var lookupEmail = !string.IsNullOrEmpty(options.EmailAddress) ? options.EmailAddress : options.UserName;

                if (!ValidateEmailAddress(errorMessageBuilder, lookupEmail, true))
                {
                    MessageBox.Show(errorMessageBuilder.ToString(), Strings.Get($"The Email address is invalid"),
                                    MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return(url);
                }

                bool success;
                serverUrl = DoSrvLookup(lookupEmail, outlookFolderType, out success);
            }


            if (!ValidateWebDavUrl(serverUrl, errorMessageBuilder, false))
            {
                MessageBox.Show(errorMessageBuilder.ToString(), Strings.Get($"The CalDav/CardDav URL is invalid"), MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(url);
            }

            var enteredUri   = new Uri(serverUrl);
            var webDavClient = options.CreateWebDavClient(enteredUri);

            Uri autoDiscoveredUrl;

            if (ConnectionTester.RequiresAutoDiscovery(enteredUri))
            {
                var autodiscoveryResult = await DoAutoDiscovery(enteredUri, webDavClient, true, true, outlookFolderType);

                switch (autodiscoveryResult.Status)
                {
                case AutoDiscoverResultStatus.UserCancelled:
                    return(url);

                case AutoDiscoverResultStatus.ResourceSelected:
                    autoDiscoveredUrl = autodiscoveryResult.RessourceUrl;
                    break;

                case AutoDiscoverResultStatus.NoResourcesFound:
                    var autodiscoveryResult2 = await DoAutoDiscovery(enteredUri.AbsolutePath.EndsWith("/")?enteredUri : new Uri(enteredUri.ToString() + "/"), webDavClient, false, false, outlookFolderType);

                    switch (autodiscoveryResult2.Status)
                    {
                    case AutoDiscoverResultStatus.UserCancelled:
                        return(url);

                    case AutoDiscoverResultStatus.ResourceSelected:
                        autoDiscoveredUrl = autodiscoveryResult2.RessourceUrl;
                        break;

                    case AutoDiscoverResultStatus.NoResourcesFound:
                        MessageBox.Show(Strings.Get($"No resources were found via autodiscovery!"), ConnectionTestCaption);
                        return(url);

                    default:
                        throw new NotImplementedException(autodiscoveryResult2.Status.ToString());
                    }

                    break;

                default:
                    throw new NotImplementedException(autodiscoveryResult.Status.ToString());
                }
            }
            else
            {
                var result = await ConnectionTester.TestConnection(enteredUri, webDavClient);

                if (result.ResourceType != ResourceType.None)
                {
                    FixSynchronizationMode(options, result);
                    FixWebDavCollectionSync(options, result);
                    UpdateServerEmailAndSchedulingSettings(options, result);

                    DisplayTestReport(
                        result,
                        options.SynchronizationMode,
                        _enumDisplayNameProvider.Get(options.SynchronizationMode),
                        outlookFolderType);
                    return(url);
                }
                else
                {
                    var autodiscoveryResult = await DoAutoDiscovery(enteredUri, webDavClient, false, false, outlookFolderType);

                    switch (autodiscoveryResult.Status)
                    {
                    case AutoDiscoverResultStatus.UserCancelled:
                        return(url);

                    case AutoDiscoverResultStatus.ResourceSelected:
                        autoDiscoveredUrl = autodiscoveryResult.RessourceUrl;
                        break;

                    case AutoDiscoverResultStatus.NoResourcesFound:
                        var autodiscoveryResult2 = await DoAutoDiscovery(enteredUri, webDavClient, true, true, outlookFolderType);

                        switch (autodiscoveryResult2.Status)
                        {
                        case AutoDiscoverResultStatus.UserCancelled:
                            return(url);

                        case AutoDiscoverResultStatus.ResourceSelected:
                            autoDiscoveredUrl = autodiscoveryResult2.RessourceUrl;
                            break;

                        case AutoDiscoverResultStatus.NoResourcesFound:
                            MessageBox.Show(Strings.Get($"No resources were found via autodiscovery!"), ConnectionTestCaption);
                            return(url);

                        default:
                            throw new NotImplementedException(autodiscoveryResult2.Status.ToString());
                        }

                        break;

                    default:
                        throw new NotImplementedException(autodiscoveryResult.Status.ToString());
                    }
                }
            }


            var finalResult = await ConnectionTester.TestConnection(autoDiscoveredUrl, webDavClient);

            FixSynchronizationMode(options, finalResult);
            FixWebDavCollectionSync(options, finalResult);
            UpdateServerEmailAndSchedulingSettings(options, finalResult);

            DisplayTestReport(
                finalResult,
                options.SynchronizationMode,
                _enumDisplayNameProvider.Get(options.SynchronizationMode),
                outlookFolderType);

            return(autoDiscoveredUrl.ToString());
        }
        public static async Task <string> TestGoogleConnection(ICurrentOptions currentOptions, ISettingsFaultFinder settingsFaultFinder, string url)
        {
            if (currentOptions.OutlookFolderType == null)
            {
                MessageBox.Show("Please select an Outlook folder to specify the item type for this profile", ConnectionTestCaption);
                return(url);
            }

            var outlookFolderType = currentOptions.OutlookFolderType.Value;

            StringBuilder errorMessageBuilder = new StringBuilder();

            if (!ValidateGoogleEmailAddress(errorMessageBuilder, currentOptions.EmailAddress))
            {
                MessageBox.Show(errorMessageBuilder.ToString(), "The Email Address is invalid", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(url);
            }

            if (outlookFolderType == OlItemType.olTaskItem)
            {
                return(await TestGoogleTaskConnection(currentOptions, errorMessageBuilder, outlookFolderType, url));
            }

            if (outlookFolderType == OlItemType.olContactItem && currentOptions.ServerAdapterType == ServerAdapterType.GoogleContactApi)
            {
                return(await TestGoogleContactsConnection(currentOptions, outlookFolderType, url));
            }

            if (!ValidateWebDavUrl(url, errorMessageBuilder, false))
            {
                MessageBox.Show(errorMessageBuilder.ToString(), "The CalDav/CardDav Url is invalid", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(url);
            }

            var enteredUri   = new Uri(url);
            var webDavClient = currentOptions.CreateWebDavClient(enteredUri);

            Uri autoDiscoveredUrl;

            if (ConnectionTester.RequiresAutoDiscovery(enteredUri))
            {
                var autoDiscoveryResult = await DoAutoDiscovery(enteredUri, webDavClient, false, true, outlookFolderType);

                switch (autoDiscoveryResult.Status)
                {
                case AutoDiscoverResultStatus.UserCancelled:
                    return(url);

                case AutoDiscoverResultStatus.ResourceSelected:
                    autoDiscoveredUrl = autoDiscoveryResult.RessourceUrl;
                    break;

                default:
                    autoDiscoveredUrl = null;
                    break;
                }
            }
            else
            {
                autoDiscoveredUrl = null;
            }


            var finalUrl = autoDiscoveredUrl?.ToString() ?? url;

            var result = await ConnectionTester.TestConnection(new Uri(finalUrl), webDavClient);

            if (result.ResourceType != ResourceType.None)
            {
                settingsFaultFinder.FixSynchronizationMode(result);
            }

            if (outlookFolderType == OlItemType.olContactItem)
            {
                // Google Addressbook doesn't have any properties. As long as there doesn't occur an exception, the test is successful.
                MessageBox.Show("Connection test successful.", ConnectionTestCaption);
            }
            else
            {
                DisplayTestReport(
                    result,
                    currentOptions.SynchronizationMode,
                    currentOptions.SynchronizationModeDisplayName,
                    outlookFolderType);
            }

            return(finalUrl);
        }
        public static async Task <string> TestWebDavConnection(ICurrentOptions environment, ISettingsFaultFinder settingsFaultFinder, string url)
        {
            if (environment.OutlookFolderType == null)
            {
                MessageBox.Show("Please select an Outlook folder to specify the item type for this profile", ConnectionTestCaption);
                return(url);
            }

            var outlookFolderType = environment.OutlookFolderType.Value;

            StringBuilder errorMessageBuilder = new StringBuilder();

            if (!ValidateWebDavUrl(url, errorMessageBuilder, false))
            {
                MessageBox.Show(errorMessageBuilder.ToString(), "The CalDav/CardDav Url is invalid", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(url);
            }

            var enteredUri   = new Uri(url);
            var webDavClient = environment.CreateWebDavClient(enteredUri);

            Uri autoDiscoveredUrl;

            if (ConnectionTester.RequiresAutoDiscovery(enteredUri))
            {
                var autodiscoveryResult = await DoAutoDiscovery(enteredUri, webDavClient, true, true, outlookFolderType);

                switch (autodiscoveryResult.Status)
                {
                case AutoDiscoverResultStatus.UserCancelled:
                    return(url);

                case AutoDiscoverResultStatus.ResourceSelected:
                    autoDiscoveredUrl = autodiscoveryResult.RessourceUrl;
                    break;

                case AutoDiscoverResultStatus.NoResourcesFound:
                    var autodiscoveryResult2 = await DoAutoDiscovery(enteredUri.AbsolutePath.EndsWith ("/")?enteredUri : new Uri(enteredUri.ToString() + "/"), webDavClient, false, false, outlookFolderType);

                    switch (autodiscoveryResult2.Status)
                    {
                    case AutoDiscoverResultStatus.UserCancelled:
                        return(url);

                    case AutoDiscoverResultStatus.ResourceSelected:
                        autoDiscoveredUrl = autodiscoveryResult2.RessourceUrl;
                        break;

                    case AutoDiscoverResultStatus.NoResourcesFound:
                        MessageBox.Show("No resources were found via autodiscovery!", ConnectionTestCaption);
                        return(url);

                    default:
                        throw new NotImplementedException(autodiscoveryResult2.Status.ToString());
                    }
                    break;

                default:
                    throw new NotImplementedException(autodiscoveryResult.Status.ToString());
                }
            }
            else
            {
                var result = await ConnectionTester.TestConnection(enteredUri, webDavClient);

                if (result.ResourceType != ResourceType.None)
                {
                    settingsFaultFinder.FixSynchronizationMode(result);

                    DisplayTestReport(
                        result,
                        environment.SynchronizationMode,
                        environment.SynchronizationModeDisplayName,
                        outlookFolderType);
                    return(url);
                }
                else
                {
                    var autodiscoveryResult = await DoAutoDiscovery(enteredUri, webDavClient, false, false, outlookFolderType);

                    switch (autodiscoveryResult.Status)
                    {
                    case AutoDiscoverResultStatus.UserCancelled:
                        return(url);

                    case AutoDiscoverResultStatus.ResourceSelected:
                        autoDiscoveredUrl = autodiscoveryResult.RessourceUrl;
                        break;

                    case AutoDiscoverResultStatus.NoResourcesFound:
                        var autodiscoveryResult2 = await DoAutoDiscovery(enteredUri, webDavClient, true, true, outlookFolderType);

                        switch (autodiscoveryResult2.Status)
                        {
                        case AutoDiscoverResultStatus.UserCancelled:
                            return(url);

                        case AutoDiscoverResultStatus.ResourceSelected:
                            autoDiscoveredUrl = autodiscoveryResult2.RessourceUrl;
                            break;

                        case AutoDiscoverResultStatus.NoResourcesFound:
                            MessageBox.Show("No resources were found via autodiscovery!", ConnectionTestCaption);
                            return(url);

                        default:
                            throw new NotImplementedException(autodiscoveryResult2.Status.ToString());
                        }
                        break;

                    default:
                        throw new NotImplementedException(autodiscoveryResult.Status.ToString());
                    }
                }
            }


            var finalResult = await ConnectionTester.TestConnection(autoDiscoveredUrl, webDavClient);

            settingsFaultFinder.FixSynchronizationMode(finalResult);

            DisplayTestReport(
                finalResult,
                environment.SynchronizationMode,
                environment.SynchronizationModeDisplayName,
                outlookFolderType);

            return(autoDiscoveredUrl.ToString());
        }
        private async Task TestServerConnection()
        {
            _testConnectionButton.Enabled = false;
            try
            {
                StringBuilder errorMessageBuilder = new StringBuilder();
                if (!OptionTasks.ValidateCalendarUrl(_calenderUrlTextBox.Text, errorMessageBuilder, false))
                {
                    MessageBox.Show(errorMessageBuilder.ToString(), "The CalDav/CardDav Url is invalid", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                var enteredUri   = new Uri(_calenderUrlTextBox.Text);
                var webDavClient = CreateWebDavClient();

                Uri          autoDiscoveredUrl;
                ResourceType autoDiscoveredResourceType;

                if (ConnectionTester.RequiresAutoDiscovery(enteredUri))
                {
                    var autodiscoveryResult = await OptionTasks.DoAutoDiscovery(enteredUri, webDavClient, true, true, _dependencies.OutlookFolderType);

                    if (autodiscoveryResult.WasCancelled)
                    {
                        return;
                    }
                    if (autodiscoveryResult.RessourceUrl != null)
                    {
                        autoDiscoveredUrl          = autodiscoveryResult.RessourceUrl;
                        autoDiscoveredResourceType = autodiscoveryResult.ResourceType;
                    }
                    else
                    {
                        var autodiscoveryResult2 = await OptionTasks.DoAutoDiscovery(enteredUri.AbsolutePath.EndsWith ("/")?enteredUri : new Uri(enteredUri.ToString() + "/"), webDavClient, false, false, _dependencies.OutlookFolderType);

                        if (autodiscoveryResult2.WasCancelled)
                        {
                            return;
                        }
                        if (autodiscoveryResult2.RessourceUrl != null)
                        {
                            autoDiscoveredUrl          = autodiscoveryResult2.RessourceUrl;
                            autoDiscoveredResourceType = autodiscoveryResult2.ResourceType;
                        }
                        else
                        {
                            return;
                        }
                    }
                }
                else
                {
                    var result = await ConnectionTester.TestConnection(enteredUri, webDavClient, ResourceType.None);

                    if (result.ResourceType != ResourceType.None)
                    {
                        _settingsFaultFinder.FixSynchronizationMode(result);

                        OptionTasks.DisplayTestReport(
                            result,
                            _dependencies.SelectedSynchronizationModeRequiresWriteableServerResource,
                            _dependencies.SelectedSynchronizationModeDisplayName,
                            _dependencies.OutlookFolderType);
                        return;
                    }
                    else
                    {
                        var autodiscoveryResult = await OptionTasks.DoAutoDiscovery(enteredUri, webDavClient, false, false, _dependencies.OutlookFolderType);

                        if (autodiscoveryResult.WasCancelled)
                        {
                            return;
                        }
                        if (autodiscoveryResult.RessourceUrl != null)
                        {
                            autoDiscoveredUrl          = autodiscoveryResult.RessourceUrl;
                            autoDiscoveredResourceType = autodiscoveryResult.ResourceType;
                        }
                        else
                        {
                            var autodiscoveryResult2 = await OptionTasks.DoAutoDiscovery(enteredUri, webDavClient, true, true, _dependencies.OutlookFolderType);

                            if (autodiscoveryResult2.RessourceUrl != null)
                            {
                                autoDiscoveredUrl          = autodiscoveryResult2.RessourceUrl;
                                autoDiscoveredResourceType = autodiscoveryResult2.ResourceType;
                            }
                            else
                            {
                                return;
                            }
                        }
                    }
                }

                _calenderUrlTextBox.Text = autoDiscoveredUrl.ToString();

                var finalResult = await ConnectionTester.TestConnection(autoDiscoveredUrl, webDavClient, autoDiscoveredResourceType);

                _settingsFaultFinder.FixSynchronizationMode(finalResult);

                OptionTasks.DisplayTestReport(
                    finalResult,
                    _dependencies.SelectedSynchronizationModeRequiresWriteableServerResource,
                    _dependencies.SelectedSynchronizationModeDisplayName,
                    _dependencies.OutlookFolderType);
                ;
            }
            catch (Exception x)
            {
                s_logger.Error("Exception while testing the connection.", x);
                string message = null;
                for (Exception ex = x; ex != null; ex = ex.InnerException)
                {
                    message += ex.Message + Environment.NewLine;
                }
                MessageBox.Show(message, OptionTasks.ConnectionTestCaption);
            }
            finally
            {
                _testConnectionButton.Enabled = true;
            }
        }
Exemple #10
0
        public static async Task TestGoogleConnection(ICurrentOptions currentOptions, ISettingsFaultFinder settingsFaultFinder)
        {
            if (currentOptions.OutlookFolderType == null)
            {
                MessageBox.Show("Please select an Outlook folder to specify the item type for this profile", ConnectionTestCaption);
                return;
            }

            var outlookFolderType = currentOptions.OutlookFolderType.Value;

            StringBuilder errorMessageBuilder = new StringBuilder();

            if (!ValidateGoogleEmailAddress(errorMessageBuilder, currentOptions.EmailAddress))
            {
                MessageBox.Show(errorMessageBuilder.ToString(), "The Email Address is invalid", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            if (outlookFolderType == OlItemType.olTaskItem)
            {
                await TestGoogleTaskConnection(currentOptions, errorMessageBuilder, outlookFolderType);

                return;
            }

            if (!ValidateWebDavUrl(currentOptions.ServerUrl, errorMessageBuilder, false))
            {
                MessageBox.Show(errorMessageBuilder.ToString(), "The CalDav/CardDav Url is invalid", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            var enteredUri   = new Uri(currentOptions.ServerUrl);
            var webDavClient = currentOptions.CreateWebDavClient();

            Uri          autoDiscoveredUrl;
            ResourceType autoDiscoveredResourceType;

            if (ConnectionTester.RequiresAutoDiscovery(enteredUri))
            {
                var calDavDataAccess = new CalDavDataAccess(enteredUri, webDavClient);
                var foundCaldendars  = await calDavDataAccess.GetUserCalendarsNoThrow(false);

                var cardDavDataAccess = new CardDavDataAccess(enteredUri, webDavClient);
                IReadOnlyList <Tuple <Uri, string> > foundAddressBooks = await cardDavDataAccess.GetUserAddressBooksNoThrow(true);

                if (foundCaldendars.Count > 0 || foundAddressBooks.Count > 0)
                {
                    ResourceType initalResourceType;
                    if (currentOptions.OutlookFolderType == OlItemType.olContactItem)
                    {
                        initalResourceType = ResourceType.AddressBook;
                    }
                    else if (currentOptions.OutlookFolderType == OlItemType.olTaskItem)
                    {
                        initalResourceType = ResourceType.TaskList;
                    }
                    else
                    {
                        initalResourceType = ResourceType.Calendar;
                    }

                    using (SelectResourceForm listCalendarsForm =
                               new SelectResourceForm(
                                   foundCaldendars,
                                   foundAddressBooks,
                                   new Tuple <string, string>[] {},
                                   initalResourceType))
                    {
                        if (listCalendarsForm.ShowDialog() == DialogResult.OK)
                        {
                            if (listCalendarsForm.ResourceType == ResourceType.TaskList)
                            {
                                autoDiscoveredUrl        = null;
                                currentOptions.ServerUrl = listCalendarsForm.SelectedUrl;
                            }
                            else
                            {
                                autoDiscoveredUrl = new Uri(enteredUri.GetLeftPart(UriPartial.Authority) + listCalendarsForm.SelectedUrl);
                            }
                            autoDiscoveredResourceType = listCalendarsForm.ResourceType;
                        }
                        else
                        {
                            autoDiscoveredUrl          = null;
                            autoDiscoveredResourceType = ResourceType.None;
                        }
                    }
                }
                else
                {
                    MessageBox.Show("No resources were found via autodiscovery!", ConnectionTestCaption);
                    autoDiscoveredUrl          = null;
                    autoDiscoveredResourceType = ResourceType.None;
                }
            }
            else
            {
                var result = await ConnectionTester.TestConnection(enteredUri, webDavClient, ResourceType.None);

                if (result.ResourceType != ResourceType.None)
                {
                    settingsFaultFinder.FixSynchronizationMode(result);
                }
                DisplayTestReport(
                    result,
                    currentOptions.SynchronizationMode,
                    currentOptions.SynchronizationModeDisplayName,
                    outlookFolderType);
                return;
            }

            if (autoDiscoveredUrl != null)
            {
                currentOptions.ServerUrl = autoDiscoveredUrl.ToString();
                var finalResult =
                    await ConnectionTester.TestConnection(autoDiscoveredUrl, webDavClient, autoDiscoveredResourceType);

                settingsFaultFinder.FixSynchronizationMode(finalResult);

                DisplayTestReport(
                    finalResult,
                    currentOptions.SynchronizationMode,
                    currentOptions.SynchronizationModeDisplayName,
                    outlookFolderType);
            }
            else if (outlookFolderType == OlItemType.olTaskItem)
            {
                TestResult result = new TestResult(ResourceType.TaskList, CalendarProperties.None, AddressBookProperties.None);

                DisplayTestReport(
                    result,
                    currentOptions.SynchronizationMode,
                    currentOptions.SynchronizationModeDisplayName,
                    outlookFolderType);
            }
        }
Exemple #11
0
        public static async Task TestWebDavConnection(ICurrentOptions environment, ISettingsFaultFinder settingsFaultFinder)
        {
            if (environment.OutlookFolderType == null)
            {
                MessageBox.Show("Please select an Outlook folder to specify the item type for this profile", ConnectionTestCaption);
                return;
            }

            var outlookFolderType = environment.OutlookFolderType.Value;

            StringBuilder errorMessageBuilder = new StringBuilder();

            if (!ValidateWebDavUrl(environment.ServerUrl, errorMessageBuilder, false))
            {
                MessageBox.Show(errorMessageBuilder.ToString(), "The CalDav/CardDav Url is invalid", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            var enteredUri   = new Uri(environment.ServerUrl);
            var webDavClient = environment.CreateWebDavClient();

            Uri          autoDiscoveredUrl;
            ResourceType autoDiscoveredResourceType;

            if (ConnectionTester.RequiresAutoDiscovery(enteredUri))
            {
                var autodiscoveryResult = await DoAutoDiscovery(enteredUri, webDavClient, true, true, environment.OutlookFolderType);

                if (autodiscoveryResult.WasCancelled)
                {
                    return;
                }
                if (autodiscoveryResult.RessourceUrl != null)
                {
                    autoDiscoveredUrl          = autodiscoveryResult.RessourceUrl;
                    autoDiscoveredResourceType = autodiscoveryResult.ResourceType;
                }
                else
                {
                    var autodiscoveryResult2 = await DoAutoDiscovery(enteredUri.AbsolutePath.EndsWith ("/")?enteredUri : new Uri(enteredUri.ToString() + "/"), webDavClient, false, false, environment.OutlookFolderType);

                    if (autodiscoveryResult2.WasCancelled)
                    {
                        return;
                    }
                    if (autodiscoveryResult2.RessourceUrl != null)
                    {
                        autoDiscoveredUrl          = autodiscoveryResult2.RessourceUrl;
                        autoDiscoveredResourceType = autodiscoveryResult2.ResourceType;
                    }
                    else
                    {
                        MessageBox.Show("No resources were found via autodiscovery!", ConnectionTestCaption);
                        return;
                    }
                }
            }
            else
            {
                var result = await ConnectionTester.TestConnection(enteredUri, webDavClient, ResourceType.None);

                if (result.ResourceType != ResourceType.None)
                {
                    settingsFaultFinder.FixSynchronizationMode(result);

                    DisplayTestReport(
                        result,
                        environment.SynchronizationMode,
                        environment.SynchronizationModeDisplayName,
                        outlookFolderType);
                    return;
                }
                else
                {
                    var autodiscoveryResult = await DoAutoDiscovery(enteredUri, webDavClient, false, false, environment.OutlookFolderType);

                    if (autodiscoveryResult.WasCancelled)
                    {
                        return;
                    }
                    if (autodiscoveryResult.RessourceUrl != null)
                    {
                        autoDiscoveredUrl          = autodiscoveryResult.RessourceUrl;
                        autoDiscoveredResourceType = autodiscoveryResult.ResourceType;
                    }
                    else
                    {
                        var autodiscoveryResult2 = await DoAutoDiscovery(enteredUri, webDavClient, true, true, environment.OutlookFolderType);

                        if (autodiscoveryResult2.RessourceUrl != null)
                        {
                            autoDiscoveredUrl          = autodiscoveryResult2.RessourceUrl;
                            autoDiscoveredResourceType = autodiscoveryResult2.ResourceType;
                        }
                        else
                        {
                            MessageBox.Show("No resources were found via autodiscovery!", ConnectionTestCaption);
                            return;
                        }
                    }
                }
            }

            environment.ServerUrl = autoDiscoveredUrl.ToString();

            var finalResult = await ConnectionTester.TestConnection(autoDiscoveredUrl, webDavClient, autoDiscoveredResourceType);

            settingsFaultFinder.FixSynchronizationMode(finalResult);

            DisplayTestReport(
                finalResult,
                environment.SynchronizationMode,
                environment.SynchronizationModeDisplayName,
                outlookFolderType);
        }