Beispiel #1
0
        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);
        }
Beispiel #2
0
        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();
            }
        }