Can get user information

This commit is contained in:
2025-02-27 20:08:13 +01:00
parent 6adc0c1fbb
commit 3640f72d73
5 changed files with 59 additions and 24 deletions

View File

@ -1,10 +1,18 @@
use ruma::OwnedServerName;
use std::str::FromStr;
use ruma::OwnedMxcUri;
use serde::ser::SerializeMap;
use serde::{Serialize, Serializer};
/// Parse Matrix media URL returning media id and server name
pub fn parse_mxc_url(url: &str) -> Option<(&str, OwnedServerName)> {
let strip = url.strip_prefix("mxc://")?;
let parts = strip.split_once('/')?;
pub struct ApiMxcURI(pub OwnedMxcUri);
Some((parts.0, OwnedServerName::from_str(parts.1).ok()?))
impl Serialize for ApiMxcURI {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
let mut map = serializer.serialize_map(Some(3))?;
map.serialize_entry("uri", &self.0)?;
map.serialize_entry("server_name", &self.0.server_name().ok())?;
map.serialize_entry("media_id", &self.0.media_id().ok())?;
map.end()
}
}