public void Execute() { ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; try { Site site = new Site(_applicationConfiguration.SiteName, new NetworkCredential(_applicationConfiguration.ApiToken, "X")); var room = site.GetRooms().FirstOrDefault(r => r.ID == _applicationConfiguration.RoomId); if (room == null) return; room.Join(); room.Say("Hello Tonight " + DateTime.Now); } catch (Exception) { throw new UnauthorizedAccessException("You probably need to update the APIToken in the app.config."); } }
public void Login() { if (string.IsNullOrWhiteSpace(SiteName)) { Error = "Site cannot be empty"; return; } WorkingText = "Signing in..."; CanLogin = false; // This task stuff turns out to be very // untidy. I must find a cleaner way to // handle this. var loginTask = new Task<Site>(() => { var site = new Site {Name = SiteName}; var password = ((LoginView)GetView()).Password.Password; string apiToken = site.GetToken(new NetworkCredential(UserName, password)); site.ApiToken = apiToken; site.Credentials = new NetworkCredential(apiToken, "X"); return site; }); loginTask.ContinueWith(t => rootViewModel.ActivateItem(new SiteViewModel(t.Result)), CancellationToken.None, TaskContinuationOptions.OnlyOnRanToCompletion, TaskScheduler.FromCurrentSynchronizationContext()); loginTask.ContinueWith(t => { var e = t.Exception.InnerException as WebException; WorkingText = "Login"; CanLogin = true; if (e == null) return; switch (((HttpWebResponse)e.Response).StatusCode) { case HttpStatusCode.Unauthorized: Error = "Username or password was incorrect"; break; case HttpStatusCode.NotFound: Error = "Site does not exist"; break; default: Error = "There was an unknown error while authenticating. Try again."; break; } }, CancellationToken.None, TaskContinuationOptions.OnlyOnFaulted, TaskScheduler.FromCurrentSynchronizationContext()); loginTask.Start(); }