示例#1
0
        /// <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));
        }
示例#2
0
 /// <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));
         }
 }