public async Task FetchHealth(ProducerPOCO pro)
        {
            var jsonString = await Fetch.GetAsync(pro.Ip + Resources.ProducingSideChains);

            var succeeded = bool.Parse(JsonStringNavigator.GetDeeper(jsonString, "succeeded"));

            if (!succeeded)
            {
                pro.Producing = "Unconfigured";
            }
            var    response       = JsonStringNavigator.GetDeeper <ProducingSidechain[]>(jsonString, "response");
            double fractionHealth = 0;

            if (response.Length == 0)
            {
                pro.Health = 0; return;
            }
            foreach (var sc in response)
            {
                if (sc.TotalBlocksPerSettlement() == 0)
                {
                    fractionHealth += 1; continue;
                }
                fractionHealth += sc.blocksProducedInCurrentSettlement / (sc.TotalBlocksPerSettlement());
            }

            pro.Health = (fractionHealth / response.Length) * 100;
        }
        private async Task FetchSidechainConfiguration(DetailedRequesterPOCO req)
        {
            var jsonString = await Fetch.GetAsync(req.IP + Resources.SidechainConfiguration + req.Account);

            var response = JsonStringNavigator.GetDeeper(jsonString, "response");

            req.CreatedAt = JsonStringNavigator.GetDeeper(response, "candidature-phase-end-date");
            CalculateAverageBlock(response, req);
        }
Ejemplo n.º 3
0
 public async Task <Operation> ExecuteQuery(SandBoxBusinessModel bm)
 {
     return(await ExecuteAction(async() =>
     {
         var resp = await Fetch.PostAsync(bm.Ip + Resources.SignQuery, $"\"{bm.Query}\"");
         var signature = JsonStringNavigator.GetDeeper(resp, "response");
         var queryJson = await Fetch.PostAsync(bm.Ip + Resources.ExecQuery, signature);
     }));
 }
