Пример #1
0
 void SetStats(WolfBetStats Stats)
 {
     try
     {
         PropertyInfo tmp = typeof(Dice).GetProperty(CurrentCurrency.ToLower());
         if (tmp != null)
         {
             WBStat stat = tmp.GetValue(Stats.dice) as WBStat;
             if (stat != null)
             {
                 this.Stats.Bets    = int.Parse(stat.total_bets);
                 this.Stats.Wins    = int.Parse(stat.win);
                 this.Stats.Losses  = int.Parse(stat.lose);
                 this.Stats.Wagered = decimal.Parse(stat.waggered, System.Globalization.NumberFormatInfo.InvariantInfo);
                 this.Stats.Profit  = decimal.Parse(stat.profit, System.Globalization.NumberFormatInfo.InvariantInfo);
             }
         }
     }
     catch
     {
         this.Stats.Bets    = 0;
         this.Stats.Wins    = 0;
         this.Stats.Losses  = 0;
         this.Stats.Wagered = 0;
         this.Stats.Profit  = 0;
     }
 }
Пример #2
0
        public CurrentCurrency ParseResponse(Stream stream)
        {
            var currentCourse = new CurrentCurrency();

            using (var xmlReader = XmlReader.Create(stream, new XmlReaderSettings()))
            {
                xmlReader.MoveToContent();
                currentCourse.Date = DateTime.Parse(xmlReader["Date"]);
                xmlReader.ReadStartElement("ValCurs");
                for (int i = 0; i < 34; ++i)
                {
                    xmlReader.ReadStartElement("Valute");
                    var currency = new Currency
                    {
                        NumCode  = xmlReader.ReadElementContentAsInt(),
                        CharCode = xmlReader.ReadElementContentAsString(),
                        Nominal  = xmlReader.ReadElementContentAsDouble(),
                        Name     = xmlReader.ReadElementContentAsString(),
                        Value    = xmlReader.ReadElementContentAsString()
                    };
                    currentCourse.Currencies.Add(currency);
                    xmlReader.ReadEndElement();
                }
                xmlReader.ReadEndElement();
            }

            return(currentCourse);
        }
Пример #3
0
        void ProcessBalance(string Res)
        {
            BEBalanceBase tmpResult = json.JsonDeserialize <BEBalanceBase>(Res);

            switch (CurrentCurrency.ToLower())
            {
            case "btc":
                Stats.Balance = tmpResult.user.balances.btc / 100000000m;
                Stats.Bets    = (int)tmpResult.user.stats.btc.bets;
                Stats.Wagered = tmpResult.user.stats.btc.wager / 100000000m;
                Stats.Profit  = tmpResult.user.stats.btc.profit / 100000000m;
                break;

            case "bxo":
                Stats.Balance = tmpResult.user.balances.bxo / 100000000m;
                Stats.Bets    = (int)tmpResult.user.stats.bxo.bets;
                Stats.Wagered = tmpResult.user.stats.bxo.wager / 100000000m;
                Stats.Profit  = tmpResult.user.stats.bxo.profit / 100000000m;
                break;

            case "clam":
                Stats.Balance = tmpResult.user.balances.clam / 100000000m;
                Stats.Bets    = (int)tmpResult.user.stats.clam.bets;
                Stats.Wagered = tmpResult.user.stats.clam.wager / 100000000m;
                Stats.Profit  = tmpResult.user.stats.clam.profit / 100000000m;
                break;

            case "doge":
                Stats.Balance = tmpResult.user.balances.doge / 100000000m;
                Stats.Bets    = (int)tmpResult.user.stats.doge.bets;
                Stats.Wagered = tmpResult.user.stats.doge.wager / 100000000m;
                Stats.Profit  = tmpResult.user.stats.doge.profit / 100000000m;
                break;

            case "eth":
                Stats.Balance = tmpResult.user.balances.eth / 100000000m;
                Stats.Bets    = (int)tmpResult.user.stats.eth.bets;
                Stats.Wagered = tmpResult.user.stats.eth.wager / 100000000m;
                Stats.Profit  = tmpResult.user.stats.eth.profit / 100000000m;
                break;

            case "flash":
                Stats.Balance = tmpResult.user.balances.flash / 100000000m;
                Stats.Bets    = (int)tmpResult.user.stats.flash.bets;
                Stats.Wagered = tmpResult.user.stats.flash.wager / 100000000m;
                Stats.Profit  = tmpResult.user.stats.flash.profit / 100000000m;
                break;

            case "ltc":
                Stats.Balance = tmpResult.user.balances.ltc / 100000000m;
                Stats.Bets    = (int)tmpResult.user.stats.ltc.bets;
                Stats.Wagered = tmpResult.user.stats.ltc.wager / 100000000m;
                Stats.Profit  = tmpResult.user.stats.ltc.profit / 100000000m;
                break;
            }
        }
