Пример #1
0
        /// <summary>
        /// Open a website prompting to connect this computer/token to the streamer's twitch channel.
        /// </summary>
        public void StartUserReConnectThisComputer()
        {
            StatsHelixApi.EnsureInitialization();

            // If we don't have a token yet, we create one!
            var token = GetOrCreateUserToken();

            _Token = token;

            LastConnectAttempt = Stopwatch.StartNew();

            var urlPostfix = $"/login-streamer.html#hh_game_token={Uri.EscapeDataString(token)}&hh_game_name={Uri.EscapeDataString(StatsHelixApi.GameName)}";

            if (StatsHelixApi.API_BASEPATH.EndsWith("/"))
            {
                urlPostfix = urlPostfix.Substring(1);
            }

            // Yes, it's this easy!
            // We just shell_exec our https:// url to start the streamer's preferred browser
            Process.Start(new ProcessStartInfo()
            {
                FileName        = $"{StatsHelixApi.API_BASEPATH}{urlPostfix}",
                UseShellExecute = true,
            });

            // If everything goes well, IsThisComputerConnectedAsync will start returning ComputerConnectionState.Connected at some point :)
        }
Пример #2
0
        /// <summary>
        /// Is this computer/token connected to a Twitch-channel?
        /// </summary>
        /// <returns></returns>
        public async Task <ComputerConnectionState> IsThisComputerConnectedAsync()
        {
            StatsHelixApi.EnsureInitialization();

            string startToken;

            lock (AuthenticationLock)
            {
                startToken = Token;

                // If the user never expressed their desire to connect in any game, we aren't
                if (startToken == null)
                {
                    return(ComputerConnectionState.NotConnected);
                }

                if (AuthenticatedCache)
                {
                    return(ComputerConnectionState.Connected);
                }
            }

            string response;

            try
            {
                response = await StatsHelixApi.Http.GetStringAsync("/api/Auth/IsTokenConnected?token=" + Uri.EscapeDataString(startToken));
            }
            catch (Exception e)
            {
                StatsHelixApi.Log("Error while checking if computer is authenticated: " + e);
                return(ComputerConnectionState.ServerUnreachable);
            }

            lock (AuthenticationLock)
            {
                if (JsonConvert.DeserializeObject <bool>(response))
                {
                    AuthenticatedCache = true;
                    return(ComputerConnectionState.Connected);
                }
                else
                {
                    return(ComputerConnectionState.NotConnected);
                }
            }
        }