cli

Command-line interface for Radroots
git clone https://radroots.dev/git/cli.git
Log | Files | Refs | README | LICENSE

network.rs (1127B)


      1 use crate::runtime::config::RuntimeConfig;
      2 use crate::view::runtime::{RelayEntryView, RelayListView};
      3 
      4 pub fn relay_list(config: &RuntimeConfig) -> RelayListView {
      5     let relays = config
      6         .relay
      7         .urls
      8         .iter()
      9         .cloned()
     10         .map(|url| RelayEntryView {
     11             url,
     12             read: true,
     13             write: true,
     14         })
     15         .collect::<Vec<_>>();
     16 
     17     let state = if relays.is_empty() {
     18         "unconfigured"
     19     } else {
     20         "configured"
     21     };
     22 
     23     RelayListView {
     24         state: state.to_owned(),
     25         source: config.relay.source.as_str().to_owned(),
     26         publish_policy: config.relay.publish_policy.as_str().to_owned(),
     27         count: relays.len(),
     28         reason: relays
     29             .is_empty()
     30             .then_some("no relays are configured for this operator session".to_owned()),
     31         relays,
     32         actions: relay_actions(config),
     33     }
     34 }
     35 
     36 fn relay_actions(config: &RuntimeConfig) -> Vec<String> {
     37     if config.relay.urls.is_empty() {
     38         vec!["radroots --relay wss://relay.example.com relay list".to_owned()]
     39     } else {
     40         Vec::new()
     41     }
     42 }