1use rings_rpc::protos::rings_node::ConnectWithSeedRequest;
4use serde::Deserialize;
5use serde::Serialize;
6
7use crate::error::Error;
8
9#[derive(Deserialize, Serialize, Debug)]
11pub struct Seed {
12 pub peers: Vec<SeedPeer>,
13}
14
15#[derive(Deserialize, Serialize, Debug)]
17pub struct SeedPeer {
18 pub did: String,
20 pub url: String,
22}
23
24impl TryFrom<ConnectWithSeedRequest> for Seed {
25 type Error = Error;
26
27 fn try_from(req: ConnectWithSeedRequest) -> Result<Self, Error> {
28 let mut peers = Vec::new();
29
30 for peer in req.peers {
31 peers.push(SeedPeer {
32 did: peer.did,
33 url: peer.url,
34 });
35 }
36
37 Ok(Seed { peers })
38 }
39}
40
41impl Seed {
42 pub fn into_connect_with_seed_request(self) -> ConnectWithSeedRequest {
43 let mut peers = Vec::new();
44
45 for peer in self.peers {
46 peers.push(rings_rpc::protos::rings_node::SeedPeer {
47 did: peer.did,
48 url: peer.url,
49 });
50 }
51
52 ConnectWithSeedRequest { peers }
53 }
54}