Exemple #1
0
        public async Task <bool> LoginAsync(string userName, string userPassword, string code, CancellationToken cancellationToken)
        {
            try
            {
                var getKeyboardRequest = new GetKeyboardRequest
                {
                    Username  = userName,
                    SessionId = Guid.NewGuid().ToString(),
                };
                var getKeyboardResponse =
                    await _httpClient.PostAsync <GetKeyboardRequest, GetKeyboardResponse>(ProviderUrls.GET_KEYBOARD, getKeyboardRequest, cancellationToken);

                // Use the keyboard to complete the authentication
                var authenticateRequest = new AuthenticateRequest
                {
                    Username  = userName,
                    SessionId = getKeyboardRequest.SessionId,
                    Token     = getKeyboardResponse.Token,
                    Password  = GetPasswordFromKeyboard(userPassword, getKeyboardResponse),
                    OtpToken  = code,
                };
                await _httpClient.PostAsync(ProviderUrls.AUTHENTICATE, authenticateRequest, cancellationToken);

                return(true);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error authenticating to Rico Provider");
                Console.WriteLine(ex.Message);
                return(false);
            }
        }
Exemple #2
0
        /// <summary>
        /// Generic method used to send a request to the Api
        /// </summary>
        /// <param name="requestUri">Request Uri</param>
        /// <param name="requestMessage">Request Message</param>
        /// <returns>Request response message</returns>
        private static T Post <T>(string requestUri, object requestMessage) where T : BaseResponseMessage
        {
            T   result;
            var jsonObject = JsonConvert.SerializeObject(requestMessage);

            using (var httpClient = new BaseHttpClient())
                using (var content = new BaseHttpContent(jsonObject))
                    using (HttpResponseMessage response = httpClient.PostAsync(requestUri, content).Result)
                    {
                        response.EnsureSuccessStatusCode();
                        Task <string> responseBody = response.Content.ReadAsStringAsync();
                        result = JsonConvert.DeserializeObject <T>(responseBody.Result);
                        result.OperationSuccess = true;
                    }

            return(result);
        }
        /// <summary>
        /// Generic method used to send a request to the Api
        /// </summary>
        /// <param name="requestUri">Request Uri</param>
        /// <param name="requestMessage">Request Message</param>
        /// <returns>Request response message</returns>
        private async Task <T> Post <T>(string requestUri, object requestMessage) where T : BaseResponseMessage, new()
        {
            T result;

            try
            {
                var jsonObject = JsonConvert.SerializeObject(requestMessage);

                using (var httpClient = new BaseHttpClient()
                {
                    Timeout = _configuration.Timeout
                })
                    using (var content = new BaseHttpContent(jsonObject))
                    {
                        HttpResponseMessage response = await httpClient.PostAsync(requestUri, content);

                        if (response.IsSuccessStatusCode)
                        {
                            string responseBody = await response.Content.ReadAsStringAsync();

                            result = JsonConvert.DeserializeObject <T>(responseBody);
                            result.OperationSuccess = true;
                        }
                        else
                        {
                            result = new T();
                            result.ErrorMessage = string.Format("StatusCode: {0}, ReasonPhrase: '{1}'", (int)response.StatusCode, response.ReasonPhrase);
                        }
                    }
            }
            catch (Exception ex)
            {
                result = new T();
                result.ErrorMessage = ex.Message;
            }

            return(result);
        }
Exemple #4
0
        /// <summary>
        /// Get authentication token using user Login and Password
        /// </summary>
        /// <returns></returns>
        private async Task GetAuthTokenAsync(string userName, string userPassword, CancellationToken cancellationToken)
        {
            if (!string.IsNullOrEmpty(_authToken))
            {
                return;
            }

            var body = new AuthenticationRequest
            {
                ClientId     = "other.conta",
                ClientSecret = "yQPeLzoHuJzlMMSAjC-LgNUJdUecx8XO",
                GrantType    = "password",
                Login        = userName,
                Password     = userPassword
            };

            var loginUrl = await _endpoints.GetLoginUrlAsync(cancellationToken);

            var response = await _httpClient.PostAsync <AuthenticationRequest, AuthenticationResponse>(loginUrl, body, cancellationToken);

            FillAuthToken(response);

            FillAuthenticatedUrls(response);
        }