diff --git a/ruma-identifiers-validation/src/device_key_id.rs b/ruma-identifiers-validation/src/device_key_id.rs index a94c733c..5319143b 100644 --- a/ruma-identifiers-validation/src/device_key_id.rs +++ b/ruma-identifiers-validation/src/device_key_id.rs @@ -3,7 +3,7 @@ use std::{num::NonZeroU8, str::FromStr}; use crate::{crypto_algorithms::DeviceKeyAlgorithm, Error}; pub fn validate(s: &str) -> Result { - let colon_idx = NonZeroU8::new(s.find(':').ok_or(Error::MissingDeviceKeyDelimiter)? as u8) + let colon_idx = NonZeroU8::new(s.find(':').ok_or(Error::MissingDelimiter)? as u8) .ok_or(Error::UnknownKeyAlgorithm)?; DeviceKeyAlgorithm::from_str(&s[0..colon_idx.get() as usize]) diff --git a/ruma-identifiers-validation/src/error.rs b/ruma-identifiers-validation/src/error.rs index 103817cb..e098d4b0 100644 --- a/ruma-identifiers-validation/src/error.rs +++ b/ruma-identifiers-validation/src/error.rs @@ -22,17 +22,12 @@ pub enum Error { /// The ID exceeds 255 bytes (or 32 codepoints for a room version ID). MaximumLengthExceeded, - /// The ID is missing the colon delimiter between localpart and server name. + /// The ID is missing the colon delimiter between localpart and server name, or between key + /// algorithm and key name / version. MissingDelimiter, - /// The ID is missing the colon delimiter between key algorithm and device ID. - MissingDeviceKeyDelimiter, - - /// The ID is missing the colon delimiter between key algorithm and version. - MissingSigningKeyDelimiter, - /// The ID is missing the correct leading sigil. - MissingSigil, + MissingLeadingSigil, /// The key algorithm is not recognized. UnknownKeyAlgorithm, @@ -46,10 +41,8 @@ impl Display for Error { Error::InvalidKeyVersion => "key ID version contains invalid characters", Error::InvalidServerName => "server name is not a valid IP address or domain name", Error::MaximumLengthExceeded => "ID exceeds 255 bytes", - Error::MissingDelimiter => "colon is required between localpart and server name", - Error::MissingDeviceKeyDelimiter => "colon is required between algorithm and device ID", - Error::MissingSigningKeyDelimiter => "colon is required between algorithm and version", - Error::MissingSigil => "leading sigil is incorrect or missing", + Error::MissingDelimiter => "required colon is missing", + Error::MissingLeadingSigil => "leading sigil is incorrect or missing", Error::UnknownKeyAlgorithm => "unknown key algorithm specified", }; diff --git a/ruma-identifiers-validation/src/event_id.rs b/ruma-identifiers-validation/src/event_id.rs index 6461b0d3..c9a8b69a 100644 --- a/ruma-identifiers-validation/src/event_id.rs +++ b/ruma-identifiers-validation/src/event_id.rs @@ -7,7 +7,7 @@ pub fn validate(s: &str) -> Result, Error> { true => Some(parse_id(s, &['$'])?), false => { if !s.starts_with('$') { - return Err(Error::MissingSigil); + return Err(Error::MissingLeadingSigil); } None diff --git a/ruma-identifiers-validation/src/lib.rs b/ruma-identifiers-validation/src/lib.rs index 80477ae1..226862be 100644 --- a/ruma-identifiers-validation/src/lib.rs +++ b/ruma-identifiers-validation/src/lib.rs @@ -24,7 +24,7 @@ fn validate_id(id: &str, valid_sigils: &[char]) -> Result<(), Error> { } if !id.starts_with(valid_sigils) { - return Err(Error::MissingSigil); + return Err(Error::MissingLeadingSigil); } Ok(()) diff --git a/ruma-identifiers-validation/src/signing_key_id.rs b/ruma-identifiers-validation/src/signing_key_id.rs index d039266b..350f2fb4 100644 --- a/ruma-identifiers-validation/src/signing_key_id.rs +++ b/ruma-identifiers-validation/src/signing_key_id.rs @@ -3,7 +3,7 @@ use std::{num::NonZeroU8, str::FromStr}; use crate::{crypto_algorithms::SigningKeyAlgorithm, Error}; pub fn validate(s: &str) -> Result { - let colon_idx = NonZeroU8::new(s.find(':').ok_or(Error::MissingSigningKeyDelimiter)? as u8) + let colon_idx = NonZeroU8::new(s.find(':').ok_or(Error::MissingDelimiter)? as u8) .ok_or(Error::UnknownKeyAlgorithm)?; validate_signing_key_algorithm(&s[..colon_idx.get() as usize])?; diff --git a/ruma-identifiers/CHANGELOG.md b/ruma-identifiers/CHANGELOG.md index 86b186ae..321de2c8 100644 --- a/ruma-identifiers/CHANGELOG.md +++ b/ruma-identifiers/CHANGELOG.md @@ -7,6 +7,8 @@ Breaking changes: * Remove deprecated `is_` methods * Rename `ServerKeyAlgorithm` to `SigningKeyAlgorithm` * Rename `ServerKeyId` to `ServerSigningKeyId` +* Rename `Error::MissingSigil` to `Error::MissingLeadingSigil` +* Merge all missing delimiter error variants Improvements: diff --git a/ruma-identifiers/src/device_key_id.rs b/ruma-identifiers/src/device_key_id.rs index 8feafeeb..5208a92d 100644 --- a/ruma-identifiers/src/device_key_id.rs +++ b/ruma-identifiers/src/device_key_id.rs @@ -100,7 +100,7 @@ mod test { fn missing_delimiter() { assert_eq!( DeviceKeyId::try_from("ed25519|JLAFKJWSCS").unwrap_err(), - Error::MissingDeviceKeyDelimiter, + Error::MissingDelimiter, ); } diff --git a/ruma-identifiers/src/event_id.rs b/ruma-identifiers/src/event_id.rs index 46856568..7469a9bd 100644 --- a/ruma-identifiers/src/event_id.rs +++ b/ruma-identifiers/src/event_id.rs @@ -243,14 +243,17 @@ mod tests { #[test] fn missing_original_event_id_sigil() { - assert_eq!(EventId::try_from("39hvsi03hlne:example.com").unwrap_err(), Error::MissingSigil); + assert_eq!( + EventId::try_from("39hvsi03hlne:example.com").unwrap_err(), + Error::MissingLeadingSigil + ); } #[test] fn missing_base64_event_id_sigil() { assert_eq!( EventId::try_from("acR1l0raoZnm60CBwAVgqbZqoO/mYU81xysh1u7XcJk").unwrap_err(), - Error::MissingSigil + Error::MissingLeadingSigil ); } @@ -258,7 +261,7 @@ mod tests { fn missing_url_safe_base64_event_id_sigil() { assert_eq!( EventId::try_from("Rqnc-F-dvnEYJTyHq_iKxU2bZ1CI92-kuZq3a5lr5Zg").unwrap_err(), - Error::MissingSigil + Error::MissingLeadingSigil ); } diff --git a/ruma-identifiers/src/room_alias_id.rs b/ruma-identifiers/src/room_alias_id.rs index 28f39b9f..bfbe6da9 100644 --- a/ruma-identifiers/src/room_alias_id.rs +++ b/ruma-identifiers/src/room_alias_id.rs @@ -134,7 +134,7 @@ mod tests { fn missing_room_alias_id_sigil() { assert_eq!( RoomAliasId::try_from("39hvsi03hlne:example.com").unwrap_err(), - Error::MissingSigil + Error::MissingLeadingSigil ); } @@ -145,7 +145,10 @@ mod tests { #[test] fn invalid_leading_sigil() { - assert_eq!(RoomAliasId::try_from("!room_id:foo.bar").unwrap_err(), Error::MissingSigil); + assert_eq!( + RoomAliasId::try_from("!room_id:foo.bar").unwrap_err(), + Error::MissingLeadingSigil + ); } #[test] diff --git a/ruma-identifiers/src/room_id.rs b/ruma-identifiers/src/room_id.rs index f79b63d3..9fd856ab 100644 --- a/ruma-identifiers/src/room_id.rs +++ b/ruma-identifiers/src/room_id.rs @@ -150,7 +150,7 @@ mod tests { #[test] fn missing_room_id_sigil() { - assert_eq!(RoomId::try_from("carl:example.com").unwrap_err(), Error::MissingSigil); + assert_eq!(RoomId::try_from("carl:example.com").unwrap_err(), Error::MissingLeadingSigil); } #[test] diff --git a/ruma-identifiers/src/room_id_or_room_alias_id.rs b/ruma-identifiers/src/room_id_or_room_alias_id.rs index 05f13ce6..7283951c 100644 --- a/ruma-identifiers/src/room_id_or_room_alias_id.rs +++ b/ruma-identifiers/src/room_id_or_room_alias_id.rs @@ -166,7 +166,10 @@ mod tests { #[test] fn missing_sigil_for_room_id_or_alias_id() { - assert_eq!(RoomIdOrAliasId::try_from("ruma:example.com").unwrap_err(), Error::MissingSigil); + assert_eq!( + RoomIdOrAliasId::try_from("ruma:example.com").unwrap_err(), + Error::MissingLeadingSigil + ); } #[cfg(feature = "serde")] diff --git a/ruma-identifiers/src/signing_key_id.rs b/ruma-identifiers/src/signing_key_id.rs index 9319fac0..174d7f3a 100644 --- a/ruma-identifiers/src/signing_key_id.rs +++ b/ruma-identifiers/src/signing_key_id.rs @@ -97,7 +97,7 @@ mod tests { fn missing_delimiter() { assert_eq!( ServerSigningKeyId::try_from("ed25519|Abc_1").unwrap_err(), - Error::MissingSigningKeyDelimiter, + Error::MissingDelimiter, ); } } diff --git a/ruma-identifiers/src/user_id.rs b/ruma-identifiers/src/user_id.rs index fd10739a..23a04d2b 100644 --- a/ruma-identifiers/src/user_id.rs +++ b/ruma-identifiers/src/user_id.rs @@ -239,7 +239,7 @@ mod tests { #[test] fn missing_user_id_sigil() { - assert_eq!(UserId::try_from("carl:example.com").unwrap_err(), Error::MissingSigil); + assert_eq!(UserId::try_from("carl:example.com").unwrap_err(), Error::MissingLeadingSigil); } #[test]