Can get user information
This commit is contained in:
@ -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()
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user