Пример #4
0
 private string CreateHandlingFeeText(decimal handlingFee)
 {
     if (handlingFee > 0)
     {
         return(" + Handling Fee " + CurrentCurrency.FormatPrice(handlingFee));
     }
     else
     {
         return(String.Empty);
     }
 }
Пример #5
0
        public ViewResult List()
        {
            CurrentCurrency result = _currencyRepository.CurrentCurrency.FirstOrDefault(x => x.Date == DateTime.Now.Date.AddDays(-1));;

            if (result == null)
            {
                result = _courseService.GetCurrentCourse();
                _currencyRepository.Add(result);
            }

            return(View(result));
        }
Пример #6
0
        public string CurrentBalanceToString()
        {
            if (CurrentCurrency == CurrencyCodes.USD)
            {
                return($"{CurrentBalance:#,0.00} usd");
            }

            var    rate        = (decimal)_rateExtractor.GetLastRate(CurrentCurrency);
            string inUsdString = rate == 0 ? "не задан курс" : $"{CurrentBalance /rate:#,0.00} usd";

            if (CurrentCurrency == CurrencyCodes.BYR)
            {
                return($"{CurrentBalance:#,0} byr  ({inUsdString})");
            }
            return($"{CurrentBalance:#,0.00} {CurrentCurrency.ToString().ToLower()}  ({inUsdString})");
        }
Пример #7
0
    private void FormatForListItem(
        string shippingID,
        string name,
        decimal shippingCost,
        decimal handlingFee,
        out string text,
        out string value)
    {
        text = String.Format("{0} ({1}{2})",
                             Server.HtmlDecode(name),
                             CurrentCurrency.FormatPrice(shippingCost),
                             CreateHandlingFeeText(handlingFee));

        value = String.Format("{0}-{1}-{2}",
                              shippingID, shippingCost, handlingFee);
    }
Пример #8
0
        bool getbalance()
        {
            string         response   = Client.GetStringAsync("user").Result;
            WDUserResponse tmpBalance = json.JsonDeserialize <WDUserResponse>(response);

            if (tmpBalance.data != null)
            {
                PropertyInfo tmp = typeof(WDBalance).GetProperty(CurrentCurrency.ToLower());
                if (tmp != null)
                {
                    decimal balance = (decimal)tmp.GetValue(tmpBalance.data.balance);
                    Stats.Balance = balance;
                }
            }
            return(tmpBalance.status == "success");
        }
Пример #9
0
        public async ValueTask <RequestResult <Order> > AddOrder(Order dataModel)
        {
            var result = new RequestResult <Order>();

            try
            {
                string  path;
                decimal curCurrency = 1;
                switch (dataModel.City.Id)
                {
                case (int?)CityEnum.Kiev:
                    path        = "UAH";
                    curCurrency = await CurrentCurrency.GetCurrency(path);

                    break;

                case (int?)CityEnum.Minsk:
                    path        = "BYN";
                    curCurrency = await CurrentCurrency.GetCurrency(path);

                    break;
                }
                foreach (var item in dataModel.OrderDetails)
                {
                    item.LocalPrice /= curCurrency;
                }
                _orderStorage.TransactionStart();
                result.RequestData = await _orderStorage.AddOrder(dataModel);

                _orderStorage.TransactionCommit();
                result.IsOkay = true;
            }
            catch (Exception ex)
            {
                _orderStorage.TransactioRollBack();
                result.ExMessage = ex.Message;
            }
            return(result);
        }
