Пример #1
0
        /// <summary>
        /// Check whether the current is expired.
        /// If yes, refresh the token.
        /// </summary>
        /// <param name="handler"></param>
        /// <returns></returns>
        protected bool CheckTokenExpired(Handler handler)
        {
            if (IsAutoRefreshToken &&
                !string.IsNullOrEmpty(PublicAPIConfig.AutoAuthentication) &&
                PublicAPIConfig.AutoAuthentication.ToLower().Equals("true") && handler is XmlHandler)
            {
                XmlHandler xmlHandler  = handler as XmlHandler;
                XElement   codeElement = xmlHandler.XML.Descendants("Code") != null?
                                         xmlHandler.XML.Descendants("Code").FirstOrDefault() : null;

                if (codeElement != null && !string.IsNullOrEmpty(codeElement.Value))
                {
                    int code = 0;
                    if (int.TryParse(codeElement.Value, out code) && code == Enums.PublicAPIResultCode.AccessTokenExpired)
                    {
                        Log.Info("RefreshToken");
                        if (!authentication.RefreshToken()) // if refresh token operation failed, trying to request a new token
                        {
                            return(authentication.Authenticate());
                        }
                        else
                        {
                            return(true);
                        }
                    }
                }
            }
            return(false);
        }