private async void Login_OnClick(object sender, RoutedEventArgs e) { if (Email.Text.IsNullOrEmpty() || Password.Password.IsNullOrEmpty()) { ErrorMessage.Text = AkaI18N.EmptyEmailOrPasswordIsNotAllowed; return; } Login.Disable(); try { await Task.WhenAll(Authentication.AppApiAuthenticate(Email.Text, Password.Password), Authentication.WebApiAuthenticate(Email.Text, Password.Password)); } catch (Exception exception) { SetErrorHint(exception); ExceptionDumper.WriteException(exception); Login.Enable(); return; } var mainWindow = new MainWindow(); mainWindow.Show(); Close(); }
protected override async Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { _requestHandler?.Handle(request); if (_directConnect) { var host = request.RequestUri.DnsSafeHost; var isSslSession = request.RequestUri.ToString().StartsWith("https://"); request.RequestUri = new Uri( $"{(isSslSession ? "https://" : "http://")}{(await DnsResolver.Lookup(host))[0]}{request.RequestUri.PathAndQuery}"); request.Headers.Host = host; } HttpResponseMessage result; try { result = await base.SendAsync(request, cancellationToken); } catch (HttpRequestException e) { if (e.InnerException != null && e.InnerException.Message.ToLower().Contains("winhttp")) { return(new HttpResponseMessage(HttpStatusCode.OK)); } throw; } if (result.StatusCode == HttpStatusCode.BadRequest && (await result.Content.ReadAsStringAsync()).Contains("OAuth")) { using var semaphore = new SemaphoreSlim(1); await semaphore.WaitAsync(cancellationToken); await Authentication.AppApiAuthenticate(Session.Current.Account, Session.Current.Password); var token = request.Headers.Authorization; if (token != null) { request.Headers.Authorization = new AuthenticationHeaderValue(token.Scheme, Session.Current.AccessToken); } return(await base.SendAsync(request, cancellationToken)); } return(result); }