Пример #10
0
        protected override void _UpdateStats()
        {
            string         sEmitResponse = Client.GetStringAsync("user/balances").Result;
            WolfBetProfile tmpProfile    = json.JsonDeserialize <WolfBetProfile>(sEmitResponse);

            if (tmpProfile.user != null)
            {
                //set balance here
                foreach (Balance x in tmpProfile.user.balances)
                {
                    if (x.currency.ToLower() == CurrentCurrency.ToLower())
                    {
                        Stats.Balance = decimal.Parse(x.amount, System.Globalization.NumberFormatInfo.InvariantInfo);
                    }
                }
                //get stats
                //set stats
                sEmitResponse = Client.GetStringAsync("user/stats/bets").Result;
                WolfBetStats tmpStats = json.JsonDeserialize <WolfBetStats>(sEmitResponse);
                SetStats(tmpStats);
            }
        }
Пример #11
0
        protected override void _Login(LoginParamValue[] LoginParams)
        {
            try
            {
                privkey   = LoginParams[0].Value;
                apiclient = new TcpClient();

                apiclient.Connect("api.yolodice.com", 4444);
                if (apiclient.Connected)
                {
                    sslStream = new SslStream(apiclient.GetStream());
                    sslStream.AuthenticateAsClient("api.yolodice.com");//, null, System.Security.Authentication.SslProtocols.Ssl2| System.Security.Authentication.SslProtocols.Ssl3| System.Security.Authentication.SslProtocols.Tls11|System.Security.Authentication.SslProtocols.Tls12, false);

                    string frstchallenge = string.Format(basestring, id++, "generate_auth_challenge", "");

                    sslStream.Write(Encoding.ASCII.GetBytes(frstchallenge));
                    int bytes = sslStream.Read(ReadBuffer, 0, 512);
                    challenge = Encoding.ASCII.GetString(ReadBuffer, 0, bytes);
                    YLChallenge tmp = null;
                    try
                    {
                        tmp = json.JsonDeserialize <YLChallenge>(challenge);
                    }
                    catch (Exception e)
                    {
                        callError("error: ", true, ErrorType.Other);
                        callLoginFinished(false);
                        return;
                    }
                    string address = "";
                    string message = "";
                    try
                    {
                        NBitcoin.Key tmpkey = NBitcoin.Key.Parse(privkey, NBitcoin.Network.Main);
                        address = tmpkey.ScriptPubKey.GetDestinationAddress(NBitcoin.Network.GetNetwork("Main")).ToString();
                        message = tmpkey.SignMessage(tmp.result);
                    }
                    catch (Exception e)
                    {
                        callError("API key format error. Are you using your Private key?", true, ErrorType.Other);
                        callLoginFinished(false);
                        return;
                    }
                    frstchallenge = string.Format(basestring, id++, "auth_by_address", ",\"params\":" + json.JsonSerializer <YLAuthSend>(new YLAuthSend {
                        address = address, signature = message
                    }));

                    sslStream.Write(Encoding.ASCII.GetBytes(frstchallenge));
                    bytes     = sslStream.Read(ReadBuffer, 0, 512);
                    challenge = Encoding.ASCII.GetString(ReadBuffer, 0, bytes);
                    YLOgin tmologin = null;
                    try
                    {
                        tmologin = json.JsonDeserialize <YLOgin>(challenge);
                    }
                    catch (Exception e)
                    {
                        callError("error: " + challenge, true, ErrorType.Other);
                        callLoginFinished(false);
                        return;
                    }

                    uid           = tmologin.result.id;
                    this.username = tmologin.result.name;
                    frstchallenge = string.Format(basestring, id++, "read_user_coin_data", ",\"params\":{\"selector\":{\"id\":\"" + uid + "_" + CurrentCurrency.ToLower() + "\"}}");
                    sslStream.Write(Encoding.ASCII.GetBytes(frstchallenge));
                    bytes     = sslStream.Read(ReadBuffer, 0, 512);
                    challenge = Encoding.ASCII.GetString(ReadBuffer, 0, bytes);
                    YLUserStats tmpstats = null;
                    try
                    {
                        tmpstats = json.JsonDeserialize <YLUserStats>(challenge).result;
                    }
                    catch (Exception e)
                    {
                        callError("error: " + challenge, true, ErrorType.Other);
                        callLoginFinished(false);
                        return;
                    }

                    if (tmpstats != null)
                    {
                        Stats.Balance = (decimal)tmpstats.balance / 100000000m;
                        Stats.Bets    = (int)tmpstats.bets;
                        Stats.Wins    = (int)tmpstats.wins;
                        Stats.Losses  = (int)tmpstats.losses;
                        Stats.Profit  = (decimal)tmpstats.profit / 100000000m;
                        Stats.Wagered = (decimal)tmpstats.wagered / 100000000m;
                        ispd          = true;
                        lastupdate    = DateTime.Now;
                        new Thread(new ThreadStart(BalanceThread)).Start();

                        new Thread(new ThreadStart(Beginreadthread)).Start();
                        Thread.Sleep(50);
                        callLoginFinished(true);

                        return;
                    }
                    //tmp2.ImportPrivKey(Password, "", false);
                    //string message = tmp2.SignMessage(username, tmp.result);
                    //string message = //FullSignatureTest(tmp.result, new AsymmetricCipherKeyPair("", ""));


                    /*ispd = true;
                     * new Thread(new ThreadStart(BalanceThread)).Start();*/
                }
            }
            catch (Exception e)
            {
                Logger.DumpLog(e);
            }
            callLoginFinished(false);
        }
