pub struct Media { /* private fields */ }
Expand description
A high-level API to interact with the media API.
Implementations§
Source§impl Media
impl Media
Sourcepub fn upload(
&self,
content_type: &Mime,
data: Vec<u8>,
request_config: Option<RequestConfig>,
) -> SendUploadRequest
pub fn upload( &self, content_type: &Mime, data: Vec<u8>, request_config: Option<RequestConfig>, ) -> SendUploadRequest
Upload some media to the server.
§Arguments
-
content_type
- The type of the media, this will be used as the content-type header. -
data
- Vector of bytes to be uploaded to the server. -
request_config
- Optional request configuration for the HTTP client, overriding the default. If not provided, a reasonable timeout value is inferred.
§Examples
let image = fs::read("/home/example/my-cat.jpg")?;
let response =
client.media().upload(&mime::IMAGE_JPEG, image, None).await?;
println!("Cat URI: {}", response.content_uri);
Sourcepub async fn create_content_uri(&self) -> Result<PreallocatedMxcUri>
pub async fn create_content_uri(&self) -> Result<PreallocatedMxcUri>
Preallocates an MXC URI for a media that will be uploaded soon.
This preallocates an URI before any content is uploaded to the server.
The resulting preallocated MXC URI can then be consumed with
Media::upload_preallocated
.
§Examples
let preallocated = client.media().create_content_uri().await?;
println!("Cat URI: {}", preallocated.uri);
let image = fs::read("/home/example/my-cat.jpg")?;
client
.media()
.upload_preallocated(preallocated, &mime::IMAGE_JPEG, image)
.await?;
Sourcepub async fn upload_preallocated(
&self,
uri: PreallocatedMxcUri,
content_type: &Mime,
data: Vec<u8>,
) -> Result<()>
pub async fn upload_preallocated( &self, uri: PreallocatedMxcUri, content_type: &Mime, data: Vec<u8>, ) -> Result<()>
Fills the content of a preallocated MXC URI with the given content type and data.
The URI must have been preallocated with Self::create_content_uri
.
See this method’s documentation for a full example.
Sourcepub async fn get_media_file(
&self,
request: &MediaRequestParameters,
filename: Option<String>,
content_type: &Mime,
use_cache: bool,
temp_dir: Option<String>,
) -> Result<MediaFileHandle>
Available on non-WebAssembly only.
pub async fn get_media_file( &self, request: &MediaRequestParameters, filename: Option<String>, content_type: &Mime, use_cache: bool, temp_dir: Option<String>, ) -> Result<MediaFileHandle>
Gets a media file by copying it to a temporary location on disk.
The file won’t be encrypted even if it is encrypted on the server.
Returns a MediaFileHandle
which takes ownership of the file. When the
handle is dropped, the file will be deleted from the temporary location.
§Arguments
-
request
- TheMediaRequest
of the content. -
filename
- The filename specified in the event. It is suggested to use thefilename()
method on the event’s content instead of using thefilename
field directly. If not provided, a random name will be generated. -
content_type
- The type of the media, this will be used to set the temporary file’s extension when one isn’t included in the filename. -
use_cache
- If we should use the media cache for this request. -
temp_dir
- Path to a directory where temporary directories can be created. If not provided, a default, global temporary directory will be used; this may not work properly on Android, where the default location may require root access on some older Android versions.
Sourcepub async fn get_media_content(
&self,
request: &MediaRequestParameters,
use_cache: bool,
) -> Result<Vec<u8>>
pub async fn get_media_content( &self, request: &MediaRequestParameters, use_cache: bool, ) -> Result<Vec<u8>>
Get a media file’s content.
If the content is encrypted and encryption is enabled, the content will be decrypted.
§Arguments
-
request
- TheMediaRequest
of the content. -
use_cache
- If we should use the media cache for this request.
Sourcepub async fn remove_media_content(
&self,
request: &MediaRequestParameters,
) -> Result<()>
pub async fn remove_media_content( &self, request: &MediaRequestParameters, ) -> Result<()>
Sourcepub async fn remove_media_content_for_uri(&self, uri: &MxcUri) -> Result<()>
pub async fn remove_media_content_for_uri(&self, uri: &MxcUri) -> Result<()>
Delete all the media content corresponding to the given uri from the store.
§Arguments
uri
- TheMxcUri
of the files.
Sourcepub async fn get_file(
&self,
event_content: &impl MediaEventContent,
use_cache: bool,
) -> Result<Option<Vec<u8>>>
pub async fn get_file( &self, event_content: &impl MediaEventContent, use_cache: bool, ) -> Result<Option<Vec<u8>>>
Get the file of the given media event content.
If the content is encrypted and encryption is enabled, the content will be decrypted.
Returns Ok(None)
if the event content has no file.
This is a convenience method that calls the
get_media_content
method.
§Arguments
-
event_content
- The media event content. -
use_cache
- If we should use the media cache for this file.
Sourcepub async fn remove_file(
&self,
event_content: &impl MediaEventContent,
) -> Result<()>
pub async fn remove_file( &self, event_content: &impl MediaEventContent, ) -> Result<()>
Remove the file of the given media event content from the cache.
This is a convenience method that calls the
remove_media_content
method.
§Arguments
event_content
- The media event content.
Sourcepub async fn get_thumbnail(
&self,
event_content: &impl MediaEventContent,
settings: MediaThumbnailSettings,
use_cache: bool,
) -> Result<Option<Vec<u8>>>
pub async fn get_thumbnail( &self, event_content: &impl MediaEventContent, settings: MediaThumbnailSettings, use_cache: bool, ) -> Result<Option<Vec<u8>>>
Get a thumbnail of the given media event content.
If the content is encrypted and encryption is enabled, the content will be decrypted.
Returns Ok(None)
if the event content has no thumbnail.
This is a convenience method that calls the
get_media_content
method.
§Arguments
-
event_content
- The media event content. -
settings
- The desired settings of the thumbnail. The actual thumbnail may not match the settings specified. -
use_cache
- If we should use the media cache for this thumbnail.
Sourcepub async fn remove_thumbnail(
&self,
event_content: &impl MediaEventContent,
settings: MediaThumbnailSettings,
) -> Result<()>
pub async fn remove_thumbnail( &self, event_content: &impl MediaEventContent, settings: MediaThumbnailSettings, ) -> Result<()>
Remove the thumbnail of the given media event content from the cache.
This is a convenience method that calls the
remove_media_content
method.
§Arguments
-
event_content
- The media event content. -
size
- The desired settings of the thumbnail. Must match the settings requested withget_thumbnail
.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Media
impl !RefUnwindSafe for Media
impl Send for Media
impl Sync for Media
impl Unpin for Media
impl !UnwindSafe for Media
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> CompatExt for T
impl<T> CompatExt for T
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T, UT> HandleAlloc<UT> for T
impl<T, UT> HandleAlloc<UT> for T
Source§fn consume_handle(handle: Handle) -> Arc<T>
fn consume_handle(handle: Handle) -> Arc<T>
Arc<>
Source§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more