client-api: Fix deserialization of recently changed state endpoint requests

This commit is contained in:
Jonas Platte 2021-04-05 19:37:45 +02:00
parent 466b8679d6
commit a07eb4ecff
No known key found for this signature in database
GPG Key ID: CC154DE0E30B7C67
2 changed files with 19 additions and 11 deletions

View File

@ -142,17 +142,21 @@ impl ruma_api::IncomingRequest for IncomingRequest {
} }
}; };
let state_key = { let state_key = match path_segments.get(7) {
let decoded = Some(segment) => {
match percent_encoding::percent_decode(path_segments[7].as_bytes()).decode_utf8() { let decoded = match percent_encoding::percent_decode(segment.as_bytes())
.decode_utf8()
{
Ok(val) => val, Ok(val) => val,
Err(err) => return Err(RequestDeserializationError::new(err, request).into()), Err(err) => return Err(RequestDeserializationError::new(err, request).into()),
}; };
match String::try_from(&*decoded) { match String::try_from(&*decoded) {
Ok(val) => val, Ok(val) => val,
Err(err) => return Err(RequestDeserializationError::new(err, request).into()), Err(err) => return Err(RequestDeserializationError::new(err, request).into()),
}
} }
None => "".into(),
}; };
Ok(Self { room_id, event_type, state_key }) Ok(Self { room_id, event_type, state_key })

View File

@ -129,11 +129,15 @@ impl ruma_api::IncomingRequest for IncomingRequest {
} }
}; };
let state_key = let state_key = match path_segments.get(7) {
match percent_encoding::percent_decode(path_segments[7].as_bytes()).decode_utf8() { Some(segment) => {
Ok(val) => val.into_owned(), match percent_encoding::percent_decode(segment.as_bytes()).decode_utf8() {
Err(err) => return Err(RequestDeserializationError::new(err, request).into()), Ok(val) => val.into_owned(),
}; Err(err) => return Err(RequestDeserializationError::new(err, request).into()),
}
}
None => "".into(),
};
let content = { let content = {
let request_body: Box<RawJsonValue> = let request_body: Box<RawJsonValue> =