feat: Now formats message responses as a table
This commit is contained in:
parent
388c26fdc8
commit
7ad1c9cdf9
2 changed files with 28 additions and 4 deletions
|
@ -1,5 +1,5 @@
|
||||||
[package]
|
[package]
|
||||||
name = "SousaCli"
|
name = "sousa_cli"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
|
@ -10,5 +10,7 @@ clap = { version = "4.0.29", features = ["derive"] }
|
||||||
confy = "0.5.1"
|
confy = "0.5.1"
|
||||||
serde = { version = "1.0.151", features = ["derive"] }
|
serde = { version = "1.0.151", features = ["derive"] }
|
||||||
serde_json = "1.0.91"
|
serde_json = "1.0.91"
|
||||||
|
table_print = "0.1.0"
|
||||||
|
termsize = "0.1.6"
|
||||||
tungstenite = "0.18.0"
|
tungstenite = "0.18.0"
|
||||||
url = "2.3.1"
|
url = "2.3.1"
|
||||||
|
|
28
src/main.rs
28
src/main.rs
|
@ -1,6 +1,8 @@
|
||||||
use clap::{Parser, ValueEnum};
|
use clap::{Parser, ValueEnum};
|
||||||
use message_types::{PartialTag, UIRequest};
|
use message_types::{PartialTag, ServerResponse, UIRequest};
|
||||||
use serde_json;
|
use serde_json;
|
||||||
|
use table_print::Table;
|
||||||
|
use termsize;
|
||||||
use tungstenite::{connect, Message};
|
use tungstenite::{connect, Message};
|
||||||
use url::Url;
|
use url::Url;
|
||||||
|
|
||||||
|
@ -46,7 +48,7 @@ struct CliArgs {
|
||||||
fn main() {
|
fn main() {
|
||||||
let cli = CliArgs::parse();
|
let cli = CliArgs::parse();
|
||||||
|
|
||||||
let (mut socket, resp) = connect(
|
let (mut socket, _resp) = connect(
|
||||||
Url::parse(format!("ws://{}:{}", cli.hostname.unwrap(), cli.port.unwrap()).as_str())
|
Url::parse(format!("ws://{}:{}", cli.hostname.unwrap(), cli.port.unwrap()).as_str())
|
||||||
.unwrap(),
|
.unwrap(),
|
||||||
)
|
)
|
||||||
|
@ -81,6 +83,26 @@ fn main() {
|
||||||
let msg = socket.read_message().expect("Error reading message");
|
let msg = socket.read_message().expect("Error reading message");
|
||||||
let resp: message_types::ServerResponse =
|
let resp: message_types::ServerResponse =
|
||||||
serde_json::from_str(msg.into_text().unwrap().as_str()).unwrap();
|
serde_json::from_str(msg.into_text().unwrap().as_str()).unwrap();
|
||||||
println!("recieved: {:?}\n{:?}", resp.message, resp.search_results);
|
resp.pretty_print();
|
||||||
|
//println!("recieved: {:?}\n{:?}", resp.message, resp.search_results);
|
||||||
socket.close(None).unwrap();
|
socket.close(None).unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl ServerResponse {
|
||||||
|
fn pretty_print(self: &Self) -> () {
|
||||||
|
let mut table = Table::new(vec![
|
||||||
|
"Title".to_string(),
|
||||||
|
"Artist".to_string(),
|
||||||
|
"Album".to_string(),
|
||||||
|
]);
|
||||||
|
for i in self.search_results.iter() {
|
||||||
|
table.insert_row(vec![i.title.clone(), i.artist.clone(), i.album.clone()]);
|
||||||
|
}
|
||||||
|
println!(
|
||||||
|
"{}",
|
||||||
|
table
|
||||||
|
.get_pretty(termsize::get().unwrap().cols as usize)
|
||||||
|
.unwrap()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue