in sdk/keyvault/azure_security_keyvault_certificates/src/resource.rs [104:138]
fn deconstruct(url: &Url, version: bool) -> Result<ResourceId> {
let vault_url = format!("{}://{}", url.scheme(), url.authority(),);
let mut segments = url
.path_segments()
.ok_or_else(|| azure_core::Error::message(ErrorKind::DataConversion, "invalid url"))?
.filter(|s| !s.is_empty());
segments
.next()
.ok_or_else(|| azure_core::Error::message(ErrorKind::DataConversion, "missing collection"))
.and_then(|col| {
if col != "certificates" {
return Err(azure_core::Error::message(
ErrorKind::DataConversion,
"not in certificates collection",
));
}
Ok(col)
})?;
let name = segments
.next()
.ok_or_else(|| azure_core::Error::message(ErrorKind::DataConversion, "missing name"))
.map(String::from)?;
let mut resource_id = ResourceId {
source_id: url.as_str().into(),
vault_url,
name,
version: None,
};
if version {
resource_id.version = segments.next().map(String::from);
}
Ok(resource_id)
}