Ejemplo n.º 4
0
        public async Task TestJsonStringNavigatorDeeper()
        {
            String curDir     = Directory.GetCurrentDirectory() + "\\..\\..\\..\\test.json";
            String jsonString = await FileEx.ReadFileAsync(curDir);

            var bbt = JsonStringNavigator.GetDeeper(jsonString, "BBTValueAutoConfig");

            Assert.AreEqual("False", bbt);
        }
 public async Task <OperationResult <List <NetworkSidechain> > > GetNetworkSidechains(string id)
 {
     return(await ExecuteFunction(async() =>
     {
         var ip = await _cloudPlugin.GetNodeIP(id);
         var sidechains = await Fetch.GetAsync(ip + Resources.NetworkSidechains);// NetworkSidechainsstring has a network value of 0
         var jsonString = JsonStringNavigator.GetDeeper(sidechains, "response");
         return JsonConvert.DeserializeObject <List <NetworkSidechain> >(jsonString);
     }));
 }
        private void CalculateAverageBlock(string response, DetailedRequesterPOCO req)
        {
            double fullMax, fullMin, historyMax, historyMin, validatorMax, validatorMin;

            fullMax            = Double.Parse(JsonStringNavigator.GetDeeper(response, "max_payment_per_block_full_producers"));
            fullMin            = Double.Parse(JsonStringNavigator.GetDeeper(response, "min_payment_per_block_full_producers"));
            historyMax         = Double.Parse(JsonStringNavigator.GetDeeper(response, "max_payment_per_block_history_producers"));
            historyMin         = Double.Parse(JsonStringNavigator.GetDeeper(response, "min_payment_per_block_history_producers"));
            validatorMax       = Double.Parse(JsonStringNavigator.GetDeeper(response, "max_payment_per_block_validator_producers"));
            validatorMin       = Double.Parse(JsonStringNavigator.GetDeeper(response, "min_payment_per_block_validator_producers"));
            req.AvgBlockReward = Average(Average(fullMax, fullMin), Average(historyMax, historyMin), Average(validatorMax, validatorMin));
        }
 public async Task <Operation> DeleteBlackListed(string node, string toRemove)
 {
     return(await ExecuteAction(async() =>
     {
         var ip = await _cloudPlugin.GetNodeIP(node);
         var result = await Fetch.PostAsync(ip + Resources.RemoveReservedSeat + toRemove);
         var ResponseString = JsonStringNavigator.GetDeeper(result, "succeeded");
         if (!(ResponseString == "true"))
         {
             throw new Exception("Fetch Failed");
         }
     }));
 }
 public async Task <Operation> AddStake(string node, double amount)
 {
     return(await ExecuteAction(async() =>
     {
         var ip = await _cloudPlugin.GetNodeIP(node);
         var result = await Fetch.PostAsync(ip + Resources.AddStake + amount);
         var ResponseString = JsonStringNavigator.GetDeeper(result, "succeeded");
         if (!(ResponseString == "true"))
         {
             throw new Exception("Fetch Failed");
         }
     }));
 }
 public async Task <Operation> RemoveCandidature(string account)
 {
     return(await ExecuteAction(async() =>
     {
         var ip = await _cloudPlugin.GetNodeIP(account);
         var result = await Fetch.PostAsync(ip + Resources.RemoveCandidature + account);
         var ResponseString = JsonStringNavigator.GetDeeper(result, "succeeded");
         if (!(ResponseString == "true"))
         {
             throw new Exception("Remove Failed");
         }
     }));
 }
        public async Task <Operation> AddPermitted(RequesterAccessListBusinessModel vm)
        {
            return(await ExecuteAction(async() =>
            {
                var ip = await _cloudPlugin.GetNodeIP(vm.Account);

                var result = await Fetch.PostAsync(String.Format(ip + Resources.AddPermitted, vm.toAdd.account, vm.toAdd.PublicKey));
                var ResponseString = JsonStringNavigator.GetDeeper(result, "succeeded");
                if (!(ResponseString == "true"))
                {
                    throw new Exception("Fetch Failed");
                }
            }));
        }
        private async Task GetAvgMonthlyCost(RequesterPOCO req)
        {
            var jsonResp = await Fetch.GetAsync(req.Ip + Resources.SidechainConfiguration + req.Account);

            var succeded = bool.Parse(JsonStringNavigator.GetDeeper(jsonResp, "succeeded"));

            if (!succeded)
            {
                throw new Exception(JsonStringNavigator.GetDeeper(jsonResp, "exception"));
            }
            var response = JsonStringNavigator.GetDeeper(jsonResp, "response");
            var rc       = JsonConvert.DeserializeObject <NetworkSidechainConfigurations>(response);

            req.MonthlyCost = averageMonthlyCost(rc);
        }
 public async Task <OperationResult <RequesterAccessListBusinessModel> > GetRequesterAccess(string node)
 {
     return(await ExecuteFunction <RequesterAccessListBusinessModel>(async() =>
     {
         var ip = await _cloudPlugin.GetNodeIP(node);
         var businessModel = new RequesterAccessListBusinessModel()
         {
             Account = node, Ip = ip
         };
         var reservedJson = await Fetch.GetAsync(ip + Resources.ReservedSeats);
         var reservedResponseString = JsonStringNavigator.GetDeeper(reservedJson, "response");
         businessModel.Reserved = JsonStringNavigator.GetValue <List <NodeAccType> >(reservedResponseString);
         return businessModel;
     }));
 }
        public async Task <bool> CheckCandidate(String ip, String account)
        {
            var jsonString = await Fetch.GetAsync(ip + Resources.ProducingSideChains);

            var succeeded = bool.Parse(JsonStringNavigator.GetDeeper(jsonString, "succeeded"));

            if (!succeeded)
            {
                return(false);
            }
            var response = JsonStringNavigator.GetDeeper <ProducingSidechain[]>(jsonString, "response");
            var holder   = response.Where(node => node.name == account);

            return(holder.First().sidechainState == "Candidature" ? true : false);
        }
 public async Task <Operation> PauseSidechain(string node)
 {
     return(await ExecuteAction(async() =>
     {
         var ip = await _cloudPlugin.GetNodeIP(node);
         var result = await Fetch.PostAsync(ip + Resources.PauseSideChain);
         await _cloudPlugin.StopNodeAsync(node);
         await _nodeDAO.StopNodeAsync(node);
         var ResponseString = JsonStringNavigator.GetDeeper(result, "succeeded");
         if (!bool.Parse(ResponseString))
         {
             throw new Exception("Fetch Failed");
         }
     }));
 }
 public async Task <Operation> AddReservedSeat(RequesterAccessListBusinessModel vm)
 {
     return(await ExecuteAction(async() =>
     {
         var ip = await _cloudPlugin.GetNodeIP(vm.Account);
         var json = new List <NodeAccType>()
         {
             vm.toAdd
         };
         var body = JsonConvert.SerializeObject(json);
         var result = await Fetch.PostAsync(ip + Resources.AddReservedSeat, body);
         var ResponseString = JsonStringNavigator.GetDeeper(result, "succeeded");
         if (!(ResponseString == "true"))
         {
             throw new Exception("Fetch Failed");
         }
     }));
 }
        public async Task <List <string> > FetchProducingChains(String ip)
        {
            var jsonString = await Fetch.GetAsync(ip + Resources.ProducingSideChains);

            var succeeded = bool.Parse(JsonStringNavigator.GetDeeper(jsonString, "succeeded"));

            if (!succeeded)
            {
                return(null);
            }
            var           response  = JsonStringNavigator.GetDeeper <ProducingSidechain[]>(jsonString, "response");
            List <string> producing = new List <string>();

            foreach (var sc in response)
            {
                producing.Add(sc.name);
            }
            return(producing);
        }
        public async Task <OperationResult <RequesterStakeBusinessModel> > GetRequesterStake(string node)
        {
            return(await ExecuteFunction(async() =>
            {
                var ip = await _cloudPlugin.GetNodeIP(node);
                var jsonstring = await Fetch.GetAsync(ip + Resources.RequesterStake);
                var stake = JsonStringNavigator.GetDeeper(jsonstring, "response");

                var jsonString = await Fetch.GetAsync(ip + Resources.RequesterConfig);
                var json = JsonConvert.DeserializeObject <Dictionary <string, object> >(jsonString);
                var currencyBalance = JsonConvert.DeserializeObject <Dictionary <string, object> >(json["response"].ToString())["currencyBalance"];
                var balance = ((currencyBalance as JArray).First as JValue).Value.ToString();

                return new RequesterStakeBusinessModel()
                {
                    Account = node, Stake = stake, Balance = balance
                };
            }));
        }
        private async Task <bool> FetchRequesterState(RequesterPOCO req)
        {
            var jsonString = await Fetch.GetAsync(req.Ip + Resources.SidechainState + req.Account);

            var succeeded = bool.Parse(JsonStringNavigator.GetDeeper(jsonString, "succeeded"));

            if (!succeeded)
            {
                req.State = "No sidechain";
                return(false);
            }
            var response = JsonStringNavigator.GetDeeper(jsonString, "response");

            req.Stake = JsonStringNavigator.GetDeeper(response, "currentRequesterStake");
            var inProduction = bool.Parse(JsonStringNavigator.GetDeeper(response, "inProduction"));

            req.State = inProduction ? "ON" : "OFF";

            return(true);
        }
        private async Task <bool> FetchSidechainState(DetailedRequesterPOCO req)
        {
            var jsonString = await Fetch.GetAsync(req.IP + Resources.SidechainState + req.Account);

            var succeeded = bool.Parse(JsonStringNavigator.GetDeeper(jsonString, "succeeded"));

            if (!succeeded)
            {
                req.State = "No sidechain";
                return(false);
            }
            var response = JsonStringNavigator.GetDeeper(jsonString, "response");
            var scState  = JsonStringNavigator.GetValue <SidechainState>(response);

            req.InProduction  = scState.inProduction;
            req.State         = scState.state;
            req.NeededWorkers = scState.historyProducersInfo.numberOfProducersRequired + scState.fullProducersInfo.numberOfProducersRequired + scState.validatorProducersInfo.numberOfProducersRequired;
            req.Working       = scState.historyProducersInfo.numberOfProducersInChain + scState.fullProducersInfo.numberOfProducersInChain + scState.validatorProducersInfo.numberOfProducersInChain;
            return(true);
        }
        public async Task <Operation> ClaimStake(string node)
        {
            return(await ExecuteAction(async() =>
            {
                var ip = await _cloudPlugin.GetNodeIP(node);
                var result = await Fetch.PostAsync(ip + Resources.ClaimStake);

                var ResponseString = JsonStringNavigator.GetDeeper(result, "succeeded");

                if (!(ResponseString == "true"))
                {
                    var ExceptionString = JsonStringNavigator.GetDeeper(result, "exception");
                    var ErrorString = JsonStringNavigator.GetDeeper(ExceptionString, "code");

                    if (ErrorString == "500")
                    {
                        throw new Exception("Sidechain still producing");
                    }
                }
            }));
        }
        public async Task <IActionResult> ExecuteQueryToRequester([FromBody] RequesterEndpointObject requesterEndpoint)
        {
            var signatureEndpoint = requesterEndpoint.EndPoint + "/api/Requester/SignQuery";
            var executionEndpoint = requesterEndpoint.EndPoint + "/api/Requester/ExecuteQuery";

            try
            {
                var signatureRequest  = HttpHelper.ComposeWebRequestPost(signatureEndpoint);
                var signatureResponse = await HttpHelper.CallWebRequestNoSSLVerification(signatureRequest, requesterEndpoint.Query);

                var response         = JsonStringNavigator.GetDeeper(signatureResponse, "response");
                var executionRequest = HttpHelper.ComposeWebRequestPost(executionEndpoint);
                var executionJson    = await Fetch.PostAsync(executionEndpoint, response);

                var items = JsonConvert.DeserializeObject <ExpandoObject>(executionJson);
                return(Ok(items));
            }
            catch (Exception e)
            {
                throw e;
            }
        }
        public async Task FetchProducing(ProducerPOCO pro)
        {
            var jsonString = await Fetch.GetAsync(pro.Ip + Resources.ProducingSideChains);

            var succeeded = bool.Parse(JsonStringNavigator.GetDeeper(jsonString, "succeeded"));

            if (!succeeded)
            {
                pro.Producing = "Unconfigured";
            }
            var response = JsonStringNavigator.GetDeeper <ProducingSidechain[]>(jsonString, "response");
            int working  = 0;

            foreach (var sc in response)
            {
                if (sc.sidechainState == "Production")
                {
                    working++;
                }
                pro.Warnings = +sc.warnings.Length;
            }
            pro.Producing = working + "/" + response.Length;
        }
        public async Task GetAllSidechains(DetailedProducerPOCO pro)
        {
            var result = await Fetch.GetAsync(pro.IP + Resources.AllSideChains);

            var response = JsonStringNavigator.GetDeeper(result, "response");
        }