Statistics
| Branch: | Revision:

root / trunk / Pithos.Client.WPF / Preferences / AddAccountViewModel.cs @ 84a3db1b

History | View | Annotate | Download (10.2 kB)

1 255f5f86 Panagiotis Kanavos
#region
2 255f5f86 Panagiotis Kanavos
/* -----------------------------------------------------------------------
3 255f5f86 Panagiotis Kanavos
 * <copyright file="AddAccountViewModel.cs" company="GRNet">
4 255f5f86 Panagiotis Kanavos
 * 
5 255f5f86 Panagiotis Kanavos
 * Copyright 2011-2012 GRNET S.A. All rights reserved.
6 255f5f86 Panagiotis Kanavos
 *
7 255f5f86 Panagiotis Kanavos
 * Redistribution and use in source and binary forms, with or
8 255f5f86 Panagiotis Kanavos
 * without modification, are permitted provided that the following
9 255f5f86 Panagiotis Kanavos
 * conditions are met:
10 255f5f86 Panagiotis Kanavos
 *
11 255f5f86 Panagiotis Kanavos
 *   1. Redistributions of source code must retain the above
12 255f5f86 Panagiotis Kanavos
 *      copyright notice, this list of conditions and the following
13 255f5f86 Panagiotis Kanavos
 *      disclaimer.
14 255f5f86 Panagiotis Kanavos
 *
15 255f5f86 Panagiotis Kanavos
 *   2. Redistributions in binary form must reproduce the above
16 255f5f86 Panagiotis Kanavos
 *      copyright notice, this list of conditions and the following
17 255f5f86 Panagiotis Kanavos
 *      disclaimer in the documentation and/or other materials
18 255f5f86 Panagiotis Kanavos
 *      provided with the distribution.
19 255f5f86 Panagiotis Kanavos
 *
20 255f5f86 Panagiotis Kanavos
 *
21 255f5f86 Panagiotis Kanavos
 * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
22 255f5f86 Panagiotis Kanavos
 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
23 255f5f86 Panagiotis Kanavos
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
24 255f5f86 Panagiotis Kanavos
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
25 255f5f86 Panagiotis Kanavos
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26 255f5f86 Panagiotis Kanavos
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27 255f5f86 Panagiotis Kanavos
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
28 255f5f86 Panagiotis Kanavos
 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
29 255f5f86 Panagiotis Kanavos
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30 255f5f86 Panagiotis Kanavos
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31 255f5f86 Panagiotis Kanavos
 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32 255f5f86 Panagiotis Kanavos
 * POSSIBILITY OF SUCH DAMAGE.
33 255f5f86 Panagiotis Kanavos
 *
34 255f5f86 Panagiotis Kanavos
 * The views and conclusions contained in the software and
35 255f5f86 Panagiotis Kanavos
 * documentation are those of the authors and should not be
36 255f5f86 Panagiotis Kanavos
 * interpreted as representing official policies, either expressed
37 255f5f86 Panagiotis Kanavos
 * or implied, of GRNET S.A.
38 255f5f86 Panagiotis Kanavos
 * </copyright>
39 255f5f86 Panagiotis Kanavos
 * -----------------------------------------------------------------------
40 255f5f86 Panagiotis Kanavos
 */
