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