Successful parsing of requests from stream
This commit is contained in:
+6
-2
@@ -1,5 +1,5 @@
|
|||||||
use crate::error::{Error, Result};
|
use crate::error::{Error, Result};
|
||||||
use crate::event;
|
use crate::{event, request};
|
||||||
use log::{debug, info};
|
use log::{debug, info};
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
|
|
||||||
@@ -39,6 +39,7 @@ pub enum NostrRawMessage {
|
|||||||
#[derive(PartialEq, Debug)]
|
#[derive(PartialEq, Debug)]
|
||||||
pub enum NostrRequest {
|
pub enum NostrRequest {
|
||||||
Event(event::Event),
|
Event(event::Event),
|
||||||
|
Subscription(request::Subscription),
|
||||||
}
|
}
|
||||||
|
|
||||||
// Wrap the message in the expected request type
|
// Wrap the message in the expected request type
|
||||||
@@ -60,7 +61,10 @@ pub fn parse_type(msg: String) -> Result<NostrRequest> {
|
|||||||
let typ = msg_type_wrapper(msg)?;
|
let typ = msg_type_wrapper(msg)?;
|
||||||
match typ {
|
match typ {
|
||||||
NostrRawMessage::Event(_) => Err(Error::EventParseFailed),
|
NostrRawMessage::Event(_) => Err(Error::EventParseFailed),
|
||||||
NostrRawMessage::Req(_) => Err(Error::ReqParseFailed),
|
NostrRawMessage::Req(m) => {
|
||||||
|
let s = request::Subscription::parse(&m)?;
|
||||||
|
Ok(NostrRequest::Subscription(s))
|
||||||
|
}
|
||||||
NostrRawMessage::Close(_) => Err(Error::CloseParseFailed),
|
NostrRawMessage::Close(_) => Err(Error::CloseParseFailed),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-6
@@ -1,4 +1,4 @@
|
|||||||
use crate::error::Result;
|
use crate::error::{Error, Result};
|
||||||
use serde::{Deserialize, Deserializer, Serialize};
|
use serde::{Deserialize, Deserializer, Serialize};
|
||||||
//use serde_json::json;
|
//use serde_json::json;
|
||||||
//use serde_json::Result;
|
//use serde_json::Result;
|
||||||
@@ -78,11 +78,12 @@ impl<'de> Deserialize<'de> for Subscription {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// impl Subscription {
|
|
||||||
// pub fn parse(json: &str) -> Result<Subscription> {
|
impl Subscription {
|
||||||
// use serde to parse the ReqCmd, and then extract elements
|
pub fn parse(json: &str) -> Result<Subscription> {
|
||||||
// }
|
serde_json::from_str(json).map_err(|e| Error::JsonParseFailed(e))
|
||||||
// }
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
|
|||||||
Reference in New Issue
Block a user