/// <summary>
        /// Prevents a default instance of the <see cref="AuthService"/> class from being created.
        /// </summary>
        private AuthService()
        {
            var authSettings = CommonService.GetQBAuthSettings();

            authManager = new AuthManager(authSettings);
            token       = GetTokenFormDb();
        }
Exemple #2
0
 /// <summary>
 /// Sets the token.
 /// </summary>
 /// <param name="token">The token.</param>
 /// <exception cref="System.ArgumentNullException">token</exception>
 public void SetToken(TokenBaerer token)
 {
     if (token == null)
     {
         throw new ArgumentNullException("token");
     }
     _settings.Token = token;
 }
 /// <summary>
 /// Gets the authentication token.
 /// </summary>
 /// <returns></returns>
 public TokenBaerer GetAuthToken()
 {
     if (token == null)
     {
         token = GetTokenFormDb();
     }
     return(token);
 }
        /// <summary>
        /// Gets the qb service settings.
        /// </summary>
        /// <param name="token">The token.</param>
        /// <returns></returns>
        public static ServiceSettings GetQBServiceSettings(TokenBaerer token)
        {
            var serviceSettings = new ServiceSettings();

            serviceSettings.BaseUrl = QBSettings.Settings.QBServiceContextBaseUrl;
            serviceSettings.Token   = token;

            return(serviceSettings);
        }
        /// <summary>
        /// Gets the token form database.
        /// </summary>
        /// <returns></returns>
        /// <exception cref="System.Exception">No existing auth token in DB</exception>
        private TokenBaerer GetTokenFormDb()
        {
            using (RavenManager rm = RavenManager.Instance)
            {
                token = rm.GetLatestToken();

                //if (token == null)
                //    throw new Exception("No existing auth token in DB");
            }
            return(token);
        }
 /// <summary>
 /// Stores the token.
 /// </summary>
 /// <param name="token">The token.</param>
 /// <returns></returns>
 /// <exception cref="System.Exception">Error in StoreToken</exception>
 public string StoreToken(TokenBaerer token)
 {
     try
     {
         using (var session = SessionFactory.Instance.GetSession())
         {
             session.Store(token);
             session.SaveChanges();
             return(session.Advanced.GetDocumentId(token));
         }
     }
     catch (Exception exception)
     {
         throw new Exception("Error in StoreToken", exception);
     }
 }
Exemple #7
0
        public async Task <ActionResult> Home(string state, string code, string realmId)
        {
            QBServiceCreator creator = new QBServiceCreator();

            using (var authManager = creator.GetService <IAuthService>())
            {
                TokenBaerer token = await authManager.GetNewTokenAsync(state, code, realmId);

                realm         = realmId;
                token.RealmId = realmId;
                accessToken   = token.AccessToken;
                return
                    (View(new AuthModel {
                    Tokens = token
                }));
            }
        }
        /// <summary>
        /// Stores the token asynchronous.
        /// </summary>
        /// <param name="token">The token.</param>
        /// <returns></returns>
        /// <exception cref="System.Exception">Error in StoreToken</exception>
        public async Task <string> StoreTokenAsync(TokenBaerer token)
        {
            try
            {
                using (var session = SessionFactory.Instance.GetSessionAsync())
                {
                    await session.StoreAsync(token);

                    await session.SaveChangesAsync();

                    return(session.Advanced.GetDocumentId(token));
                }
            }
            catch (Exception exception)
            {
                throw new Exception("Error in StoreToken", exception);
            }
        }