Пример #12
0
        public void PlaceDiceBet(PlaceDiceBet BetDetails)
        {
            this.Guid = BetDetails.GUID;

            string bet = string.Format(System.Globalization.NumberFormatInfo.InvariantInfo, "{{\"attrs\":{0}}}",
                                       json.JsonSerializer <YLBetSend>(
                                           new YLBetSend {
                amount = (long)(BetDetails.Amount * 100000000), range = BetDetails.High ? "hi" : "lo", target = (int)(BetDetails.Chance * 10000), coin = CurrentCurrency.ToLower()
            }));

            Write("create_bet", bet);
        }
Пример #13
0
        void Auth()
        {
            inauth = true;
            try
            {
                apiclient.Close();
            }
            catch { }
            try
            {
                apiclient = new TcpClient();

                apiclient.Connect("api.yolodice.com", 4444);
                if (apiclient.Connected)
                {
                    sslStream = new SslStream(apiclient.GetStream());
                    sslStream.AuthenticateAsClient("https://api.yolodice.com");

                    string frstchallenge = string.Format(basestring, id++, "generate_auth_challenge", "");

                    sslStream.Write(Encoding.ASCII.GetBytes(frstchallenge));
                    int bytes = sslStream.Read(ReadBuffer, 0, 512);
                    challenge = Encoding.ASCII.GetString(ReadBuffer, 0, bytes);
                    YLChallenge tmp = null;
                    try
                    {
                        tmp = json.JsonDeserialize <YLChallenge>(challenge);
                    }
                    catch (Exception e)
                    {
                        Logger.DumpLog(e);
                        callError("error: " + challenge, true, ErrorType.Unknown);

                        /*finishedlogin(false);
                         * return;*/
                    }
                    NBitcoin.Key tmpkey  = NBitcoin.Key.Parse(privkey, NBitcoin.Network.Main);
                    string       address = tmpkey.ScriptPubKey.GetDestinationAddress(NBitcoin.Network.GetNetwork("Main")).ToString();
                    string       message = tmpkey.SignMessage(tmp.result);

                    frstchallenge = string.Format(basestring, id++, "auth_by_address", ",\"params\":" + json.JsonSerializer <YLAuthSend>(new YLAuthSend {
                        address = address, signature = message
                    }));

                    sslStream.Write(Encoding.ASCII.GetBytes(frstchallenge));
                    bytes     = sslStream.Read(ReadBuffer, 0, 512);
                    challenge = Encoding.ASCII.GetString(ReadBuffer, 0, bytes);
                    YLOgin tmologin = null;
                    try
                    {
                        tmologin = json.JsonDeserialize <YLOgin>(challenge);
                    }
                    catch (Exception e)
                    {
                        Logger.DumpLog(e);
                        callError("error: " + challenge, true, ErrorType.Unknown);

                        /*finishedlogin(false);
                         * return;*/
                    }

                    uid           = tmologin.result.id;
                    this.username = tmologin.result.name;
                    frstchallenge = string.Format(basestring, id++, "read_user_coin_data", ",\"params\":{\"selector\":{\"id\":\"" + uid + "_" + CurrentCurrency.ToLower() + "\"}}");
                    sslStream.Write(Encoding.ASCII.GetBytes(frstchallenge));
                    bytes     = sslStream.Read(ReadBuffer, 0, 512);
                    challenge = Encoding.ASCII.GetString(ReadBuffer, 0, bytes);
                    YLUserStats tmpstats = null;
                    try
                    {
                        tmpstats = json.JsonDeserialize <YLUserStats>(challenge).result;
                    }
                    catch (Exception e)
                    {
                        callError("error: " + challenge, true, ErrorType.Unknown);

                        /*finishedlogin(false);
                         * return;*/
                    }

                    if (tmpstats != null)
                    {
                        Stats.Balance = (decimal)tmpstats.balance / 100000000m;
                        Stats.Bets    = (int)tmpstats.bets;
                        Stats.Wins    = (int)tmpstats.wins;
                        Stats.Losses  = (int)tmpstats.losses;
                        Stats.Profit  = (decimal)tmpstats.profit / 100000000m;
                        Stats.Wagered = (decimal)tmpstats.wagered / 100000000m;
                        ispd          = true;
                        lastupdate    = DateTime.Now;
                        new Thread(new ThreadStart(BalanceThread)).Start();
                        new Thread(new ThreadStart(Beginreadthread)).Start();

                        inauth = false;

                        return;
                    }
                }
            }
            catch (Exception e)
            {
            }
            //finishedlogin(false);
            inauth = false;
        }
