/// <summary> /// Prepare MFA login request /// </summary> /// <param name="user"></param> /// <param name="code"></param> /// <returns></returns> private ZonkyHttpRequestMessage PrepareMfaLoginRequest(User user, MfaCode code) { var parameters = new Dictionary <string, string>() { { "mfa_token", code.MfaToken.ToString() }, { "sms_code", code.SmsCode.ToString() } }; return(PrepareLoginRequest(user) .AddQueryParameters(parameters)); }
/// <summary> /// Get access token exchange with password and MFA token /// </summary> /// <param name="user">User</param> /// <param name="code">MFA code</param> /// <param name="ct"></param> /// <returns></returns> public async Task <AuthorizationToken> GetTokenExchangePasswordMfaAsync(User user, MfaCode code, CancellationToken ct = default) { using (var request = PrepareMfaLoginRequest(user, code)) using (var response = await _httpClient.SendAsync(request, HttpCompletionOption.ResponseContentRead, ct).ConfigureAwait(false)) { return(await _resolverFactory.Create <AuthorizationToken>(Settings, true) .ConfigureStatusResponce(HttpStatusCode.OK) .ConfigureStatusResponce <AuthorizationError>(HttpStatusCode.BadRequest, (error, message) => HandleAuthorizationError(error, message, user)) .ConfigureDefaultResponce((message) => throw new ServerErrorException(message)) .ExtractDataAsync(response)); } }