use std::str::FromStr;
use simd_json::{derived::ValueTryIntoString, owned};
use url::Url;
use crate::{
entities::identity::identity_operation::IdentityOperationData,
replica::entity::operation::operation_data::get,
};
struct SetAvatarUrl {
url: String,
}
pub(crate) fn set_avatar_url(
mut value: owned::Object,
) -> Result<IdentityOperationData, super::decode::Error> {
let base: SetAvatarUrl = SetAvatarUrl {
url: get! {value, "url", try_into_string, super::decode::Error},
};
Ok(IdentityOperationData::SetAvatarUrl {
url: Url::from_str(&base.url)?,
})
}
pub(crate) fn set_avatar_url_value(url: &Url) -> simd_json::borrowed::Object<'_> {
let mut object = simd_json::borrowed::Object::new();
unsafe {
object.insert_nocheck("url".into(), url.to_string().into());
}
object
}