Пример #14
0
 void create_withdrawal(string response)
 {
     Write("read_user_coin_data", "{\"selector\":{\"id\":\"" + uid + "_" + CurrentCurrency.ToLower() + "\"}}");
 }
Пример #15
0
 protected override void _UpdateStats()
 {
     ForceUpdateStats = false;
     lastupdate       = DateTime.Now;
     Write("read_user_coin_data", "{\"selector\":{\"id\":\"" + uid + "_" + CurrentCurrency.ToLower() + "\"}}");
 }
Пример #16
0
        public void PlaceDiceBet(PlaceDiceBet BetDetails)
        {
            try
            {
                decimal amount = BetDetails.Amount;
                decimal chance = BetDetails.Chance;
                bool    High   = BetDetails.High;

                /*if (amount < 10000 && (DateTime.Now - Lastbet).TotalMilliseconds < 500)
                 * {
                 *  Thread.Sleep((int)(500.0 - (DateTime.Now - Lastbet).TotalMilliseconds));
                 * }*/
                decimal tmpchance = High ? MaxRoll - chance : chance;
                string  query     = "mutation{" + RolName + "(amount:" + amount.ToString("0.00000000", System.Globalization.NumberFormatInfo.InvariantInfo) + ", target:" + tmpchance.ToString("0.00", System.Globalization.NumberFormatInfo.InvariantInfo) + ",condition:" + (High ? "above" : "below") + ",currency:" + CurrentCurrency.ToLower() + ") { id nonce currency amount payout state { ... on " + GameName + " { result target condition } } createdAt serverSeed{seedHash seed nonce} clientSeed{seed} user{balances{available{amount currency}} statistic{game bets wins losses betAmount profit currency}}}}";
                //string query = "mutation {" + RolName + "(amount:" + amount.ToString("0.00000000", System.Globalization.NumberFormatInfo.InvariantInfo) + ", target:" + tmpchance.ToString("0.00", System.Globalization.NumberFormatInfo.InvariantInfo) + ",condition:" + (High ? "above" : "below") + ",currency:" + Currencies[Currency].ToLower() + ") { id iid nonce currency amount payout state { ... on " + GameName + " { result target condition } } createdAt serverSeed{seedHash seed nonce} clientSeed{seed} user{balances{available{amount currency}} statistic{game bets wins losses amount profit currency}}}}";
                //var primediceRoll = GQLClient.SendMutationAsync<dynamic>(new GraphQLRequest { Query = query }).Result;
                GraphQLResponse <RollDice> betresult = GQLClient.SendMutationAsync <RollDice>(new GraphQLRequest {
                    Query = query
                }).Result;

                RollDice tmp = betresult.Data.primediceRoll;

                Lastbet = DateTime.Now;
                try
                {
                    lastupdate = DateTime.Now;
                    foreach (Statistic x in tmp.user.statistic)
                    {
                        if (x.currency.ToLower() == Currencies[Currency].ToLower() && x.game == StatGameName)
                        {
                            this.Stats.Bets    = (int)x.bets;
                            this.Stats.Wins    = (int)x.wins;
                            this.Stats.Losses  = (int)x.losses;
                            this.Stats.Profit  = x.profit;
                            this.Stats.Wagered = x.amount;
                            break;
                        }
                    }
                    foreach (Balance x in tmp.user.balances)
                    {
                        if (x.available.currency.ToLower() == Currencies[Currency].ToLower())
                        {
                            this.Stats.Balance = x.available.amount;
                            break;
                        }
                    }
                    DiceBet tmpbet = tmp.ToBet();
                    tmpbet.IsWin = tmpbet.GetWin(this);
                    tmpbet.Guid  = BetDetails.GUID;
                    callBetFinished(tmpbet);
                    retrycount = 0;
                }
                catch (Exception e)
                {
                    Logger.DumpLog(e);
                    callNotify("Some kind of error happened. I don't really know graphql, so your guess as to what went wrong is as good as mine.");
                }
            }
            catch (Exception e2)
            {
                callNotify("Error occured while trying to bet, retrying in 30 seconds. Probably.");
                Logger.DumpLog(e2);
            }
        }
