mostro_client/parser/
common.rs1use chrono::DateTime;
2use comfy_table::presets::UTF8_FULL;
3use comfy_table::*;
4
5pub fn apply_status_color(cell: Cell, status: &str) -> Cell {
7 let status_lower = status.to_lowercase();
8
9 if status_lower.contains("init")
10 || status_lower.contains("pending")
11 || status_lower.contains("waiting")
12 {
13 cell.fg(Color::Yellow)
14 } else if status_lower.contains("active")
15 || status_lower.contains("released")
16 || status_lower.contains("settled")
17 || status_lower.contains("taken")
18 || status_lower.contains("success")
19 {
20 cell.fg(Color::Green)
21 } else if status_lower.contains("fiat") {
22 cell.fg(Color::Cyan)
23 } else if status_lower.contains("dispute")
24 || status_lower.contains("cancel")
25 || status_lower.contains("canceled")
26 {
27 cell.fg(Color::Red)
28 } else {
29 cell
30 }
31}
32
33pub fn apply_kind_color(cell: Cell, kind: &mostro_core::order::Kind) -> Cell {
35 match kind {
36 mostro_core::order::Kind::Buy => cell.fg(Color::Green),
37 mostro_core::order::Kind::Sell => cell.fg(Color::Red),
38 }
39}
40
41pub fn create_error_cell(message: &str) -> Cell {
43 Cell::new(message)
44 .fg(Color::Red)
45 .set_alignment(CellAlignment::Center)
46}
47
48pub fn create_standard_table() -> Table {
50 let mut table = Table::new();
51 table
52 .load_preset(UTF8_FULL)
53 .set_content_arrangement(ContentArrangement::Dynamic);
54 table
55}
56
57pub fn create_field_value_header() -> Vec<Cell> {
59 vec![
60 Cell::new("Field")
61 .add_attribute(Attribute::Bold)
62 .set_alignment(CellAlignment::Center),
63 Cell::new("Value")
64 .add_attribute(Attribute::Bold)
65 .set_alignment(CellAlignment::Center),
66 ]
67}
68
69pub fn create_centered_cell(content: &str, bold: bool) -> Cell {
71 let mut cell = Cell::new(content).set_alignment(CellAlignment::Center);
72 if bold {
73 cell = cell.add_attribute(Attribute::Bold);
74 }
75 cell
76}
77
78pub fn create_field_value_row(field: &str, value: &str) -> Row {
80 Row::from(vec![
81 Cell::new(field).set_alignment(CellAlignment::Center),
82 Cell::new(value).set_alignment(CellAlignment::Center),
83 ])
84}
85
86pub fn format_timestamp(timestamp: i64) -> String {
88 DateTime::from_timestamp(timestamp, 0)
89 .map(|dt| dt.format("%Y-%m-%d %H:%M:%S UTC").to_string())
90 .unwrap_or_else(|| "Invalid timestamp".to_string())
91}
92
93pub fn create_emoji_field_row(emoji: &str, field: &str, value: &str) -> Row {
95 Row::from(vec![
96 Cell::new(format!("{}{}", emoji, field)).set_alignment(CellAlignment::Center),
97 Cell::new(value).set_alignment(CellAlignment::Center),
98 ])
99}
100
101pub fn print_section_header(title: &str) {
103 println!("{}", title);
104 println!("═══════════════════════════════════════");
105}
106
107pub fn print_success_message(message: &str) {
109 println!("✅ {}", message);
110}
111
112pub fn print_info_message(message: &str) {
114 println!("💡 {}", message);
115}
116
117pub fn print_no_data_message(message: &str) {
119 println!("📭 {}", message);
120}
121
122pub fn print_key_value(emoji: &str, key: &str, value: &str) {
124 println!("{} {}: {}", emoji, key, value);
125}
126
127pub fn print_info_line(emoji: &str, message: &str) {
129 println!("{} {}", emoji, message);
130}
131
132pub fn print_order_info(
134 order_id: &str,
135 amount: i64,
136 fiat_code: &str,
137 premium: i64,
138 payment_method: &str,
139) {
140 println!("📋 Order ID: {}", order_id);
141 println!("💰 Amount: {} sats", amount);
142 println!("💱 Fiat Code: {}", fiat_code);
143 println!("📊 Premium: {}%", premium);
144 println!("💳 Payment Method: {}", payment_method);
145}
146
147pub fn print_order_status(status: &str) {
149 println!("📊 Status: {}", status);
150}
151
152pub fn print_amount_info(amount: i64) {
154 println!("💰 Amount: {} sats", amount);
155}
156
157pub fn print_required_amount(amount: i64) {
159 println!("💰 Required Amount: {} sats", amount);
160}
161
162pub fn print_fiat_code(fiat_code: &str) {
164 println!("💱 Fiat Code: {}", fiat_code);
165}
166
167pub fn print_premium(premium: i64) {
169 println!("📊 Premium: {}%", premium);
170}
171
172pub fn print_payment_method(payment_method: &str) {
174 println!("💳 Payment Method: {}", payment_method);
175}
176
177pub fn print_trade_index(trade_index: u64) {
179 println!("🔢 Last Trade Index: {}", trade_index);
180}
181
182pub fn print_order_count(count: usize) {
184 println!("📊 Found {} order(s):", count);
185}