示例#1
0
        public void Refresh()
        {
            Dispatcher.Invoke(() =>
            {
                accessCodeComboBox.Items.Clear();
                foreach (DiscordOAuth.AccessCodeKey code in DiscordOAuth.availableAccessCodes)
                {
                    accessCodeComboBox.Items.Add(code.username);
                }

                // if not logged in with discord
                if (!accessCodeComboBox.Items.Contains("Personal"))
                {
                    accessCodeComboBox.Items.Add("Personal");
                }

                accessCodeComboBox.SelectedIndex = DiscordOAuth.GetAccessCodeIndexByHash(SparkSettings.instance.accessCode);

                if (string.IsNullOrEmpty(DiscordOAuth.DiscordUsername))
                {
                    currentUsernameLabel.Content = "Not logged in";
                    discordLoginButton.Content   = "Discord Login";
                }
                else
                {
                    currentUsernameLabel.Content = "Logged in as:\n" + DiscordOAuth.DiscordUsername;
                    discordLoginButton.Content   = "Unlink Discord";
                }
            });
        }
示例#2
0
        private void StartButtonClicked(object sender, RoutedEventArgs e)
        {
            string username = accessCodeComboBox.SelectedValue.ToString();

            DiscordOAuth.SetAccessCodeByUsername(username);

            Close();
        }
示例#3
0
        private void DiscordLoginButtonClicked(object sender, RoutedEventArgs e)
        {
            if (string.IsNullOrEmpty(DiscordOAuth.DiscordUsername))
            {
                DiscordOAuth.OAuthLogin(force: true);
            }
            else
            {
                DiscordOAuth.Unlink();
            }

            Refresh();

            string username = accessCodeComboBox.SelectedValue.ToString();

            DiscordOAuth.SetAccessCodeByUsername(username);
        }
示例#4
0
        private void DiscordLoginButtonClicked(object sender, RoutedEventArgs e)
        {
            if (string.IsNullOrEmpty(DiscordOAuth.DiscordUsername))
            {
                DiscordOAuth.OAuthLogin(force: true);
            }
            else
            {
                DiscordOAuth.Unlink();
            }

            Refresh();

            string username = accessCodeComboBox.SelectedValue.ToString();

            Program.currentAccessCodeUsername = username;
            Settings.Default.accessCode       = SecretKeys.Hash(DiscordOAuth.AccessCode);
            Settings.Default.Save();
        }
示例#5
0
        private void ProcessContext(HttpListenerContext context)
        {
            // this is an oauth request
            if (context.Request.Url.AbsolutePath == "/oauth_login")
            {
                using (MemoryStream memStream = new MemoryStream())
                {
                    StreamWriter sw = new StreamWriter(memStream);
                    sw.WriteLine("<body onload=\"javascript: close(); \"></body>");
                    context.Response.ContentLength64 = sw.BaseStream.Length;
                    memStream.Flush();
                    memStream.CopyTo(context.Response.OutputStream);
                    context.Response.OutputStream.Flush();
                }
                context.Response.StatusCode = (int)HttpStatusCode.OK;
                context.Response.OutputStream.Close();
                Stop();

                DiscordOAuth.OAuthLoginResponse(HttpUtility.ParseQueryString(context.Request.Url.Query)["code"]);
            }

            //context.Response.ContentType = "application/json";
            //context.Response.AddHeader("Access-Control-Allow-Origin", "*");

            //string data = "{}";
            //if (Program.lastJSON != null && Program.lastJSON != "")     // TODO add locks to lastJSON
            //{
            //	data = Program.lastJSON;
            //}

            //byte[] buffer = System.Text.Encoding.ASCII.GetBytes(data);
            //context.Response.ContentLength64 = buffer.Length;
            //Stream output = context.Response.OutputStream;
            //output.Write(buffer, 0, buffer.Length);
            //output.Close();
        }