Пример #17
0
        void ProcessBalance(string Res)
        {
            BEBalanceBase tmpResult = json.JsonDeserialize <BEBalanceBase>(Res);

            if (LoginStarted)
            {
                LoginTimer.Enabled = false;
                LoginStarted       = false;
                callLoginFinished(true);
            }
            switch (CurrentCurrency.ToLower())
            {
            case "btc":
                Stats.Balance = tmpResult.user.balances.btc / 100000000m;
                Stats.Bets    = (int)tmpResult.user.stats.btc.bets;
                Stats.Wagered = tmpResult.user.stats.btc.wager / 100000000m;
                Stats.Profit  = tmpResult.user.stats.btc.profit / 100000000m;
                break;

            case "bxo":
                Stats.Balance = tmpResult.user.balances.bxo / 100000000m;
                Stats.Bets    = (int)tmpResult.user.stats.bxo.bets;
                Stats.Wagered = tmpResult.user.stats.bxo.wager / 100000000m;
                Stats.Profit  = tmpResult.user.stats.bxo.profit / 100000000m;
                break;

            case "clam":
                Stats.Balance = tmpResult.user.balances.clam / 100000000m;
                Stats.Bets    = (int)tmpResult.user.stats.clam.bets;
                Stats.Wagered = tmpResult.user.stats.clam.wager / 100000000m;
                Stats.Profit  = tmpResult.user.stats.clam.profit / 100000000m;
                break;

            case "doge":
                Stats.Balance = tmpResult.user.balances.doge / 100000000m;
                Stats.Bets    = (int)tmpResult.user.stats.doge.bets;
                Stats.Wagered = tmpResult.user.stats.doge.wager / 100000000m;
                Stats.Profit  = tmpResult.user.stats.doge.profit / 100000000m;
                break;

            case "eth":
                Stats.Balance = tmpResult.user.balances.eth / 100000000m;
                Stats.Bets    = (int)tmpResult.user.stats.eth.bets;
                Stats.Wagered = tmpResult.user.stats.eth.wager / 100000000m;
                Stats.Profit  = tmpResult.user.stats.eth.profit / 100000000m;
                break;

            case "flash":
                Stats.Balance = tmpResult.user.balances.flash / 100000000m;
                Stats.Bets    = (int)tmpResult.user.stats.flash.bets;
                Stats.Wagered = tmpResult.user.stats.flash.wager / 100000000m;
                Stats.Profit  = tmpResult.user.stats.flash.profit / 100000000m;
                break;

            case "ltc":
                Stats.Balance = tmpResult.user.balances.ltc / 100000000m;
                Stats.Bets    = (int)tmpResult.user.stats.ltc.bets;
                Stats.Wagered = tmpResult.user.stats.ltc.wager / 100000000m;
                Stats.Profit  = tmpResult.user.stats.ltc.profit / 100000000m;
                break;
            }
            callStatsUpdated(Stats);
        }
