protected override void CurrencyChanged() { if (Currs != null) { foreach (BKCurrency x in Currs.currencies) { if (x.symbol.ToLower() == Currency.ToLower()) { CurrentCurrency = x; break; } } ForceUpdateStats = true; } }
public override void Login(string Username, string Password, string twofa) { try { ClientHandlr = new HttpClientHandler { UseCookies = true, AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip, AllowAutoRedirect = true }; Client = new HttpClient(ClientHandlr) { BaseAddress = new Uri("https://betking.io/") }; Client.DefaultRequestHeaders.AcceptEncoding.Add(new System.Net.Http.Headers.StringWithQualityHeaderValue("gzip")); Client.DefaultRequestHeaders.AcceptEncoding.Add(new System.Net.Http.Headers.StringWithQualityHeaderValue("deflate")); cookies = new CookieContainer(); ClientHandlr.CookieContainer = cookies; Client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36"); string s1 = ""; HttpResponseMessage resp = Client.GetAsync("").Result; if (resp.IsSuccessStatusCode) { s1 = resp.Content.ReadAsStringAsync().Result; } else { if (resp.StatusCode == HttpStatusCode.ServiceUnavailable) { s1 = resp.Content.ReadAsStringAsync().Result; System.Threading.Tasks.Task.Factory.StartNew(() => { System.Windows.Forms.MessageBox.Show("betking.io has their cloudflare protection on HIGH\n\nThis will cause a slight delay in logging in. Please allow up to a minute."); }); if (!Cloudflare.doCFThing(s1, Client, ClientHandlr, 0, "betking.io")) { finishedlogin(false); return; } } else { } } resp = Client.GetAsync("").Result; s1 = resp.Content.ReadAsStringAsync().Result; s1 = s1.Substring(s1.IndexOf("window.settings")); s1 = s1.Substring(s1.IndexOf("\"csrfToken\":\"") + "\"csrfToken\":\"".Length); string csrf = s1.Substring(0, s1.IndexOf("\"")); Client.DefaultRequestHeaders.Add("csrf-token", csrf); List <KeyValuePair <string, string> > pairs = new List <KeyValuePair <string, string> >(); // pairs.Add(new KeyValuePair<string, string>("_csrf", csrf)); //pairs.Add(new KeyValuePair<string, string>("client_id", "0")); pairs.Add(new KeyValuePair <string, string>("fingerprint", "DiceBot-" + Process.GetCurrentProcess().Id)); pairs.Add(new KeyValuePair <string, string>("loginmethod", Username.Contains("@")?"email": "username")); pairs.Add(new KeyValuePair <string, string>("password", Password)); //pairs.Add(new KeyValuePair<string, string>("redirect_uri", "https://betking.io/bet")); pairs.Add(new KeyValuePair <string, string>("otp", twofa)); pairs.Add(new KeyValuePair <string, string>("rememberme", "false")); pairs.Add(new KeyValuePair <string, string>(Username.Contains("@") ? "email" : "username", Username)); FormUrlEncodedContent Content = new FormUrlEncodedContent(pairs); HttpResponseMessage RespMsg = Client.PostAsync("api/auth/login", Content).Result; string responseUri = RespMsg.RequestMessage.RequestUri.ToString(); string sEmitResponse = RespMsg.Content.ReadAsStringAsync().Result; if (!sEmitResponse.ToLower().Contains("error")) { BKAccount tmpAccount = json.JsonDeserialize <BKAccount>(sEmitResponse); this.username = Username; sEmitResponse = Client.GetStringAsync("api/wallet/currencies").Result; Currs = json.JsonDeserialize <bkGetCurrencies>(sEmitResponse); if (Currs == null) { Parent.DumpLog("Failed to get currencies", 0); finishedlogin(false); return; } foreach (BKCurrency x in Currs.currencies) { if (x.symbol.ToLower() == Currency.ToLower()) { CurrentCurrency = x; } } resp = Client.GetAsync("bet/dice").Result; s1 = resp.Content.ReadAsStringAsync().Result; s1 = s1.Substring(s1.IndexOf("window.settings")); s1 = s1.Substring(s1.IndexOf("\"csrfToken\":\"") + "\"csrfToken\":\"".Length); csrf = s1.Substring(0, s1.IndexOf("\"")); Client.DefaultRequestHeaders.Remove("csrf-token"); Client.DefaultRequestHeaders.Add("csrf-token", csrf); GetBalance(); GetStats(); string LoadState = Client.GetStringAsync("api/dice/load-state?clientSeed=" + R.Next(0, int.MaxValue) + "¤cy=0").Result; bkLoadSTate TmpState = json.JsonDeserialize <bkLoadSTate>(LoadState); nonce = TmpState.nonce; clientseed = TmpState.clientSeed; serverseedhash = TmpState.serverSeedHash; finishedlogin(true); return; } } catch (Exception e) { Parent.DumpLog(e.ToString(), 0); finishedlogin(false); return; } finishedlogin(false); }