コード例 #1
0
ファイル: AccountEdit.cs プロジェクト: DioExtreme/Tunetoon
        private void HandleAccount(ClashAccount account)
        {
            if (account.Authorized && account.Username == UsernameBox.Text && account.Password == PasswordBox.Text)
            {
                Edited(account, index);
                Close();
                return;
            }

            account.Username = UsernameBox.Text;
            account.Password = PasswordBox.Text;

            DoneButton.Text    = "Authorizing...";
            DoneButton.Enabled = false;

            var clashAuthorization = new ClashAuthorization();

            clashAuthorization.AddAccount(account);

            if (clashAuthorization.LastReason != 0)
            {
                DoneButton.Text    = "Done";
                DoneButton.Enabled = true;
                MessageBox.Show(clashAuthorization.LastMessage, "Server response", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            Edited(account, index);
            Close();
        }
コード例 #2
0
        // Everything below here is undocumented and taken
        // from the official launcher through memory dumps.
        // Therefore, routes may or may not break in the future.

        public void AddAccount(ClashAccount account)
        {
            string friendly = "Tunetoon-" + RandomString(16);
            var    data     = new Dictionary <string, string>();

            using (var request = new HttpRequestMessage(HttpMethod.Post, ClashBaseAddress + "/api/launcher/v1/register"))
            {
                data.Add("username", account.Username);
                data.Add("password", account.Password);
                // Friendly is a way of saying "Launcher nickname"
                // It also has to be unique compared to previous entries
                data.Add("friendly", friendly);

                request.Content = new FormUrlEncodedContent(data);

                var    response       = httpClient.SendAsync(request).Result;
                string responseString = response.Content.ReadAsStringAsync().Result;

                var authObject = JsonConvert.DeserializeObject <ClashAuthorizationResult>(responseString);

                if (authObject.Status)
                {
                    account.Authorized = true;
                    account.LoginToken = authObject.Token;
                }
                else
                {
                    account.Authorized = false;
                    account.LoginToken = null;
                    LastMessage        = authObject.Message;
                }
                LastReason = authObject.Reason;
            }
        }
コード例 #3
0
        // This requires an authenticated account to use
        // We just use the mirror URL directly
        // Provided for reference
        public void GetMetadata(ClashAccount account)
        {
            using (var request = new HttpRequestMessage(HttpMethod.Get, ClashBaseAddress + "/api/launcher/v1/metadata"))
            {
                request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", account.LoginToken);

                var    response       = httpClient.SendAsync(request).Result;
                string responseString = response.Content.ReadAsStringAsync().Result;
            }
        }
コード例 #4
0
        public void LoginAccount(ClashAccount account)
        {
            using (var request = new HttpRequestMessage(HttpMethod.Post, ClashBaseAddress + "/api/launcher/v1/login"))
            {
                request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", account.LoginToken);
                request.Headers.Add("x-realm", "production");

                var    response       = httpClient.SendAsync(request).Result;
                string responseString = response.Content.ReadAsStringAsync().Result;
                account.LoginResult = JsonConvert.DeserializeObject <ClashLoginResult>(responseString);
            }
        }
コード例 #5
0
ファイル: DataHandler.cs プロジェクト: DioExtreme/Tunetoon
        public void FindClashIngameToons(ClashAccount account)
        {
            if (account.Username == null)
            {
                return;
            }

            string usernameLowercase = account.Username.ToLower();

            if (!clashIngameToons.ContainsKey(usernameLowercase))
            {
                return;
            }

            var toons = clashIngameToons[usernameLowercase];

            foreach (var toon in toons)
            {
                if (!account.ClashIngameToons.ContainsKey(toon.Value))
                {
                    account.ClashIngameToons.Add(toon.Value, toon.Key);
                }
            }
        }