Пример #18
0
 protected override void _Login(LoginParamValue[] LoginParams)
 {
     ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
                                            | SecurityProtocolType.Tls11
                                            | SecurityProtocolType.Tls12;
     ClientHandlr = new HttpClientHandler {
         UseCookies = true, AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip
     };
     Client = new HttpClient(ClientHandlr)
     {
         BaseAddress = new Uri(URL + "/api/v1/")
     };
     Client.DefaultRequestHeaders.AcceptEncoding.Add(new System.Net.Http.Headers.StringWithQualityHeaderValue("gzip"));
     Client.DefaultRequestHeaders.AcceptEncoding.Add(new System.Net.Http.Headers.StringWithQualityHeaderValue("deflate"));
     Client.DefaultRequestHeaders.Add("UserAgent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36");
     Client.DefaultRequestHeaders.Add("Origin", "https://wolf.bet");
     Client.DefaultRequestHeaders.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9");
     try
     {
         string Password = LoginParams.First(m => m.Param?.Name?.ToLower() == "api key").Value;
         if (Password != null)
         {
             Client.DefaultRequestHeaders.Add("authorization", "Bearer " + Password);
         }
         string sEmitResponse = Client.GetStringAsync("user/balances").Result;
         try
         {
             WolfBetProfile tmpProfile = json.JsonDeserialize <WolfBetProfile>(sEmitResponse);
             if (tmpProfile.balances != null)
             {
                 //set balance here
                 foreach (Balance x in tmpProfile.balances)
                 {
                     if (x.currency.ToLower() == CurrentCurrency.ToLower())
                     {
                         Stats.Balance = decimal.Parse(x.amount, System.Globalization.NumberFormatInfo.InvariantInfo);
                     }
                 }
                 //get stats
                 //set stats
                 sEmitResponse = Client.GetStringAsync("user/stats/bets").Result;
                 WolfBetStats tmpStats = json.JsonDeserialize <WolfBetStats>(sEmitResponse);
                 SetStats(tmpStats);
                 ispd       = true;
                 lastupdate = DateTime.Now;
                 new Thread(new ThreadStart(GetBalanceThread)).Start();
                 this.callLoginFinished(true);
                 return;
             }
         }
         catch (Exception e)
         {
             Logger.DumpLog(e);
             Logger.DumpLog(sEmitResponse, 2);
             callError(sEmitResponse, false, ErrorType.Unknown);
             callNotify("Error: " + sEmitResponse);
         }
     }
     catch (Exception e)
     {
         Logger.DumpLog(e.ToString(), -1);
     }
     this.callLoginFinished(false);
 }