/// <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); } }
/// <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); } }