ferripfs_config/
addresses.rs1use crate::Strings;
12use serde::{Deserialize, Serialize};
13
14#[derive(Debug, Clone, Default, Serialize, Deserialize)]
16#[serde(rename_all = "PascalCase")]
17pub struct Addresses {
18 #[serde(default)]
20 pub swarm: Vec<String>,
21
22 #[serde(default)]
24 pub announce: Vec<String>,
25
26 #[serde(default)]
28 pub append_announce: Vec<String>,
29
30 #[serde(default)]
32 pub no_announce: Vec<String>,
33
34 #[serde(default, rename = "API")]
36 pub api: Strings,
37
38 #[serde(default)]
40 pub gateway: Strings,
41}
42
43impl Addresses {
44 pub fn default_swarm_addresses() -> Vec<String> {
46 vec![
47 "/ip4/0.0.0.0/tcp/4001".to_string(),
48 "/ip6/::/tcp/4001".to_string(),
49 "/ip4/0.0.0.0/udp/4001/quic-v1".to_string(),
50 "/ip4/0.0.0.0/udp/4001/quic-v1/webtransport".to_string(),
51 "/ip6/::/udp/4001/quic-v1".to_string(),
52 "/ip6/::/udp/4001/quic-v1/webtransport".to_string(),
53 ]
54 }
55
56 pub fn default_api_address() -> String {
58 "/ip4/127.0.0.1/tcp/5001".to_string()
59 }
60
61 pub fn default_gateway_address() -> String {
63 "/ip4/127.0.0.1/tcp/8080".to_string()
64 }
65}
66
67#[cfg(test)]
68mod tests {
69 use super::*;
70
71 #[test]
72 fn test_addresses_default() {
73 let addrs = Addresses::default();
74 assert!(addrs.swarm.is_empty());
75 assert!(addrs.api.is_empty());
76 }
77
78 #[test]
79 fn test_default_swarm_addresses() {
80 let swarm = Addresses::default_swarm_addresses();
81 assert!(!swarm.is_empty());
82 assert!(swarm.iter().any(|a| a.contains("tcp/4001")));
83 }
84}