using System.Diagnostics.Contracts;\r
using System.IO;\r
using System.Net;\r
+using System.Net.Http;\r
using System.Reflection;\r
using System.Runtime.InteropServices;\r
using System.ServiceModel;\r
using System.Collections.Generic;\r
using System.Linq;\r
using Pithos.Network;\r
+using Pithos.OFM;\r
using StatusService = Pithos.Client.WPF.Services.StatusService;\r
\r
+\r
namespace Pithos.Client.WPF {\r
using System.ComponentModel.Composition;\r
\r
\r
private readonly IEventAggregator _events;\r
\r
+ \r
public PithosSettings Settings { get; private set; }\r
\r
\r
VersionMessage = String.Format("Pithos+ {0}", fileVersion.FileVersion);\r
}\r
\r
+\r
+ public void openOFM()\r
+ {\r
+ var fileManager = IoC.Get<FileManagerViewModel>();\r
+ fileManager.Accounts = Settings.Accounts;\r
+ fileManager.CurrentAccount = fileManager.Accounts.First();// Settings.Accounts.First();\r
+ _windowManager.ShowWindow(fileManager);\r
+ //var ofm = new OFM.GUI.OFM();\r
+ //ofm.Show();\r
+ }\r
+\r
public void CurrentSyncStatus()\r
{\r
if (Accounts.Count == 0)\r
if (!Directory.Exists(account.RootPath))\r
{\r
account.IsActive = false;\r
+ Settings.Save();\r
Notify(new Notification\r
{\r
Level = TraceLevel.Error,\r
}\r
}\r
\r
+ private double _ProgressBar;\r
+ public double ProgressBar\r
+ {\r
+ get { return _ProgressBar; }\r
+ set\r
+ {\r
+ _ProgressBar = value;\r
+ NotifyOfPropertyChange(() => ProgressBar);\r
+ }\r
+ }\r
+\r
+\r
public string VersionMessage { get; set; }\r
\r
public string TooltipMessage\r
public Notifier GetNotifier(string startMessage, string endMessage, bool isActive=true,params object[] args)\r
{\r
return isActive?new Notifier(this, \r
- new StatusNotification(String.Format(startMessage,args)), \r
+ new StatusNotification(String.Format(startMessage,args)),\r
new StatusNotification(String.Format(endMessage,args)))\r
:new Notifier(this,(Notification) null,null);\r
}\r
\r
\r
\r
- private Task StartMonitor(PithosMonitor monitor,int retries=0)\r
+ public async Task StartMonitor(PithosMonitor monitor,int retries=0)\r
{\r
- return Task.Factory.StartNew(() =>\r
- {\r
- using (log4net.ThreadContext.Stacks["Monitor"].Push("Start"))\r
- {\r
- try\r
- {\r
- Log.InfoFormat("Start Monitoring {0}", monitor.UserName);\r
-\r
- monitor.Start();\r
- }\r
- catch (WebException exc)\r
- {\r
- if (AbandonRetry(monitor, retries))\r
- return;\r
-\r
- HttpStatusCode statusCode =HttpStatusCode.OK;\r
- var response = exc.Response as HttpWebResponse;\r
- if(response!=null)\r
- statusCode = response.StatusCode;\r
-\r
- switch (statusCode)\r
- {\r
- case HttpStatusCode.Unauthorized:\r
- var message = String.Format("API Key Expired for {0}. Starting Renewal",\r
- monitor.UserName);\r
- Log.Error(message, exc);\r
- var account = Settings.Accounts.Find(acc => acc.AccountKey == new Uri(monitor.AuthenticationUrl).Combine(monitor.UserName)); \r
- account.IsExpired = true;\r
- Notify(new ExpirationNotification(account));\r
- //TryAuthorize(monitor.UserName, retries).Wait();\r
- break;\r
- case HttpStatusCode.ProxyAuthenticationRequired:\r
- TryAuthenticateProxy(monitor,retries);\r
- break;\r
- default:\r
- TryLater(monitor, exc, retries);\r
- break;\r
- }\r
- }\r
- catch (Exception exc)\r
- {\r
- if (AbandonRetry(monitor, retries)) \r
- return;\r
-\r
- TryLater(monitor,exc,retries);\r
- }\r
- }\r
- });\r
+ using (log4net.ThreadContext.Stacks["Monitor"].Push("Start"))\r
+ {\r
+ try\r
+ {\r
+ Log.InfoFormat("Start Monitoring {0}", monitor.UserName);\r
+\r
+ await monitor.Start();\r
+ }\r
+ catch (HttpRequestWithStatusException exc)\r
+ {\r
+ if (AbandonRetry(monitor, retries))\r
+ return;\r
+\r
+ //HttpStatusCode statusCode = HttpStatusCode.OK;\r
+ //var response = as HttpWebResponse;\r
+ //if (response != null)\r
+ var statusCode = exc.StatusCode;//response.StatusCode;\r
+\r
+ switch (statusCode)\r
+ {\r
+ case HttpStatusCode.Unauthorized:\r
+ var message = String.Format("API Key Expired for {0}. Starting Renewal",\r
+ monitor.UserName);\r
+ Log.Error(message, exc);\r
+ var account =\r
+ Settings.Accounts.Find(\r
+ acc => acc.AccountKey == new Uri(monitor.AuthenticationUrl).Combine(monitor.UserName));\r
+ account.IsExpired = true;\r
+ Settings.Save();\r
+ Notify(new ExpirationNotification(account));\r
+ //TryAuthorize(monitor.UserName, retries).Wait();\r
+ break;\r
+ case HttpStatusCode.ProxyAuthenticationRequired:\r
+ TryAuthenticateProxy(monitor, retries);\r
+ break;\r
+ default:\r
+ TryLater(monitor, exc, retries);\r
+ break;\r
+ }\r
+ }\r
+ catch (Exception exc)\r
+ {\r
+ if (AbandonRetry(monitor, retries))\r
+ return;\r
+\r
+ TryLater(monitor, exc, retries);\r
+ }\r
+ }\r
+\r
}\r
\r
- private void TryAuthenticateProxy(PithosMonitor monitor,int retries)\r
+ private void TryAuthenticateProxy(PithosMonitor monitor,int retries)\r
{\r
Execute.OnUIThread(() =>\r
{ \r
percentage,\r
progress.FileSize.ToByteSize(),\r
progress.FileName);\r
+ ProgressBar = percentage;\r
return;\r
}\r
\r