public static async Task <bool> Authenticate(string successUrl = null, string errorUrl = null) { Log.Info("Authenticating with HSReplay.net..."); string url; try { url = Client.Value.GetAuthenticationUrl(_requiredScopes, Ports); } catch (Exception e) { Log.Error(e); return(false); } if (string.IsNullOrEmpty(url)) { Log.Error("Authentication failed, could not create callback listener"); return(false); } var callbackTask = Client.Value.ReceiveAuthenticationCallback(successUrl ?? SuccessUrl, errorUrl ?? ErrorUrl); if (!Helper.TryOpenUrl(url)) { ErrorManager.AddError("Could not open your browser.", "Please open the following url in your browser to continue:\n\n" + url, true); } Log.Info("Waiting for callback..."); var data = await callbackTask; if (data == null) { Log.Error("Authentication failed, received no data"); return(false); } Data.Value.Code = data.Code; Data.Value.RedirectUrl = data.RedirectUrl; Data.Value.TokenData = null; Log.Info("Authentication complete"); await UpdateToken(); Save(); Log.Info("Claiming upload token if necessary"); if (!Account.Instance.TokenClaimed.HasValue) { await ApiWrapper.UpdateUploadTokenStatus(); } if (Account.Instance.TokenClaimed == false) { await ClaimUploadToken(Account.Instance.UploadToken); } Authenticated?.Invoke(); return(true); }
public static async Task Logout() { Serializer.DeleteCacheFile(); Data.Value.Account = null; Data.Value.Code = null; Data.Value.RedirectUrl = null; Data.Value.TokenData = null; Data.Value.TokenDataCreatedAt = DateTime.MinValue; Data.Value.TwitchUsers = null; Save(); Account.Instance.Reset(); await ApiWrapper.UpdateUploadTokenStatus(); LoggedOut?.Invoke(); }
public static async Task UpdateAccount() { if (HSReplayNetOAuth.IsAuthenticatedForAnything()) { await HSReplayNetOAuth.UpdateAccountData(); if (string.IsNullOrEmpty(Account.Instance.UploadToken) || !Account.Instance.TokenClaimed.HasValue || (!HSReplayNetOAuth.AccountData?.UploadTokens.Contains(Account.Instance.UploadToken) ?? false)) { await ApiWrapper.UpdateUploadTokenStatus(); } if (Account.Instance.TokenClaimed == false && !string.IsNullOrEmpty(Account.Instance.UploadToken)) { await HSReplayNetOAuth.ClaimUploadToken(Account.Instance.UploadToken); } } else { ApiWrapper.UpdateUploadTokenStatus().Forget(); } }