improved output format + add support for displaying in tables
This commit is contained in:
		
							
								
								
									
										124
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										124
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							@@ -167,6 +167,27 @@ version = "0.2.4"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5"
 | 
					checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[package]]
 | 
				
			||||||
 | 
					name = "csv"
 | 
				
			||||||
 | 
					version = "1.3.1"
 | 
				
			||||||
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
 | 
					checksum = "acdc4883a9c96732e4733212c01447ebd805833b7275a73ca3ee080fd77afdaf"
 | 
				
			||||||
 | 
					dependencies = [
 | 
				
			||||||
 | 
					 "csv-core",
 | 
				
			||||||
 | 
					 "itoa",
 | 
				
			||||||
 | 
					 "ryu",
 | 
				
			||||||
 | 
					 "serde",
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[package]]
 | 
				
			||||||
 | 
					name = "csv-core"
 | 
				
			||||||
 | 
					version = "0.1.12"
 | 
				
			||||||
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
 | 
					checksum = "7d02f3b0da4c6504f86e9cd789d8dbafab48c2321be74e9987593de5a894d93d"
 | 
				
			||||||
 | 
					dependencies = [
 | 
				
			||||||
 | 
					 "memchr",
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "darling"
 | 
					name = "darling"
 | 
				
			||||||
version = "0.20.11"
 | 
					version = "0.20.11"
 | 
				
			||||||
@@ -212,6 +233,27 @@ dependencies = [
 | 
				
			|||||||
 "serde",
 | 
					 "serde",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[package]]
 | 
				
			||||||
 | 
					name = "dirs-next"
 | 
				
			||||||
 | 
					version = "2.0.0"
 | 
				
			||||||
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
 | 
					checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1"
 | 
				
			||||||
 | 
					dependencies = [
 | 
				
			||||||
 | 
					 "cfg-if",
 | 
				
			||||||
 | 
					 "dirs-sys-next",
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[package]]
 | 
				
			||||||
 | 
					name = "dirs-sys-next"
 | 
				
			||||||
 | 
					version = "0.1.2"
 | 
				
			||||||
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
 | 
					checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d"
 | 
				
			||||||
 | 
					dependencies = [
 | 
				
			||||||
 | 
					 "libc",
 | 
				
			||||||
 | 
					 "redox_users",
 | 
				
			||||||
 | 
					 "winapi",
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "displaydoc"
 | 
					name = "displaydoc"
 | 
				
			||||||
version = "0.2.5"
 | 
					version = "0.2.5"
 | 
				
			||||||
@@ -229,6 +271,12 @@ version = "1.0.19"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005"
 | 
					checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[package]]
 | 
				
			||||||
 | 
					name = "encode_unicode"
 | 
				
			||||||
 | 
					version = "1.0.0"
 | 
				
			||||||
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
 | 
					checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "encoding_rs"
 | 
					name = "encoding_rs"
 | 
				
			||||||
version = "0.8.35"
 | 
					version = "0.8.35"
 | 
				
			||||||
@@ -403,12 +451,19 @@ dependencies = [
 | 
				
			|||||||
 "uuid",
 | 
					 "uuid",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[package]]
 | 
				
			||||||
 | 
					name = "hermit-abi"
 | 
				
			||||||
 | 
					version = "0.5.2"
 | 
				
			||||||
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
 | 
					checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "hetzner_rhai"
 | 
					name = "hetzner_rhai"
 | 
				
			||||||
version = "0.1.0"
 | 
					version = "0.1.0"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "hcloud",
 | 
					 "hcloud",
 | 
				
			||||||
 "ping",
 | 
					 "ping",
 | 
				
			||||||
 | 
					 "prettytable-rs",
 | 
				
			||||||
 "reqwest",
 | 
					 "reqwest",
 | 
				
			||||||
 "rhai",
 | 
					 "rhai",
 | 
				
			||||||
 "tokio",
 | 
					 "tokio",
 | 
				
			||||||
@@ -733,6 +788,17 @@ dependencies = [
 | 
				
			|||||||
 "serde",
 | 
					 "serde",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[package]]
 | 
				
			||||||
 | 
					name = "is-terminal"
 | 
				
			||||||
 | 
					version = "0.4.16"
 | 
				
			||||||
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
 | 
					checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9"
 | 
				
			||||||
 | 
					dependencies = [
 | 
				
			||||||
 | 
					 "hermit-abi",
 | 
				
			||||||
 | 
					 "libc",
 | 
				
			||||||
 | 
					 "windows-sys 0.59.0",
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "itoa"
 | 
					name = "itoa"
 | 
				
			||||||
version = "1.0.15"
 | 
					version = "1.0.15"
 | 
				
			||||||
@@ -749,12 +815,28 @@ dependencies = [
 | 
				
			|||||||
 "wasm-bindgen",
 | 
					 "wasm-bindgen",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[package]]
 | 
				
			||||||
 | 
					name = "lazy_static"
 | 
				
			||||||
 | 
					version = "1.5.0"
 | 
				
			||||||
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
 | 
					checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "libc"
 | 
					name = "libc"
 | 
				
			||||||
version = "0.2.174"
 | 
					version = "0.2.174"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776"
 | 
					checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[package]]
 | 
				
			||||||
 | 
					name = "libredox"
 | 
				
			||||||
 | 
					version = "0.1.4"
 | 
				
			||||||
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
 | 
					checksum = "1580801010e535496706ba011c15f8532df6b42297d2e471fec38ceadd8c0638"
 | 
				
			||||||
 | 
					dependencies = [
 | 
				
			||||||
 | 
					 "bitflags",
 | 
				
			||||||
 | 
					 "libc",
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "linux-raw-sys"
 | 
					name = "linux-raw-sys"
 | 
				
			||||||
version = "0.9.4"
 | 
					version = "0.9.4"
 | 
				
			||||||
@@ -1016,6 +1098,20 @@ dependencies = [
 | 
				
			|||||||
 "zerocopy",
 | 
					 "zerocopy",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[package]]
 | 
				
			||||||
 | 
					name = "prettytable-rs"
 | 
				
			||||||
 | 
					version = "0.10.0"
 | 
				
			||||||
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
 | 
					checksum = "eea25e07510aa6ab6547308ebe3c036016d162b8da920dbb079e3ba8acf3d95a"
 | 
				
			||||||
 | 
					dependencies = [
 | 
				
			||||||
 | 
					 "csv",
 | 
				
			||||||
 | 
					 "encode_unicode",
 | 
				
			||||||
 | 
					 "is-terminal",
 | 
				
			||||||
 | 
					 "lazy_static",
 | 
				
			||||||
 | 
					 "term",
 | 
				
			||||||
 | 
					 "unicode-width",
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "proc-macro2"
 | 
					name = "proc-macro2"
 | 
				
			||||||
version = "1.0.95"
 | 
					version = "1.0.95"
 | 
				
			||||||
@@ -1079,6 +1175,17 @@ dependencies = [
 | 
				
			|||||||
 "bitflags",
 | 
					 "bitflags",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[package]]
 | 
				
			||||||
 | 
					name = "redox_users"
 | 
				
			||||||
 | 
					version = "0.4.6"
 | 
				
			||||||
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
 | 
					checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43"
 | 
				
			||||||
 | 
					dependencies = [
 | 
				
			||||||
 | 
					 "getrandom 0.2.16",
 | 
				
			||||||
 | 
					 "libredox",
 | 
				
			||||||
 | 
					 "thiserror",
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "ref-cast"
 | 
					name = "ref-cast"
 | 
				
			||||||
version = "1.0.24"
 | 
					version = "1.0.24"
 | 
				
			||||||
@@ -1539,6 +1646,17 @@ dependencies = [
 | 
				
			|||||||
 "windows-sys 0.59.0",
 | 
					 "windows-sys 0.59.0",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[package]]
 | 
				
			||||||
 | 
					name = "term"
 | 
				
			||||||
 | 
					version = "0.7.0"
 | 
				
			||||||
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
 | 
					checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f"
 | 
				
			||||||
 | 
					dependencies = [
 | 
				
			||||||
 | 
					 "dirs-next",
 | 
				
			||||||
 | 
					 "rustversion",
 | 
				
			||||||
 | 
					 "winapi",
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "thin-vec"
 | 
					name = "thin-vec"
 | 
				
			||||||
version = "0.2.14"
 | 
					version = "0.2.14"
 | 
				
			||||||
@@ -1761,6 +1879,12 @@ version = "1.0.18"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
 | 
					checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[package]]
 | 
				
			||||||
 | 
					name = "unicode-width"
 | 
				
			||||||
 | 
					version = "0.1.14"
 | 
				
			||||||
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
 | 
					checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "untrusted"
 | 
					name = "untrusted"
 | 
				
			||||||
version = "0.9.0"
 | 
					version = "0.9.0"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,3 +10,4 @@ rhai = { version = "1.22.2", features = ["sync"] }
 | 
				
			|||||||
tokio = { version = "1.46.1", features = ["full"] }
 | 
					tokio = { version = "1.46.1", features = ["full"] }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ping = "0.6.1"
 | 
					ping = "0.6.1"
 | 
				
			||||||
 | 
					prettytable-rs = "0.10.0"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,9 +7,7 @@ try {
 | 
				
			|||||||
    if servers.len() == 0 {
 | 
					    if servers.len() == 0 {
 | 
				
			||||||
        print("No servers found.");
 | 
					        print("No servers found.");
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
        for server in servers {
 | 
					        print(servers.show_table());
 | 
				
			||||||
            print(`Server: ${server.name} (${server.id}), Status: ${server.status}`);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        let first_server = servers[0];
 | 
					        let first_server = servers[0];
 | 
				
			||||||
        print(`Getting details for server: ${first_server.name}`);
 | 
					        print(`Getting details for server: ${first_server.name}`);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,8 +2,8 @@ use crate::async_handler::Response;
 | 
				
			|||||||
use crate::async_handler::Request;
 | 
					use crate::async_handler::Request;
 | 
				
			||||||
use crate::hetzner_api::{HetznerClient, WrappedServer};
 | 
					use crate::hetzner_api::{HetznerClient, WrappedServer};
 | 
				
			||||||
use rhai::{Engine, EvalAltResult};
 | 
					use rhai::{Engine, EvalAltResult};
 | 
				
			||||||
use rhai::EvalContext;
 | 
					 | 
				
			||||||
use std::sync::{Arc, Mutex, mpsc::{Sender, Receiver}};
 | 
					use std::sync::{Arc, Mutex, mpsc::{Sender, Receiver}};
 | 
				
			||||||
 | 
					use prettytable::{Table, Row, Cell};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pub fn register_hetzner_api(
 | 
					pub fn register_hetzner_api(
 | 
				
			||||||
    engine: &mut Engine,
 | 
					    engine: &mut Engine,
 | 
				
			||||||
@@ -136,6 +136,28 @@ pub fn register_hetzner_api(
 | 
				
			|||||||
        .register_iterator::<Vec<WrappedServer>>()
 | 
					        .register_iterator::<Vec<WrappedServer>>()
 | 
				
			||||||
        .register_fn("len", |list: &mut Vec<WrappedServer>| list.len() as i64)
 | 
					        .register_fn("len", |list: &mut Vec<WrappedServer>| list.len() as i64)
 | 
				
			||||||
        .register_indexer_get(|list: &mut Vec<WrappedServer>, index: i64| list[index as usize].clone())
 | 
					        .register_indexer_get(|list: &mut Vec<WrappedServer>, index: i64| list[index as usize].clone())
 | 
				
			||||||
 | 
					        .register_fn(
 | 
				
			||||||
 | 
					            "show_table",
 | 
				
			||||||
 | 
					            |servers: &mut Vec<WrappedServer>| -> Result<String, Box<EvalAltResult>> {
 | 
				
			||||||
 | 
					                let mut table = Table::new();
 | 
				
			||||||
 | 
					                table.set_titles(Row::new(vec![Cell::new("Server List").style_spec("c")]));
 | 
				
			||||||
 | 
					                table.add_row(Row::new(vec![
 | 
				
			||||||
 | 
					                    Cell::new("ID"),
 | 
				
			||||||
 | 
					                    Cell::new("Name"),
 | 
				
			||||||
 | 
					                    Cell::new("Status"),
 | 
				
			||||||
 | 
					                    Cell::new("Public IPv4"),
 | 
				
			||||||
 | 
					                ]));
 | 
				
			||||||
 | 
					                for server in servers {
 | 
				
			||||||
 | 
					                    table.add_row(Row::new(vec![
 | 
				
			||||||
 | 
					                        Cell::new(&server.0.id.to_string()),
 | 
				
			||||||
 | 
					                        Cell::new(&server.0.name),
 | 
				
			||||||
 | 
					                        Cell::new(&format!("{:?}", server.0.status)),
 | 
				
			||||||
 | 
					                        Cell::new(&server.0.public_net.ipv4.clone().unwrap().ip.to_string()),
 | 
				
			||||||
 | 
					                    ]));
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                Ok(table.to_string())
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
        .register_fn(
 | 
					        .register_fn(
 | 
				
			||||||
            "ping",
 | 
					            "ping",
 | 
				
			||||||
            move |server: &mut WrappedServer| -> Result<bool, Box<EvalAltResult>> {
 | 
					            move |server: &mut WrappedServer| -> Result<bool, Box<EvalAltResult>> {
 | 
				
			||||||
@@ -168,18 +190,52 @@ pub fn register_hetzner_api(
 | 
				
			|||||||
        .register_fn(
 | 
					        .register_fn(
 | 
				
			||||||
            "show_details",
 | 
					            "show_details",
 | 
				
			||||||
            |server: &mut WrappedServer| -> Result<String, Box<EvalAltResult>> {
 | 
					            |server: &mut WrappedServer| -> Result<String, Box<EvalAltResult>> {
 | 
				
			||||||
                let mut details = String::new();
 | 
					                let mut table = Table::new();
 | 
				
			||||||
                details.push_str(&format!("  ID: {}\n", server.0.id));
 | 
					                table.set_titles(Row::new(vec![
 | 
				
			||||||
                details.push_str(&format!("  Status: {:?}\n", server.0.status));
 | 
					                    Cell::new(&server.0.name).style_spec("c")
 | 
				
			||||||
                details.push_str(&format!("  Created: {}\n", server.0.created));
 | 
					                ]));
 | 
				
			||||||
                details.push_str(&format!("  IPv4: {}\n", server.0.public_net.ipv4.clone().unwrap().ip));
 | 
					                table.add_row(Row::new(vec![
 | 
				
			||||||
                details.push_str(&format!("  Type: {}\n", server.0.server_type.clone().name));
 | 
					                    Cell::new("ID"),
 | 
				
			||||||
                details.push_str(&format!("  Included Traffic: {} GB\n", server.0.included_traffic.unwrap_or(0) / 1024 / 1024 / 1024));
 | 
					                    Cell::new(&server.0.id.to_string()),
 | 
				
			||||||
                details.push_str(&format!("  Ingoing Traffic: {} MB\n", server.0.ingoing_traffic.unwrap_or(0) / 1024 / 1024));
 | 
					                ]));
 | 
				
			||||||
                details.push_str(&format!("  Outgoing Traffic: {} MB\n", server.0.outgoing_traffic.unwrap_or(0) / 1024 / 1024));
 | 
					                table.add_row(Row::new(vec![
 | 
				
			||||||
                details.push_str(&format!("  Primary Disk Size: {} GB\n", server.0.primary_disk_size));
 | 
					                    Cell::new("Status"),
 | 
				
			||||||
                details.push_str(&format!("  Rescue Enabled: {}\n", server.0.rescue_enabled));
 | 
					                    Cell::new(&format!("{:?}", server.0.status)),
 | 
				
			||||||
                Ok(details)
 | 
					                ]));
 | 
				
			||||||
 | 
					                table.add_row(Row::new(vec![
 | 
				
			||||||
 | 
					                    Cell::new("Created"),
 | 
				
			||||||
 | 
					                    Cell::new(&server.0.created),
 | 
				
			||||||
 | 
					                ]));
 | 
				
			||||||
 | 
					                table.add_row(Row::new(vec![
 | 
				
			||||||
 | 
					                    Cell::new("IPv4"),
 | 
				
			||||||
 | 
					                    Cell::new(&server.0.public_net.ipv4.clone().unwrap().ip.to_string()),
 | 
				
			||||||
 | 
					                ]));
 | 
				
			||||||
 | 
					                table.add_row(Row::new(vec![
 | 
				
			||||||
 | 
					                    Cell::new("Type"),
 | 
				
			||||||
 | 
					                    Cell::new(&server.0.server_type.name),
 | 
				
			||||||
 | 
					                ]));
 | 
				
			||||||
 | 
					                table.add_row(Row::new(vec![
 | 
				
			||||||
 | 
					                    Cell::new("Included Traffic"),
 | 
				
			||||||
 | 
					                    Cell::new(&format!("{} GB", server.0.included_traffic.unwrap_or(0) / 1024 / 1024 / 1024)),
 | 
				
			||||||
 | 
					                ]));
 | 
				
			||||||
 | 
					                table.add_row(Row::new(vec![
 | 
				
			||||||
 | 
					                    Cell::new("Ingoing Traffic"),
 | 
				
			||||||
 | 
					                    Cell::new(&format!("{} MB", server.0.ingoing_traffic.unwrap_or(0) / 1024 / 1024)),
 | 
				
			||||||
 | 
					                ]));
 | 
				
			||||||
 | 
					                table.add_row(Row::new(vec![
 | 
				
			||||||
 | 
					                    Cell::new("Outgoing Traffic"),
 | 
				
			||||||
 | 
					                    Cell::new(&format!("{} MB", server.0.outgoing_traffic.unwrap_or(0) / 1024 / 1024)),
 | 
				
			||||||
 | 
					                ]));
 | 
				
			||||||
 | 
					                table.add_row(Row::new(vec![
 | 
				
			||||||
 | 
					                    Cell::new("Primary Disk Size"),
 | 
				
			||||||
 | 
					                    Cell::new(&server.0.primary_disk_size.to_string()),
 | 
				
			||||||
 | 
					                ]));
 | 
				
			||||||
 | 
					                table.add_row(Row::new(vec![
 | 
				
			||||||
 | 
					                    Cell::new("Rescue Enabled"),
 | 
				
			||||||
 | 
					                    Cell::new(&server.0.rescue_enabled.to_string()),
 | 
				
			||||||
 | 
					                ]));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                Ok(table.to_string())
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user