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); }
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); })); }
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"); }