relay connected!

This commit is contained in:
William Casarin
2022-12-11 17:09:44 -08:00
parent e6571d8847
commit 5619ae60ad
12 changed files with 266 additions and 53 deletions

View File

@@ -0,0 +1,52 @@
use crate::{Event, Filter}
/// Messages sent by clients, received by relays
#[derive(Debug, Eq, PartialEq)]
pub enum ClientMessage {
Event {
event: Event,
},
Req {
sub_id: String,
filters: Vec<Filter>,
},
Close {
sub_id: String,
},
}
impl ClientMessage {
pub fn event(ev: Event) -> Self {
ClientMessage::Event {ev}
}
pub fn req(sub_id: String, filters: Vec<Filter>) -> Self {
ClientMessage::Req { sub_id, filters }
}
pub fn close(sub_id: String) -> Self {
ClientMessage::Close { sub_id }
}
pub fn to_json(&self) -> String {
match self {
Self::Event { event } => json!(["EVENT", event]).to_string(),
Self::Req {
subscription_id,
filters,
} => {
let mut json = json!(["REQ", subscription_id]);
let mut filters = json!(filters);
if let Some(json) = json.as_array_mut() {
if let Some(filters) = filters.as_array_mut() {
json.append(filters);
}
}
json.to_string()
}
Self::Close { subscription_id } => json!(["CLOSE", subscription_id]).to_string(),
}
}
}

1
enostr/src/client/mod.rs Normal file
View File

@@ -0,0 +1 @@
mod message;