Exemple #1
0
        /// <summary>
        /// Update token by refresh token
        /// </summary>
        /// <param name="styles">Flags. See SendStyles enumeration</param>
        /// <returns></returns>
        private void UpdateToken(SendStyles styles)
        {
            var tokenResponse = GetOAuthTokenByRefreshAsync(Token.RefreshToken);

            if (styles.HasFlag(SendStyles.VerifyToken) && !VerifyToken(tokenResponse.AccessToken))
            {
                throw new Exception("Token signature is invalid");
            }

            Token = CreateToken(tokenResponse);
        }
Exemple #2
0
        /// <summary>
        /// Sends request to ESIA
        /// </summary>
        /// <param name="method">Http method</param>
        /// <param name="requestUri">Request uri</param>
        /// <param name="styles">Flags. See SendStyles enumeration</param>
        /// <param name="requestParams">Parameters</param>
        /// <param name="headers">Additional headers</param>
        /// <returns>Http response</returns>
        public virtual HttpResponseMessage SendAsync(HttpMethod method, string requestUri,
                                                     SendStyles styles = SendStyles.Normal,
                                                     IList <KeyValuePair <string, string> > requestParams = null, IList <KeyValuePair <string, string> > headers = null)
        {
            // Token must be set
            CheckTokenExist();

            // If SendStyles.CheckTokenTime flag is set, then check life time of token.
            // And if SendStyles.RefreshToken flag is set - update token by refresh token
            DateTime currentTime = DateTime.Now;

            if (styles.HasFlag(SendStyles.CheckTokenTime) && Token.BeginDate.HasValue && currentTime < Token.BeginDate)
            {
                throw new Exception("Token start time has not come");
            }

            if (styles.HasFlag(SendStyles.CheckTokenTime) && Token.EndDate.HasValue && currentTime > Token.EndDate)
            {
                if (styles.HasFlag(SendStyles.RefreshToken) && !String.IsNullOrEmpty(Token.RefreshToken))
                {
                    UpdateToken(styles);
                }
            }

            // Make request
            var response = InternalSendAsync(method, requestUri, requestParams, headers);

            // If SendStyles.RefreshToken flag is set and response status is unauthorized - update token by refresh token
            // and repeat request
            if (response.StatusCode == HttpStatusCode.Unauthorized && styles.HasFlag(SendStyles.RefreshToken))
            {
                UpdateToken(styles);

                response = InternalSendAsync(method, requestUri, requestParams, headers);
            }

            return(response);
        }