commands: implement response parser for protocol available
This commit is contained in:
@@ -1,12 +1,13 @@
|
||||
use crate::{
|
||||
Request,
|
||||
commands::{Command, RequestParserResult, ResponseAttributes, ResponseParserError},
|
||||
commands::{expect_property_type, Command, RequestParserResult, ResponseAttributes, ResponseParserError}, Request
|
||||
};
|
||||
|
||||
pub struct ProtocolAvailable;
|
||||
|
||||
pub type ProtocolAvailableResponse = Vec<String>;
|
||||
|
||||
impl Command for ProtocolAvailable {
|
||||
type Response = ();
|
||||
type Response = ProtocolAvailableResponse;
|
||||
const COMMAND: &'static str = "protocol available";
|
||||
|
||||
fn parse_request(mut parts: std::str::SplitWhitespace<'_>) -> RequestParserResult<'_> {
|
||||
@@ -17,6 +18,16 @@ impl Command for ProtocolAvailable {
|
||||
fn parse_response(
|
||||
parts: ResponseAttributes<'_>,
|
||||
) -> Result<Self::Response, ResponseParserError<'_>> {
|
||||
unimplemented!()
|
||||
for (k, _) in parts.0.iter().filter(|(k, _)| *k != "feature") {
|
||||
return Err(ResponseParserError::UnexpectedProperty(k));
|
||||
}
|
||||
|
||||
let list = parts
|
||||
.0
|
||||
.into_iter()
|
||||
.map(|(k, v)| Ok(expect_property_type!(Some(v), k, Text).to_string()))
|
||||
.collect::<Result<Vec<_>, ResponseParserError>>()?;
|
||||
|
||||
Ok(list)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user