41 255f5f86 Panagiotis Kanavos
#endregion
42 255f5f86 Panagiotis Kanavos
using System;
43 77f3c897 Panagiotis Kanavos
using System.Collections.Generic;
44 77f3c897 Panagiotis Kanavos
using System.ComponentModel.Composition;
45 fe62b7f4 Panagiotis Kanavos
using System.IO;
46 fe62b7f4 Panagiotis Kanavos
using System.Linq;
47 f734ab5b Panagiotis Kanavos
using System.Threading.Tasks;
48 3ddbb7b8 Panagiotis Kanavos
using System.Windows;
49 3ddbb7b8 Panagiotis Kanavos
using System.Windows.Forms;
50 3ddbb7b8 Panagiotis Kanavos
using Pithos.Client.WPF.Properties;
51 f734ab5b Panagiotis Kanavos
using Pithos.Network;
52 3ddbb7b8 Panagiotis Kanavos
using MessageBox = System.Windows.MessageBox;
53 3ddbb7b8 Panagiotis Kanavos
using Screen = Caliburn.Micro.Screen;
54 77f3c897 Panagiotis Kanavos
55 77f3c897 Panagiotis Kanavos
namespace Pithos.Client.WPF.Preferences
56 77f3c897 Panagiotis Kanavos
{
57 77f3c897 Panagiotis Kanavos
    [Export(typeof(AddAccountViewModel))]
58 77f3c897 Panagiotis Kanavos
    public class AddAccountViewModel:Screen
59 77f3c897 Panagiotis Kanavos
    {
60 f734ab5b Panagiotis Kanavos
61 f734ab5b Panagiotis Kanavos
        private readonly List<string> _servers;
62 f734ab5b Panagiotis Kanavos
63 f734ab5b Panagiotis Kanavos
        public List<string> Servers
64 f734ab5b Panagiotis Kanavos
        {
65 f734ab5b Panagiotis Kanavos
            get { return _servers; }
66 f734ab5b Panagiotis Kanavos
        }
67 f734ab5b Panagiotis Kanavos
68 f734ab5b Panagiotis Kanavos
        private bool _isValidServer;
69 f734ab5b Panagiotis Kanavos
        public bool IsValidServer
70 f734ab5b Panagiotis Kanavos
        {
71 f734ab5b Panagiotis Kanavos
            get { return _isValidServer; }
72 f734ab5b Panagiotis Kanavos
            set
73 f734ab5b Panagiotis Kanavos
            {
74 f734ab5b Panagiotis Kanavos
                _isValidServer = value;
75 f734ab5b Panagiotis Kanavos
                NotifyOfPropertyChange(()=>IsValidServer);
76 f734ab5b Panagiotis Kanavos
            }
77 f734ab5b Panagiotis Kanavos
        }
78 f734ab5b Panagiotis Kanavos
79 f734ab5b Panagiotis Kanavos
80 f734ab5b Panagiotis Kanavos
        private string _currentServer;
81 f734ab5b Panagiotis Kanavos
        public string CurrentServer
82 f734ab5b Panagiotis Kanavos
        {
83 f734ab5b Panagiotis Kanavos
            get { return _currentServer; }
84 f734ab5b Panagiotis Kanavos
            set
85 f734ab5b Panagiotis Kanavos
            {
86 f734ab5b Panagiotis Kanavos
                if (!Uri.IsWellFormedUriString(value, UriKind.Absolute))
87 f734ab5b Panagiotis Kanavos
                {
88 f734ab5b Panagiotis Kanavos
                    IsValidServer = false;
89 f734ab5b Panagiotis Kanavos
                    throw new UriFormatException();
90 f734ab5b Panagiotis Kanavos
                }
91 f734ab5b Panagiotis Kanavos
                _currentServer = value;
92 f734ab5b Panagiotis Kanavos
                IsValidServer = true;
93 f734ab5b Panagiotis Kanavos
                HasValidCredentials = false;
94 f734ab5b Panagiotis Kanavos
                IsConfirmed = false;
95 f734ab5b Panagiotis Kanavos
                NotifyOfPropertyChange(()=>CurrentServer);
96 f734ab5b Panagiotis Kanavos
            }
97 f734ab5b Panagiotis Kanavos
        }
98 f734ab5b Panagiotis Kanavos
99 77f3c897 Panagiotis Kanavos
        private string _accountName;
100 77f3c897 Panagiotis Kanavos
        public string AccountName
101 77f3c897 Panagiotis Kanavos
        {
102 77f3c897 Panagiotis Kanavos
            get { return _accountName; }
103 77f3c897 Panagiotis Kanavos
            set
104 77f3c897 Panagiotis Kanavos
            {
105 77f3c897 Panagiotis Kanavos
                _accountName = value;
106 77f3c897 Panagiotis Kanavos
                NotifyOfPropertyChange(()=>AccountName);
107 3ddbb7b8 Panagiotis Kanavos
                NotifyOfPropertyChange(() => HasCredentials);
108 77f3c897 Panagiotis Kanavos
            }
109 77f3c897 Panagiotis Kanavos
        }
110 77f3c897 Panagiotis Kanavos
111 77f3c897 Panagiotis Kanavos
        private string _token;
112 77f3c897 Panagiotis Kanavos
        public string Token
113 77f3c897 Panagiotis Kanavos
        {
114 77f3c897 Panagiotis Kanavos
            get { return _token; }
115 77f3c897 Panagiotis Kanavos
            set
116 77f3c897 Panagiotis Kanavos
            {
117 77f3c897 Panagiotis Kanavos
                _token = value;
118 77f3c897 Panagiotis Kanavos
                NotifyOfPropertyChange(()=>Token);
119 3ddbb7b8 Panagiotis Kanavos
                NotifyOfPropertyChange(() => HasCredentials);
120 77f3c897 Panagiotis Kanavos
            }
121 77f3c897 Panagiotis Kanavos
        }
122 77f3c897 Panagiotis Kanavos
123 77f3c897 Panagiotis Kanavos
        private string _accountPath;
124 77f3c897 Panagiotis Kanavos
        public string AccountPath
125 77f3c897 Panagiotis Kanavos
        {
126 77f3c897 Panagiotis Kanavos
            get { return _accountPath; }
127 77f3c897 Panagiotis Kanavos
            set
128 77f3c897 Panagiotis Kanavos
            {
129 77f3c897 Panagiotis Kanavos
                _accountPath = value;
130 3ddbb7b8 Panagiotis Kanavos
                NotifyOfPropertyChange(() => AccountPath);
131 3ddbb7b8 Panagiotis Kanavos
                NotifyOfPropertyChange(() => HasAccountPath);
132 77f3c897 Panagiotis Kanavos
            }
133 77f3c897 Panagiotis Kanavos
        }
134 3ddbb7b8 Panagiotis Kanavos
135 3ddbb7b8 Panagiotis Kanavos
136 3ddbb7b8 Panagiotis Kanavos
        public bool HasAccountPath
137 3ddbb7b8 Panagiotis Kanavos
        {
138 3ddbb7b8 Panagiotis Kanavos
            get { return !String.IsNullOrWhiteSpace(AccountPath); }
139 3ddbb7b8 Panagiotis Kanavos
        }
140 3ddbb7b8 Panagiotis Kanavos
141 3ddbb7b8 Panagiotis Kanavos
        public bool HasCredentials
142 3ddbb7b8 Panagiotis Kanavos
        {
143 3ddbb7b8 Panagiotis Kanavos
            get { return !(String.IsNullOrWhiteSpace(AccountName) || String.IsNullOrWhiteSpace(Token) ) ; }
144 3ddbb7b8 Panagiotis Kanavos
        }
145 3ddbb7b8 Panagiotis Kanavos
146 3ddbb7b8 Panagiotis Kanavos
147 3ddbb7b8 Panagiotis Kanavos
        private bool  _isConfirmed;
148 3ddbb7b8 Panagiotis Kanavos
149 3ddbb7b8 Panagiotis Kanavos
        public bool IsConfirmed
150 3ddbb7b8 Panagiotis Kanavos
        {
151 3ddbb7b8 Panagiotis Kanavos
            get { return _isConfirmed; }
152 3ddbb7b8 Panagiotis Kanavos
            set
153 3ddbb7b8 Panagiotis Kanavos
            {
154 3ddbb7b8 Panagiotis Kanavos
                _isConfirmed = value;
155 f734ab5b Panagiotis Kanavos
                HasValidCredentials = false;
156 3ddbb7b8 Panagiotis Kanavos
                NotifyOfPropertyChange(() => IsConfirmed);
157 3ddbb7b8 Panagiotis Kanavos
            }
158 3ddbb7b8 Panagiotis Kanavos
        }
159 3ddbb7b8 Panagiotis Kanavos
160 3ddbb7b8 Panagiotis Kanavos
161 3ddbb7b8 Panagiotis Kanavos
        private bool _isAccountActive;
162 3ddbb7b8 Panagiotis Kanavos
163 3ddbb7b8 Panagiotis Kanavos
        public bool IsAccountActive
164 3ddbb7b8 Panagiotis Kanavos
        {
165 3ddbb7b8 Panagiotis Kanavos
            get { return _isAccountActive; }
166 3ddbb7b8 Panagiotis Kanavos
            set
167 3ddbb7b8 Panagiotis Kanavos
            {
168 3ddbb7b8 Panagiotis Kanavos
                _isAccountActive = value;
169 3ddbb7b8 Panagiotis Kanavos
                NotifyOfPropertyChange(() => IsAccountActive);
170 3ddbb7b8 Panagiotis Kanavos
            }
171 3ddbb7b8 Panagiotis Kanavos
        }
172 3ddbb7b8 Panagiotis Kanavos
173 fe62b7f4 Panagiotis Kanavos
174 fe62b7f4 Panagiotis Kanavos
        private bool _shouldCreateOkeanosFolder;
175 fe62b7f4 Panagiotis Kanavos
        public bool ShouldCreateOkeanosFolder
176 fe62b7f4 Panagiotis Kanavos
        {
177 fe62b7f4 Panagiotis Kanavos
            get { return _shouldCreateOkeanosFolder; }
178 fe62b7f4 Panagiotis Kanavos
            set
179 fe62b7f4 Panagiotis Kanavos
            {
180 fe62b7f4 Panagiotis Kanavos
                _shouldCreateOkeanosFolder = value;
181 fe62b7f4 Panagiotis Kanavos
                NotifyOfPropertyChange(()=>ShouldCreateOkeanosFolder);
182 fe62b7f4 Panagiotis Kanavos
            }
183 fe62b7f4 Panagiotis Kanavos
        }
184 fe62b7f4 Panagiotis Kanavos
185 3ddbb7b8 Panagiotis Kanavos
        public void SelectAccount()
186 3ddbb7b8 Panagiotis Kanavos
        {
187 c636df1f Panagiotis Kanavos
            using (var dlg = new FolderBrowserDialog{Description=Resources.AddAccountViewModel_SelectAccount_Please_select_a_folder})
188 3ddbb7b8 Panagiotis Kanavos
            {
189 3ddbb7b8 Panagiotis Kanavos
                //Ask the user to select a folder
190 3ddbb7b8 Panagiotis Kanavos
                //Note: We need a parent window here, which we retrieve with GetView            
191 3ddbb7b8 Panagiotis Kanavos
                var view = (Window)GetView();
192 3ddbb7b8 Panagiotis Kanavos
                if (DialogResult.OK != dlg.ShowDialog(new Wpf32Window(view)))
193 3ddbb7b8 Panagiotis Kanavos
                    return;
194 3ddbb7b8 Panagiotis Kanavos
195 3ddbb7b8 Panagiotis Kanavos
                AccountPath= dlg.SelectedPath;
196 fe62b7f4 Panagiotis Kanavos
197 fe62b7f4 Panagiotis Kanavos
                ShouldCreateOkeanosFolder=Directory.EnumerateFileSystemEntries(AccountPath).Any();                
198 3ddbb7b8 Panagiotis Kanavos
            }
199 3ddbb7b8 Panagiotis Kanavos
        }
200 3ddbb7b8 Panagiotis Kanavos
201 3ddbb7b8 Panagiotis Kanavos
202 badcef63 Panagiotis Kanavos
        public void RetrieveCredentials()
203 3ddbb7b8 Panagiotis Kanavos
        {
204 8dd2bdfb Panagiotis Kanavos
            SetBusy("Waiting for credentials.", "Please enter your credentials in the Pithos logon page");
205 3ddbb7b8 Panagiotis Kanavos
            IsConfirmed = false;
206 3ddbb7b8 Panagiotis Kanavos
207 3ddbb7b8 Panagiotis Kanavos
            try
208 3ddbb7b8 Panagiotis Kanavos
            {
209 81c5c310 pkanavos
                var loginUri=new Uri(new Uri(CurrentServer) , "login");
210 81c5c310 pkanavos
                var credentials = PithosAccount.RetrieveCredentials(loginUri.ToString());
211 badcef63 Panagiotis Kanavos
                if (credentials == null)
212 badcef63 Panagiotis Kanavos
                    return;
213 3ddbb7b8 Panagiotis Kanavos
                AccountName = credentials.UserName;
214 3ddbb7b8 Panagiotis Kanavos
                Token = credentials.Password;
215 3ddbb7b8 Panagiotis Kanavos
216 3ddbb7b8 Panagiotis Kanavos
                IsConfirmed = true;
217 3ddbb7b8 Panagiotis Kanavos
            }
218 34bdb91d Panagiotis Kanavos
            catch (PithosException exc)
219 34bdb91d Panagiotis Kanavos
            {
220 34bdb91d Panagiotis Kanavos
                ClearBusy();
221 34bdb91d Panagiotis Kanavos
                MessageBox.Show(exc.Message, "Unable to retrieve credentials");
222 34bdb91d Panagiotis Kanavos
            }
223 3ddbb7b8 Panagiotis Kanavos
            catch (Exception exc)
224 3ddbb7b8 Panagiotis Kanavos
            {
225 3ddbb7b8 Panagiotis Kanavos
                IsConfirmed = false;
226 3ddbb7b8 Panagiotis Kanavos
                MessageBox.Show(exc.ToString(), "Error");
227 3ddbb7b8 Panagiotis Kanavos
                throw;
228 3ddbb7b8 Panagiotis Kanavos
            }
229 8dd2bdfb Panagiotis Kanavos
            finally
230 8dd2bdfb Panagiotis Kanavos
            {
231 8dd2bdfb Panagiotis Kanavos
                ClearBusy();
232 8dd2bdfb Panagiotis Kanavos
                
233 c636df1f Panagiotis Kanavos
                ((Window) GetView()).Activate();
234 8dd2bdfb Panagiotis Kanavos
            }
235 3ddbb7b8 Panagiotis Kanavos
236 3ddbb7b8 Panagiotis Kanavos
        }
237 f734ab5b Panagiotis Kanavos
238 f734ab5b Panagiotis Kanavos
        public AddAccountViewModel()
239 f734ab5b Panagiotis Kanavos
        {
240 f734ab5b Panagiotis Kanavos
            _servers=new List<string>
241 f734ab5b Panagiotis Kanavos
                         {
242 f734ab5b Panagiotis Kanavos
                             Settings.Default.ProductionServer, 
243 f734ab5b Panagiotis Kanavos
                             Settings.Default.DevelopmentServer
244 f734ab5b Panagiotis Kanavos
                         };
245 f734ab5b Panagiotis Kanavos
            CurrentServer = _servers[0];
246 f734ab5b Panagiotis Kanavos
        }
247 f734ab5b Panagiotis Kanavos
248 f734ab5b Panagiotis Kanavos
        private bool _hasValidCredentials;
249 f734ab5b Panagiotis Kanavos
        public bool HasValidCredentials
250 f734ab5b Panagiotis Kanavos
        {
251 f734ab5b Panagiotis Kanavos
            get { return _hasValidCredentials; }
252 f734ab5b Panagiotis Kanavos
            set
253 f734ab5b Panagiotis Kanavos
            {
254 f734ab5b Panagiotis Kanavos
                _hasValidCredentials = value;
255 f734ab5b Panagiotis Kanavos
                NotifyOfPropertyChange(()=>HasValidCredentials);
256 f734ab5b Panagiotis Kanavos
            }
257 f734ab5b Panagiotis Kanavos
        }
258 f734ab5b Panagiotis Kanavos
259 06f11e8b Panagiotis Kanavos
        private string _validationMessage;
260 06f11e8b Panagiotis Kanavos
        public string ValidationMessage
261 06f11e8b Panagiotis Kanavos
        {
262 06f11e8b Panagiotis Kanavos
            get { return _validationMessage; }
263 06f11e8b Panagiotis Kanavos
            set
264 06f11e8b Panagiotis Kanavos
            {
265 06f11e8b Panagiotis Kanavos
                _validationMessage = value;
266 06f11e8b Panagiotis Kanavos
                NotifyOfPropertyChange(()=>ValidationMessage);
267 06f11e8b Panagiotis Kanavos
            }
268 06f11e8b Panagiotis Kanavos
        }
269 f734ab5b Panagiotis Kanavos
270 8dd2bdfb Panagiotis Kanavos
        private bool _isWorking;
271 8dd2bdfb Panagiotis Kanavos
        public bool IsWorking
272 f734ab5b Panagiotis Kanavos
        {
273 8dd2bdfb Panagiotis Kanavos
            get { return _isWorking; }
274 f734ab5b Panagiotis Kanavos
            set
275 f734ab5b Panagiotis Kanavos
            {
276 8dd2bdfb Panagiotis Kanavos
                _isWorking = value;
277 8dd2bdfb Panagiotis Kanavos
                NotifyOfPropertyChange(()=>IsWorking);
278 f734ab5b Panagiotis Kanavos
            }
279 f734ab5b Panagiotis Kanavos
        }
280 f734ab5b Panagiotis Kanavos
281 8dd2bdfb Panagiotis Kanavos
        private string _busyTitle;
282 8dd2bdfb Panagiotis Kanavos
        public string BusyTitle
283 8dd2bdfb Panagiotis Kanavos
        {
284 8dd2bdfb Panagiotis Kanavos
            get { return _busyTitle; }
285 8dd2bdfb Panagiotis Kanavos
            set
286 8dd2bdfb Panagiotis Kanavos
            {
287 8dd2bdfb Panagiotis Kanavos
                _busyTitle = value;
288 8dd2bdfb Panagiotis Kanavos
                NotifyOfPropertyChange(()=>BusyTitle);
289 8dd2bdfb Panagiotis Kanavos
            }
290 8dd2bdfb Panagiotis Kanavos
        }
291 8dd2bdfb Panagiotis Kanavos
292 8dd2bdfb Panagiotis Kanavos
        private string _busyDetail;
293 8dd2bdfb Panagiotis Kanavos
        public string BusyDetail
294 8dd2bdfb Panagiotis Kanavos
        {
295 8dd2bdfb Panagiotis Kanavos
            get { return _busyDetail; }
296 8dd2bdfb Panagiotis Kanavos
            set
297 8dd2bdfb Panagiotis Kanavos
            {
298 8dd2bdfb Panagiotis Kanavos
                _busyDetail = value;
299 8dd2bdfb Panagiotis Kanavos
                NotifyOfPropertyChange(()=>BusyDetail);
300 8dd2bdfb Panagiotis Kanavos
            }
301 8dd2bdfb Panagiotis Kanavos
        }
302 8dd2bdfb Panagiotis Kanavos
303 8dd2bdfb Panagiotis Kanavos
        private void SetBusy(string title,string detail)
304 8dd2bdfb Panagiotis Kanavos
        {
305 8dd2bdfb Panagiotis Kanavos
            IsWorking = true;
306 8dd2bdfb Panagiotis Kanavos
            BusyTitle = title;
307 8dd2bdfb Panagiotis Kanavos
            BusyDetail = detail;
308 8dd2bdfb Panagiotis Kanavos
        }
309 8dd2bdfb Panagiotis Kanavos
310 8dd2bdfb Panagiotis Kanavos
        private void ClearBusy()
311 8dd2bdfb Panagiotis Kanavos
        {
312 8dd2bdfb Panagiotis Kanavos
            IsWorking = false;
313 8dd2bdfb Panagiotis Kanavos
            BusyTitle = "";
314 8dd2bdfb Panagiotis Kanavos
            BusyDetail = "";
315 8dd2bdfb Panagiotis Kanavos
            
316 8dd2bdfb Panagiotis Kanavos
        }
317 8dd2bdfb Panagiotis Kanavos
318 f734ab5b Panagiotis Kanavos
        public async void TestAccount()
319 f734ab5b Panagiotis Kanavos
        {
320 f734ab5b Panagiotis Kanavos
            try
321 f734ab5b Panagiotis Kanavos
            {
322 06f11e8b Panagiotis Kanavos
                SetBusy("Validating Credentials", "");
323 34bdb91d Panagiotis Kanavos
                var client = new CloudFilesClient(AccountName, Token) { AuthenticationUrl = CurrentServer,/*Proxy=Proxy */};                
324 c636df1f Panagiotis Kanavos
                await TaskEx.Run(() =>
325 c636df1f Panagiotis Kanavos
                                     {
326 c636df1f Panagiotis Kanavos
                                         client.Authenticate();
327 c636df1f Panagiotis Kanavos
                                         return client.ListContainers(AccountName);
328 c636df1f Panagiotis Kanavos
                                     });
329 06f11e8b Panagiotis Kanavos
                HasValidCredentials = true;
330 06f11e8b Panagiotis Kanavos
                ValidationMessage = "Credentials Validated";
331 06f11e8b Panagiotis Kanavos
            }
332 5e31048f Panagiotis Kanavos
            catch
333 f734ab5b Panagiotis Kanavos
            {
334 f734ab5b Panagiotis Kanavos
                HasValidCredentials = false;
335 f734ab5b Panagiotis Kanavos
                MessageBox.Show("The account is not valid", "Account Error", MessageBoxButton.OK, MessageBoxImage.Stop);
336 06f11e8b Panagiotis Kanavos
                ValidationMessage = "Credentials validation failed";
337 f734ab5b Panagiotis Kanavos
            }
338 f734ab5b Panagiotis Kanavos
            finally
339 f734ab5b Panagiotis Kanavos
            {
340 8dd2bdfb Panagiotis Kanavos
                ClearBusy();
341 f734ab5b Panagiotis Kanavos
            }
342 f734ab5b Panagiotis Kanavos
        }
343 3ddbb7b8 Panagiotis Kanavos
344 77f3c897 Panagiotis Kanavos
    }
345 77f3c897 Panagiotis Kanavos
}