mirror of
https://github.com/transatoshi-mw/grin-explorer.git
synced 2025-10-22 05:43:42 +00:00
Generalize returned Error
This commit is contained in:
7
Cargo.lock
generated
7
Cargo.lock
generated
@@ -41,6 +41,12 @@ dependencies = [
|
|||||||
"libc",
|
"libc",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "anyhow"
|
||||||
|
version = "1.0.86"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "arrayvec"
|
name = "arrayvec"
|
||||||
version = "0.7.4"
|
version = "0.7.4"
|
||||||
@@ -732,6 +738,7 @@ dependencies = [
|
|||||||
name = "grin-explorer"
|
name = "grin-explorer"
|
||||||
version = "0.1.3"
|
version = "0.1.3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"anyhow",
|
||||||
"chrono",
|
"chrono",
|
||||||
"colored",
|
"colored",
|
||||||
"config",
|
"config",
|
||||||
|
@@ -19,6 +19,7 @@ config = "0.14.0"
|
|||||||
lazy_static = "1.4.0"
|
lazy_static = "1.4.0"
|
||||||
shellexpand = "3.1.0"
|
shellexpand = "3.1.0"
|
||||||
either = "1.11.0"
|
either = "1.11.0"
|
||||||
|
anyhow = "1.0.86"
|
||||||
|
|
||||||
[dependencies.reqwest]
|
[dependencies.reqwest]
|
||||||
version = "0.11.23"
|
version = "0.11.23"
|
||||||
|
@@ -53,7 +53,7 @@ lazy_static! {
|
|||||||
|
|
||||||
|
|
||||||
// RPC requests to grin node.
|
// RPC requests to grin node.
|
||||||
async fn call(method: &str, params: &str, rpc_type: &str) -> Result<Value, Error> {
|
async fn call(method: &str, params: &str, rpc_type: &str) -> Result<Value, anyhow::Error> {
|
||||||
let rpc_url;
|
let rpc_url;
|
||||||
let secret;
|
let secret;
|
||||||
|
|
||||||
@@ -74,14 +74,14 @@ async fn call(method: &str, params: &str, rpc_type: &str) -> Result<Value, Error
|
|||||||
.send()
|
.send()
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
let val: Value = serde_json::from_str(&result.text().await.unwrap()).unwrap();
|
let val: Value = serde_json::from_str(&result.text().await.unwrap())?;
|
||||||
|
|
||||||
Ok(val)
|
Ok(val)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Collecting: height, sync, node_ver, proto_ver.
|
// Collecting: height, sync, node_ver, proto_ver.
|
||||||
pub async fn get_status(dashboard: Arc<Mutex<Dashboard>>) -> Result<(), Error> {
|
pub async fn get_status(dashboard: Arc<Mutex<Dashboard>>) -> Result<(), anyhow::Error> {
|
||||||
let resp = call("get_status", "[]", "owner").await?;
|
let resp = call("get_status", "[]", "owner").await?;
|
||||||
|
|
||||||
let mut data = dashboard.lock().unwrap();
|
let mut data = dashboard.lock().unwrap();
|
||||||
@@ -101,7 +101,7 @@ pub async fn get_status(dashboard: Arc<Mutex<Dashboard>>) -> Result<(), Error> {
|
|||||||
|
|
||||||
|
|
||||||
// Collecting: txns, stem.
|
// Collecting: txns, stem.
|
||||||
pub async fn get_mempool(dashboard: Arc<Mutex<Dashboard>>) -> Result<(), Error> {
|
pub async fn get_mempool(dashboard: Arc<Mutex<Dashboard>>) -> Result<(), anyhow::Error> {
|
||||||
let resp1 = call("get_pool_size", "[]", "foreign").await?;
|
let resp1 = call("get_pool_size", "[]", "foreign").await?;
|
||||||
let resp2 = call("get_stempool_size", "[]", "foreign").await?;
|
let resp2 = call("get_stempool_size", "[]", "foreign").await?;
|
||||||
|
|
||||||
@@ -117,7 +117,8 @@ pub async fn get_mempool(dashboard: Arc<Mutex<Dashboard>>) -> Result<(), Error>
|
|||||||
|
|
||||||
|
|
||||||
// Collecting: inbound, outbound.
|
// Collecting: inbound, outbound.
|
||||||
pub async fn get_connected_peers(dashboard: Arc<Mutex<Dashboard>>) -> Result<(), Error> {
|
pub async fn get_connected_peers(dashboard: Arc<Mutex<Dashboard>>)
|
||||||
|
-> Result<(), anyhow::Error> {
|
||||||
let resp = call("get_connected_peers", "[]", "owner").await?;
|
let resp = call("get_connected_peers", "[]", "owner").await?;
|
||||||
|
|
||||||
let mut data = dashboard.lock().unwrap();
|
let mut data = dashboard.lock().unwrap();
|
||||||
@@ -216,7 +217,7 @@ pub fn get_disk_usage(dashboard: Arc<Mutex<Dashboard>>) -> Result<(), Error> {
|
|||||||
|
|
||||||
|
|
||||||
// Collecting: hashrate, difficulty, production cost, breakeven cost.
|
// Collecting: hashrate, difficulty, production cost, breakeven cost.
|
||||||
pub async fn get_mining_stats(dashboard: Arc<Mutex<Dashboard>>) -> Result<(), Error> {
|
pub async fn get_mining_stats(dashboard: Arc<Mutex<Dashboard>>) -> Result<(), anyhow::Error> {
|
||||||
let difficulty_window = 1440;
|
let difficulty_window = 1440;
|
||||||
let height = get_current_height(dashboard.clone());
|
let height = get_current_height(dashboard.clone());
|
||||||
|
|
||||||
@@ -265,7 +266,7 @@ pub async fn get_mining_stats(dashboard: Arc<Mutex<Dashboard>>) -> Result<(), Er
|
|||||||
|
|
||||||
// Collecting block data for recent blocks (block_list page).
|
// Collecting block data for recent blocks (block_list page).
|
||||||
pub async fn get_block_list_data(height: &String, block: &mut Block)
|
pub async fn get_block_list_data(height: &String, block: &mut Block)
|
||||||
-> Result<(), Error> {
|
-> Result<(), anyhow::Error> {
|
||||||
// Max block weight is 40000
|
// Max block weight is 40000
|
||||||
// One unit of weight is 32 bytes
|
// One unit of weight is 32 bytes
|
||||||
let kernel_weight = 3.0;
|
let kernel_weight = 3.0;
|
||||||
@@ -274,7 +275,7 @@ pub async fn get_block_list_data(height: &String, block: &mut Block)
|
|||||||
|
|
||||||
if height.is_empty() == false {
|
if height.is_empty() == false {
|
||||||
let params = &format!("[{}, null, null]", height)[..];
|
let params = &format!("[{}, null, null]", height)[..];
|
||||||
let resp = call("get_block", params, "foreign").await.unwrap();
|
let resp = call("get_block", params, "foreign").await?;
|
||||||
|
|
||||||
if resp["result"]["Ok"].is_null() == false {
|
if resp["result"]["Ok"].is_null() == false {
|
||||||
block.height = resp["result"]["Ok"]["header"]["height"].to_string();
|
block.height = resp["result"]["Ok"]["header"]["height"].to_string();
|
||||||
@@ -324,7 +325,7 @@ pub async fn get_block_list_data(height: &String, block: &mut Block)
|
|||||||
|
|
||||||
// Collecting block data.
|
// Collecting block data.
|
||||||
pub async fn get_block_data(height: &str, block: &mut Block)
|
pub async fn get_block_data(height: &str, block: &mut Block)
|
||||||
-> Result<(), Error> {
|
-> Result<(), anyhow::Error> {
|
||||||
// Max block weight is 40000
|
// Max block weight is 40000
|
||||||
// One unit of weight is 32 bytes
|
// One unit of weight is 32 bytes
|
||||||
let kernel_weight = 3.0;
|
let kernel_weight = 3.0;
|
||||||
@@ -380,10 +381,10 @@ pub async fn get_block_data(height: &str, block: &mut Block)
|
|||||||
|
|
||||||
// Get block height by hash.
|
// Get block height by hash.
|
||||||
pub async fn get_block_header(hash: &str, height: &mut String)
|
pub async fn get_block_header(hash: &str, height: &mut String)
|
||||||
-> Result<(), Error> {
|
-> Result<(), anyhow::Error> {
|
||||||
let params = &format!("[null, \"{}\", null]", hash)[..];
|
let params = &format!("[null, \"{}\", null]", hash)[..];
|
||||||
|
|
||||||
let resp = call("get_header", params, "foreign").await.unwrap();
|
let resp = call("get_header", params, "foreign").await?;
|
||||||
|
|
||||||
if resp["result"]["Ok"].is_null() == false {
|
if resp["result"]["Ok"].is_null() == false {
|
||||||
*height = resp["result"]["Ok"]["height"].to_string();
|
*height = resp["result"]["Ok"]["height"].to_string();
|
||||||
@@ -395,10 +396,10 @@ pub async fn get_block_header(hash: &str, height: &mut String)
|
|||||||
|
|
||||||
// Get kernel.
|
// Get kernel.
|
||||||
pub async fn get_kernel(kernel: &str, height: &mut String)
|
pub async fn get_kernel(kernel: &str, height: &mut String)
|
||||||
-> Result<(), Error> {
|
-> Result<(), anyhow::Error> {
|
||||||
let params = &format!("[\"{}\", null, null]", kernel)[..];
|
let params = &format!("[\"{}\", null, null]", kernel)[..];
|
||||||
|
|
||||||
let resp = call("get_kernel", params, "foreign").await.unwrap();
|
let resp = call("get_kernel", params, "foreign").await?;
|
||||||
|
|
||||||
if resp["result"]["Ok"].is_null() == false {
|
if resp["result"]["Ok"].is_null() == false {
|
||||||
*height = resp["result"]["Ok"]["height"].to_string();
|
*height = resp["result"]["Ok"]["height"].to_string();
|
||||||
@@ -410,11 +411,11 @@ pub async fn get_kernel(kernel: &str, height: &mut String)
|
|||||||
|
|
||||||
// Collecting block kernels for transactions stats.
|
// Collecting block kernels for transactions stats.
|
||||||
pub async fn get_block_kernels(height: &String, blocks: &mut Vec<Block>)
|
pub async fn get_block_kernels(height: &String, blocks: &mut Vec<Block>)
|
||||||
-> Result<(), Error> {
|
-> Result<(), anyhow::Error> {
|
||||||
if height.is_empty() == false {
|
if height.is_empty() == false {
|
||||||
let params = &format!("[{}, {}, 720, false]", height.parse::<u64>().unwrap() - 720,
|
let params = &format!("[{}, {}, 720, false]", height.parse::<u64>().unwrap() - 720,
|
||||||
height)[..];
|
height)[..];
|
||||||
let resp = call("get_blocks", params, "foreign").await.unwrap();
|
let resp = call("get_blocks", params, "foreign").await?;
|
||||||
|
|
||||||
for resp_block in resp["result"]["Ok"]["blocks"].as_array().unwrap() {
|
for resp_block in resp["result"]["Ok"]["blocks"].as_array().unwrap() {
|
||||||
let mut block = Block::new();
|
let mut block = Block::new();
|
||||||
@@ -528,11 +529,11 @@ pub async fn get_recent_blocks(dashboard: Arc<Mutex<Dashboard>>,
|
|||||||
|
|
||||||
// Collecting a specified list of blocks.
|
// Collecting a specified list of blocks.
|
||||||
pub async fn get_block_list_by_height(height: &str, blocks: &mut Vec<Block>,
|
pub async fn get_block_list_by_height(height: &str, blocks: &mut Vec<Block>,
|
||||||
latest_height: &mut u64) -> Result<(), Error> {
|
latest_height: &mut u64) -> Result<(), anyhow::Error> {
|
||||||
let mut i = 0;
|
let mut i = 0;
|
||||||
let height = height.to_string();
|
let height = height.to_string();
|
||||||
|
|
||||||
let resp = call("get_status", "[]", "owner").await.unwrap();
|
let resp = call("get_status", "[]", "owner").await?;
|
||||||
|
|
||||||
if resp != Value::Null {
|
if resp != Value::Null {
|
||||||
*latest_height = resp["result"]["Ok"]["tip"]["height"].to_string().parse::<u64>().unwrap();
|
*latest_height = resp["result"]["Ok"]["tip"]["height"].to_string().parse::<u64>().unwrap();
|
||||||
|
@@ -1,5 +1,4 @@
|
|||||||
use std::sync::{Arc, Mutex};
|
use std::sync::{Arc, Mutex};
|
||||||
use reqwest::Error;
|
|
||||||
|
|
||||||
use crate::data::Dashboard;
|
use crate::data::Dashboard;
|
||||||
use crate::data::Block;
|
use crate::data::Block;
|
||||||
@@ -10,7 +9,7 @@ use crate::requests;
|
|||||||
// Tokio Runtime Worker.
|
// Tokio Runtime Worker.
|
||||||
// Collecting all the data.
|
// Collecting all the data.
|
||||||
pub async fn run(dash: Arc<Mutex<Dashboard>>, blocks: Arc<Mutex<Vec<Block>>>,
|
pub async fn run(dash: Arc<Mutex<Dashboard>>, blocks: Arc<Mutex<Vec<Block>>>,
|
||||||
txns: Arc<Mutex<Transactions>>) -> Result<(), Error> {
|
txns: Arc<Mutex<Transactions>>) -> Result<(), anyhow::Error> {
|
||||||
let _ = requests::get_status(dash.clone()).await?;
|
let _ = requests::get_status(dash.clone()).await?;
|
||||||
let _ = requests::get_mempool(dash.clone()).await?;
|
let _ = requests::get_mempool(dash.clone()).await?;
|
||||||
let _ = requests::get_connected_peers(dash.clone()).await?;
|
let _ = requests::get_connected_peers(dash.clone()).await?;
|
||||||
|
Reference in New Issue
Block a user