Exemple #9
0
        public async Task <ActionResult> GetCompany()
        {
            ServiceSettings ss = new ServiceSettings();

            using (var manager = RavenManager.Instance)
            {
                TokenBaerer token = await manager.GetLatestTokenAsync();

                ss.Token = token;
            }

            ss.BaseUrl = "https://sandbox-quickbooks.api.intuit.com/";

            using (var sm = new ServiceManager(ss))
            {
                //var res = await sm.GetCompany();

                return(View());
            }
        }
 /// <summary>
 /// Updates the token.
 /// </summary>
 /// <param name="token">The token.</param>
 /// <exception cref="System.ArgumentNullException">token</exception>
 /// <exception cref="System.Exception">Error in UpdateToken</exception>
 public void UpdateToken(TokenBaerer token)
 {
     if (token == null)
     {
         throw new ArgumentNullException("token");
     }
     try
     {
         using (var session = SessionFactory.Instance.GetSession())
         {
             token.UpdatedDate = DateTime.UtcNow;
             session.Store(token);
             session.SaveChanges();
         }
     }
     catch (Exception exception)
     {
         throw new Exception("Error in UpdateToken", exception);
     }
 }
        /// <summary>
        /// Refreshes the token.
        /// </summary>
        /// <returns></returns>
        /// <exception cref="System.Exception">No existing auth token in DB</exception>
        public TokenBaerer RefreshToken()
        {
            using (RavenManager rm = RavenManager.Instance)
            {
                TokenBaerer oldToken = rm.GetLatestToken();
                if (oldToken == null)
                {
                    throw new Exception("No existing auth token in DB");
                }

                token = authManager.RefreshToken(oldToken.RefreshToken);

                token.Id          = oldToken.Id;
                token.RealmId     = oldToken.RealmId;
                token.ExpiaryDate = oldToken.ExpiaryDate;

                rm.UpdateToken(token);
                return(token);
            }
        }
        /// <summary>
        /// Updates the token.
        /// </summary>
        /// <param name="token">The token.</param>
        /// <returns></returns>
        /// <exception cref="System.ArgumentNullException">token</exception>
        /// <exception cref="System.Exception">Error in UpdateToken</exception>
        public async Task UpdateTokenAsync(TokenBaerer token)
        {
            if (token == null)
            {
                throw new ArgumentNullException("token");
            }
            try
            {
                using (var session = SessionFactory.Instance.GetSessionAsync())
                {
                    token.UpdatedDate = DateTime.UtcNow;
                    await session.StoreAsync(token);

                    await session.SaveChangesAsync();
                }
            }
            catch (Exception exception)
            {
                throw new Exception("Error in UpdateToken", exception);
            }
        }
        /// <summary>
        /// Gets the token form responce.
        /// </summary>
        /// <param name="responceText">The responce text.</param>
        /// <returns></returns>
        /// <exception cref="System.Exception"></exception>
        private TokenBaerer GetTokenFormResponce(string responceText)
        {
            TokenBaerer tokenBaerer = new TokenBaerer();
            Dictionary <string, string> refreshTokenDecoded = JsonConvert.DeserializeObject <Dictionary <string, string> >(responceText);

            if (refreshTokenDecoded.ContainsKey(Constants.ErrorKey))
            {
                throw new Exception(string.Concat("error", refreshTokenDecoded[Constants.ErrorKey]));
            }

            if (refreshTokenDecoded.ContainsKey(Constants.AccessTokenKey))
            {
                tokenBaerer.AccessToken = refreshTokenDecoded[Constants.AccessTokenKey];
            }

            if (refreshTokenDecoded.ContainsKey(Constants.RefershTokenKey))
            {
                tokenBaerer.RefreshToken = refreshTokenDecoded[Constants.RefershTokenKey];
            }

            return(tokenBaerer);
        }
        /// <summary>
        /// Gets the tokens.
        /// </summary>
        /// <param name="code">The code.</param>
        /// <param name="realmId">The realm identifier.</param>
        /// <returns></returns>
        /// <exception cref="System.ArgumentNullException">
        /// code
        /// or
        /// realmId
        /// </exception>
        /// <exception cref="System.Exception">
        /// OAuth get token error:
        /// </exception>
        public async Task <TokenBaerer> GetTokensAsync(string code, string realmId)
        {
            if (string.IsNullOrEmpty(code))
            {
                throw new ArgumentNullException("code");
            }
            if (string.IsNullOrEmpty(realmId))
            {
                throw new ArgumentNullException("realmId");
            }
            try
            {
                TokenBaerer tokenBaerer = new TokenBaerer();

                HttpWebRequest accesstokenRequest = await BuildAccessTokenRequestAsync(code);

                WebResponse accesstokenResponse = await accesstokenRequest.GetResponseAsync();

                using (HttpWebResponse response = (HttpWebResponse)accesstokenResponse)
                {
                    using (var tokenReader = new StreamReader(response.GetResponseStream()))
                    {
                        string responceText = await tokenReader.ReadToEndAsync();

                        Dictionary <string, string> accessTokenDecoded = JsonConvert.DeserializeObject <Dictionary <string, string> >(responceText);

                        if (accessTokenDecoded.ContainsKey(Constants.ErrorKey))
                        {
                            throw new Exception(string.Concat("error", accessTokenDecoded[Constants.ErrorKey]));
                        }

                        if (accessTokenDecoded.ContainsKey(Constants.IdTokenKey))
                        {
                            tokenBaerer.IdentityToken = accessTokenDecoded[Constants.IdTokenKey];
                        }

                        if (accessTokenDecoded.ContainsKey(Constants.AccessTokenKey))
                        {
                            tokenBaerer.AccessToken = accessTokenDecoded[Constants.AccessTokenKey];
                        }

                        if (accessTokenDecoded.ContainsKey(Constants.RefershTokenKey))
                        {
                            tokenBaerer.RefreshToken = accessTokenDecoded[Constants.RefershTokenKey];
                        }

                        // refresh token expired in 100 days
                        tokenBaerer.ExpiaryDate = DateTime.UtcNow.AddDays(90);

                        // updated date
                        tokenBaerer.UpdatedDate = DateTime.UtcNow;

                        // set realm
                        tokenBaerer.RealmId = realmId;
                    }
                }
                return(tokenBaerer);
            }
            catch (Exception exception)
            {
                throw new Exception("OAuth get token error: ", exception);
            }
        }