Пример #1
0
 /// <summary>
 /// Validates a user's token and throws an exception if the user is not valid.
 /// </summary>
 /// <param name="sessionKey"></param>
 /// <returns></returns>
 private User ValidateToken(string sessionKey)
 {
     using (busUserToken busToken = CodePasteFactory.GetUserToken())
     {
         User user = busToken.GetUserFromToken(sessionKey);
         if (user == null)
         {
             this.ThrowException("Invalid session key. Please call GetSession() again to get a current session key");
         }
         return(user);
     }
 }
Пример #2
0
        /// <summary>
        /// Login method for update operations agains the API that returns a session
        /// key. Pass username/email and password.
        /// </summary>
        /// <param name="email"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        public string GetSessionKey(string email, string password)
        {
            User user = this.ValidateUser(email, password);

            using (busUserToken busToken = CodePasteFactory.GetUserToken())
            {
                string token = busToken.GetOrCreateToken(user.Id);
                if (token == null)
                {
                    this.ThrowException("Unable to get new user token. " + busToken.ErrorMessage);
                }
                // every 50 accesses clear out expired session keys
                Interlocked.Increment(ref SessionKeyCounter);
                if (SessionKeyCounter % 50 == 0)
                {
                    busToken.DeleteExpiredTokens();
                }
                return(token);
            }
        }