pub struct Metadata { /* private fields */ }
Expand description
Metadata contains all the information related to a specific path.
Depending on the context of the requests, the metadata for the same path may vary. For example, two versions of the same path might have different content lengths. Keep in mind that metadata is always tied to the given context and is not a global state.
§File Versions
In systems that support versioning, such as AWS S3, the metadata may represent a specific version of a file.
Users can access Metadata::version
to retrieve the file’s version, if available. They can also
use Metadata::is_current
and Metadata::is_deleted
to determine whether the metadata
corresponds to the latest version or a deleted one.
The all possible combinations of is_current
and is_deleted
are as follows:
is_current | is_deleted | description |
---|---|---|
Some(true) | false | The metadata’s associated version is the latest, current version. This is the normal state, indicating that this version is the most up-to-date and accessible version. |
Some(true) | true | The metadata’s associated version is the latest, deleted version (Latest Delete Marker or Soft Deleted). This is particularly important in object storage systems like S3. It signifies that this version is the most recent delete marker, indicating the object has been deleted. Subsequent GET requests will return 404 errors unless a specific version ID is provided. |
Some(false) | false | The metadata’s associated version is neither the latest version nor deleted. This indicates that this version is a previous version, still accessible by specifying its version ID. |
Some(false) | true | The metadata’s associated version is not the latest version and is deleted. This represents a historical version that has been marked for deletion. Users will need to specify the version ID to access it, and accessing it may be subject to specific delete marker behavior (e.g., in S3, it might not return actual data but a specific delete marker response). |
None | false | The metadata’s associated file is not deleted, but its version status is either unknown or it is not the latest version. This likely indicates that versioning is not enabled for this file, or versioning information is unavailable. |
None | true | The metadata’s associated file is deleted, but its version status is either unknown or it is not the latest version. This typically means the file was deleted without versioning enabled, or its versioning information is unavailable. This may represent an actual data deletion operation rather than an S3 delete marker. |
Implementations§
source§impl Metadata
impl Metadata
sourcepub fn is_current(&self) -> Option<bool>
pub fn is_current(&self) -> Option<bool>
Checks whether the metadata corresponds to the most recent version of the file.
This function is particularly useful when working with versioned objects, such as those stored in systems like AWS S3 with versioning enabled. It helps determine if the retrieved metadata represents the current state of the file or an older version.
Refer to docs in Metadata
for more information about file versions.
§Return Value
The function returns an Option<bool>
which can have the following values:
Some(true)
: Indicates that the metadata is associated with the latest version of the file. The metadata is current and reflects the most up-to-date state.Some(false)
: Indicates that the metadata is not associated with the latest version of the file. The metadata belongs to an older version, and there might be a more recent version available.None
: Indicates that the currency of the metadata cannot be determined. This might occur if versioning is not supported or enabled, or if there is insufficient information to ascertain the version status.
sourcepub fn set_is_current(&mut self, is_current: bool) -> &mut Self
pub fn set_is_current(&mut self, is_current: bool) -> &mut Self
Set the is_current
status of this entry.
By default, this value will be None
. Please avoid using this API if it’s unclear whether the entry is current.
Set it to true
if it is known to be the latest; otherwise, set it to false
.
sourcepub fn with_is_current(self, is_current: Option<bool>) -> Self
pub fn with_is_current(self, is_current: Option<bool>) -> Self
Set the is_current
status of this entry.
By default, this value will be None
. Please avoid using this API if it’s unclear whether the entry is current.
Set it to true
if it is known to be the latest; otherwise, set it to false
.
sourcepub fn is_deleted(&self) -> bool
pub fn is_deleted(&self) -> bool
Checks if the file (or version) associated with this metadata has been deleted.
This function returns true
if the file represented by this metadata has been marked for
deletion or has been permanently deleted.
It returns false
otherwise, indicating that the file (or version) is still present and accessible.
Refer to docs in Metadata
for more information about file versions.
§Returns
bool
: true
if the object is considered deleted, false
otherwise.
sourcepub fn set_is_deleted(&mut self, v: bool) -> &mut Self
pub fn set_is_deleted(&mut self, v: bool) -> &mut Self
Set the deleted status of this entry.
sourcepub fn with_is_deleted(self, v: bool) -> Self
pub fn with_is_deleted(self, v: bool) -> Self
Set the deleted status of this entry.
sourcepub fn cache_control(&self) -> Option<&str>
pub fn cache_control(&self) -> Option<&str>
Cache control of this entry.
Cache-Control is defined by RFC 7234 Refer to MDN Cache-Control for more information.
sourcepub fn set_cache_control(&mut self, v: &str) -> &mut Self
pub fn set_cache_control(&mut self, v: &str) -> &mut Self
Set cache control of this entry.
Cache-Control is defined by RFC 7234 Refer to MDN Cache-Control for more information.
sourcepub fn with_cache_control(self, v: String) -> Self
pub fn with_cache_control(self, v: String) -> Self
Set cache control of this entry.
Cache-Control is defined by RFC 7234 Refer to MDN Cache-Control for more information.
sourcepub fn content_length(&self) -> u64
pub fn content_length(&self) -> u64
Content length of this entry.
Content-Length
is defined by RFC 7230
Refer to MDN Content-Length for more information.
§Returns
Content length of this entry. It will be 0
if the content length is not set by the storage services.
sourcepub fn set_content_length(&mut self, v: u64) -> &mut Self
pub fn set_content_length(&mut self, v: u64) -> &mut Self
Set content length of this entry.
sourcepub fn with_content_length(self, v: u64) -> Self
pub fn with_content_length(self, v: u64) -> Self
Set content length of this entry.
sourcepub fn content_md5(&self) -> Option<&str>
pub fn content_md5(&self) -> Option<&str>
sourcepub fn set_content_md5(&mut self, v: &str) -> &mut Self
pub fn set_content_md5(&mut self, v: &str) -> &mut Self
Set content MD5 of this entry.
sourcepub fn with_content_md5(self, v: String) -> Self
pub fn with_content_md5(self, v: String) -> Self
Set content MD5 of this entry.
sourcepub fn content_type(&self) -> Option<&str>
pub fn content_type(&self) -> Option<&str>
Content Type of this entry.
Content Type is defined by RFC 9110.
Refer to MDN Content-Type for more information.
sourcepub fn set_content_type(&mut self, v: &str) -> &mut Self
pub fn set_content_type(&mut self, v: &str) -> &mut Self
Set Content Type of this entry.
sourcepub fn with_content_type(self, v: String) -> Self
pub fn with_content_type(self, v: String) -> Self
Set Content Type of this entry.
sourcepub fn content_encoding(&self) -> Option<&str>
pub fn content_encoding(&self) -> Option<&str>
Content Encoding of this entry.
Content Encoding is defined by RFC 7231
Refer to MDN Content-Encoding for more information.
sourcepub fn set_content_encoding(&mut self, v: &str) -> &mut Self
pub fn set_content_encoding(&mut self, v: &str) -> &mut Self
Set Content Encoding of this entry.
sourcepub fn content_range(&self) -> Option<BytesContentRange>
pub fn content_range(&self) -> Option<BytesContentRange>
Content Range of this entry.
Content Range is defined by RFC 9110.
Refer to MDN Content-Range for more information.
sourcepub fn set_content_range(&mut self, v: BytesContentRange) -> &mut Self
pub fn set_content_range(&mut self, v: BytesContentRange) -> &mut Self
Set Content Range of this entry.
sourcepub fn with_content_range(self, v: BytesContentRange) -> Self
pub fn with_content_range(self, v: BytesContentRange) -> Self
Set Content Range of this entry.
sourcepub fn last_modified(&self) -> Option<DateTime<Utc>>
pub fn last_modified(&self) -> Option<DateTime<Utc>>
Last modified of this entry.
Last-Modified
is defined by RFC 7232
Refer to MDN Last-Modified for more information.
sourcepub fn set_last_modified(&mut self, v: DateTime<Utc>) -> &mut Self
pub fn set_last_modified(&mut self, v: DateTime<Utc>) -> &mut Self
Set Last modified of this entry.
sourcepub fn with_last_modified(self, v: DateTime<Utc>) -> Self
pub fn with_last_modified(self, v: DateTime<Utc>) -> Self
Set Last modified of this entry.
sourcepub fn content_disposition(&self) -> Option<&str>
pub fn content_disposition(&self) -> Option<&str>
Content-Disposition of this entry
Content-Disposition
is defined by RFC 2616 and
clarified usage in RFC 6266.
Refer to MDN Content-Disposition for more information.
OpenDAL will return this value AS-IS like the following:
- “inline”
- “attachment”
- “attachment; filename="filename.jpg"”
sourcepub fn set_content_disposition(&mut self, v: &str) -> &mut Self
pub fn set_content_disposition(&mut self, v: &str) -> &mut Self
Set Content-Disposition of this entry
sourcepub fn with_content_disposition(self, v: String) -> Self
pub fn with_content_disposition(self, v: String) -> Self
Set Content-Disposition of this entry
sourcepub fn version(&self) -> Option<&str>
pub fn version(&self) -> Option<&str>
Retrieves the version
of the file, if available.
The version is typically used in systems that support object versioning, such as AWS S3.
§Returns
Some(&str)
: If the file has a version associated with it, this function returnsSome
containing a reference to the version ID string.None
: If the file does not have a version, or if versioning is not supported or enabled for the underlying storage system, this function returnsNone
.
sourcepub fn set_version(&mut self, v: &str) -> &mut Self
pub fn set_version(&mut self, v: &str) -> &mut Self
Set the version of the file
sourcepub fn with_version(self, v: String) -> Self
pub fn with_version(self, v: String) -> Self
With the version of the file.
Trait Implementations§
source§impl From<MetaData> for Metadata
Available on crate feature services-sftp
only.
impl From<MetaData> for Metadata
services-sftp
only.REMOVE ME: we should not implement From<SftpMeta> for Metadata
.
source§impl PartialEq for Metadata
impl PartialEq for Metadata
impl Eq for Metadata
impl StructuralPartialEq for Metadata
Auto Trait Implementations§
impl Freeze for Metadata
impl RefUnwindSafe for Metadata
impl Send for Metadata
impl Sync for Metadata
impl Unpin for Metadata
impl UnwindSafe for Metadata
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
§impl<T> CompatExt for T
impl<T> CompatExt for T
§impl<T> Conv for T
impl<T> Conv for T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§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 moresource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request
source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.