public static Token RefreshToken(AutoQuestraderEntities db, Token curToken) { IRestResponse <AuthTokenResponse> responseToken = null; try { var authClient = new RestClient(curToken.LoginServer); var request = new RestRequest("oauth2/token", Method.GET); request.AddParameter("grant_type", "refresh_token"); request.AddParameter("refresh_token", curToken.RefreshToken); responseToken = authClient.Execute <AuthTokenResponse>(request); curToken.ApiServer = responseToken.Data.api_server; curToken.AccessToken = responseToken.Data.access_token; curToken.ExpiresIn = responseToken.Data.expires_in; curToken.ExpiresDate = DateTimeOffset.UtcNow.AddSeconds(responseToken.Data.expires_in - 30); // create a 30 second buffer to account for network slowness curToken.RefreshToken = responseToken.Data.refresh_token; curToken.TokenType = responseToken.Data.token_type; db.SaveChanges(); return(curToken); } catch { Console.WriteLine("Error logging in: " + responseToken.Content); return(RefreshToken(db, PromptForNewRefreshToken(curToken))); } }
public static MailAddress GetAccountOwnerEmail() { AutoQuestraderEntities db = new AutoQuestraderEntities(); var ownerEmailSetting = db.SettingValues.FirstOrDefault(p => p.Name == SETTING_NAME_ACCOUNT_OWNER_EMAIL_ADDRESS); string ownerEmail; if (ownerEmailSetting == null || string.IsNullOrEmpty(ownerEmailSetting.Value)) { Console.WriteLine("Please enter the email address of the account owner:"); ownerEmail = Console.ReadLine().Trim(); db.SettingValues.Add(new SettingValue { Name = SETTING_NAME_ACCOUNT_OWNER_EMAIL_ADDRESS, Value = ownerEmail }); db.SaveChanges(); } else { ownerEmail = ownerEmailSetting.Value; } var ownerDisplayNameSetting = db.SettingValues.FirstOrDefault(p => p.Name == SETTING_NAME_ACCOUNT_OWNER_EMAIL_DISPLAY_NAME); string ownerDisplayName; if (ownerDisplayNameSetting == null || string.IsNullOrEmpty(ownerDisplayNameSetting.Value)) { Console.WriteLine("Please enter the display name for email address: " + ownerEmail); ownerDisplayName = Console.ReadLine().Trim(); db.SettingValues.Add(new SettingValue { Name = SETTING_NAME_ACCOUNT_OWNER_EMAIL_DISPLAY_NAME, Value = ownerDisplayName }); db.SaveChanges(); } else { ownerDisplayName = ownerDisplayNameSetting.Value; } return(new MailAddress(ownerEmail, ownerDisplayName)); }
public static void Initialize() { Console.SetWindowSize((int)(Console.LargestWindowWidth * 0.6), (int)(Console.LargestWindowHeight * 0.8)); Console.BufferHeight = Int16.MaxValue - 1; Console.WriteLine("Hi, welcome to AutoQuestrader."); Console.WriteLine("\nLogging in..."); db = new AutoQuestraderEntities(); var token = AuthHelper.RefreshToken(db, IS_LIVE); client = new RestClient(token.ApiServer); client.AddDefaultHeader("Authorization", token.TokenType + " " + token.AccessToken); Console.WriteLine("\nGetting User Information..."); var userResponse = client.Execute <User>(new RestRequest("v1/accounts", Method.GET)); curUser = userResponse.Data; }
public static Token RefreshToken(AutoQuestraderEntities db, bool live, bool forceRefresh = false) { var loginServer = live ? liveServer : practiceServer; var curToken = db.Tokens.FirstOrDefault(p => p.LoginServer == loginServer); if (curToken == null) { curToken = new Token(); curToken.LoginServer = loginServer; curToken.ExpiresDate = DateTimeOffset.MinValue; db.Tokens.Add(curToken); } if (curToken.ExpiresDate <= DateTimeOffset.UtcNow || forceRefresh) { return(RefreshToken(db, curToken)); } else { return(curToken); } }