diff options
| author | DanConwayDev <DanConwayDev@protonmail.com> | 2023-10-01 00:00:00 +0100 |
|---|---|---|
| committer | DanConwayDev <DanConwayDev@protonmail.com> | 2023-10-01 00:00:00 +0100 |
| commit | 000901c0cbca8464b5a89bcc93c5474f6564bafd (patch) | |
| tree | 0ae11836c173ec6246e8b1eab7dc1e265e125426 /src/client.rs | |
| parent | b9a88672b8734448615354e3f46748d2fdc2f647 (diff) | |
feat(prs-create) send to multiple relays
add tests but these currently don't work when run together
Diffstat (limited to 'src/client.rs')
| -rw-r--r-- | src/client.rs | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/src/client.rs b/src/client.rs index a6f7dda..e0e0494 100644 --- a/src/client.rs +++ b/src/client.rs | |||
| @@ -18,6 +18,7 @@ use nostr::Event; | |||
| 18 | 18 | ||
| 19 | pub struct Client { | 19 | pub struct Client { |
| 20 | client: nostr_sdk::Client, | 20 | client: nostr_sdk::Client, |
| 21 | pub fallback_relays: Vec<String>, | ||
| 21 | } | 22 | } |
| 22 | 23 | ||
| 23 | #[async_trait] | 24 | #[async_trait] |
| @@ -26,6 +27,7 @@ pub trait Connect { | |||
| 26 | fn default() -> Self; | 27 | fn default() -> Self; |
| 27 | fn new(opts: Params) -> Self; | 28 | fn new(opts: Params) -> Self; |
| 28 | async fn connect(&self) -> Result<()>; | 29 | async fn connect(&self) -> Result<()>; |
| 30 | async fn disconnect(&self) -> Result<()>; | ||
| 29 | async fn send_event_to(&self, url: &str, event: nostr::event::Event) -> Result<nostr::EventId>; | 31 | async fn send_event_to(&self, url: &str, event: nostr::event::Event) -> Result<nostr::EventId>; |
| 30 | } | 32 | } |
| 31 | 33 | ||
| @@ -34,19 +36,31 @@ impl Connect for Client { | |||
| 34 | fn default() -> Self { | 36 | fn default() -> Self { |
| 35 | Client { | 37 | Client { |
| 36 | client: nostr_sdk::Client::new(&nostr::Keys::generate()), | 38 | client: nostr_sdk::Client::new(&nostr::Keys::generate()), |
| 39 | fallback_relays: vec![ | ||
| 40 | "ws://localhost:8080".to_string(), | ||
| 41 | "ws://localhost:8052".to_string(), | ||
| 42 | ], | ||
| 37 | } | 43 | } |
| 38 | } | 44 | } |
| 39 | fn new(opts: Params) -> Self { | 45 | fn new(opts: Params) -> Self { |
| 40 | Client { | 46 | Client { |
| 41 | client: nostr_sdk::Client::new(&opts.keys.unwrap_or(nostr::Keys::generate())), | 47 | client: nostr_sdk::Client::new(&opts.keys.unwrap_or(nostr::Keys::generate())), |
| 48 | fallback_relays: opts.fallback_relays, | ||
| 42 | } | 49 | } |
| 43 | } | 50 | } |
| 44 | async fn connect(&self) -> Result<()> { | 51 | async fn connect(&self) -> Result<()> { |
| 45 | self.client.add_relay("ws://localhost:8080", None).await?; | 52 | for relay in &self.fallback_relays { |
| 53 | self.client.add_relay(relay.as_str(), None).await?; | ||
| 54 | } | ||
| 46 | self.client.connect().await; | 55 | self.client.connect().await; |
| 47 | // self.client.s | ||
| 48 | Ok(()) | 56 | Ok(()) |
| 49 | } | 57 | } |
| 58 | |||
| 59 | async fn disconnect(&self) -> Result<()> { | ||
| 60 | self.client.disconnect().await?; | ||
| 61 | Ok(()) | ||
| 62 | } | ||
| 63 | |||
| 50 | async fn send_event_to(&self, url: &str, event: Event) -> Result<nostr::EventId> { | 64 | async fn send_event_to(&self, url: &str, event: Event) -> Result<nostr::EventId> { |
| 51 | Ok(self.client.send_event_to(url, event).await?) | 65 | Ok(self.client.send_event_to(url, event).await?) |
| 52 | } | 66 | } |
| @@ -55,6 +69,7 @@ impl Connect for Client { | |||
| 55 | #[derive(Default)] | 69 | #[derive(Default)] |
| 56 | pub struct Params { | 70 | pub struct Params { |
| 57 | pub keys: Option<nostr::Keys>, | 71 | pub keys: Option<nostr::Keys>, |
| 72 | pub fallback_relays: Vec<String>, | ||
| 58 | } | 73 | } |
| 59 | 74 | ||
| 60 | impl Params { | 75 | impl Params { |
| @@ -62,4 +77,8 @@ impl Params { | |||
| 62 | self.keys = Some(keys); | 77 | self.keys = Some(keys); |
| 63 | self | 78 | self |
| 64 | } | 79 | } |
| 80 | pub fn with_fallback_relays(mut self, fallback_relays: Vec<String>) -> Self { | ||
| 81 | self.fallback_relays = fallback_relays; | ||
| 82 | self | ||
| 83 | } | ||
| 65 | } | 84 | } |