pub struct Ingredient { /* private fields */ }Expand description
An Ingredient is any external asset that has been used in the creation of an asset.
Implementations§
Source§impl Ingredient
impl Ingredient
Sourcepub fn new<S>(title: S, format: S, instance_id: S) -> Self
pub fn new<S>(title: S, format: S, instance_id: S) -> Self
Constructs a new Ingredient.
§Arguments
title- A user-displayable name for this ingredient (often a filename).format- The MIME media type of the ingredient, for exampleimage/jpeg.instance_id- A unique identifier, such as the value of the ingredient’sxmpMM:InstanceID.
§Example
use c2pa::Ingredient;
let ingredient = Ingredient::new("title", "image/jpeg", "ed610ae51f604002be3dbf0c589a2f1f");Sourcepub fn format(&self) -> Option<&str>
pub fn format(&self) -> Option<&str>
Returns a MIME content_type for this asset associated with this ingredient.
Sourcepub fn document_id(&self) -> Option<&str>
pub fn document_id(&self) -> Option<&str>
Returns a document identifier if one exists.
Sourcepub fn instance_id(&self) -> &str
pub fn instance_id(&self) -> &str
Returns the instance identifier.
For v2 ingredients this can return an empty string
Sourcepub fn provenance(&self) -> Option<&str>
pub fn provenance(&self) -> Option<&str>
Returns the provenance URI if available.
Sourcepub fn thumbnail_ref(&self) -> Option<&ResourceRef>
pub fn thumbnail_ref(&self) -> Option<&ResourceRef>
Returns a ResourceRef or None.
Sourcepub fn thumbnail(&self) -> Option<(&str, Cow<'_, Vec<u8>>)>
pub fn thumbnail(&self) -> Option<(&str, Cow<'_, Vec<u8>>)>
Returns thumbnail tuple Some((format, bytes)) or None.
Sourcepub fn thumbnail_bytes(&self) -> Result<Cow<'_, Vec<u8>>>
pub fn thumbnail_bytes(&self) -> Result<Cow<'_, Vec<u8>>>
Returns a Cow of thumbnail bytes or Err(Error::NotFound)`.
Sourcepub fn relationship(&self) -> &Relationship
pub fn relationship(&self) -> &Relationship
Returns the relationship status of the ingredient.
Sourcepub fn validation_status(&self) -> Option<&[ValidationStatus]>
pub fn validation_status(&self) -> Option<&[ValidationStatus]>
Returns a reference to the [ValidationStatus]s if they exist.
Sourcepub fn validation_results(&self) -> Option<&ValidationResults>
pub fn validation_results(&self) -> Option<&ValidationResults>
Returns a reference to the ValidationResultss if they exist.
Sourcepub fn metadata(&self) -> Option<&AssertionMetadata>
pub fn metadata(&self) -> Option<&AssertionMetadata>
Returns a reference to AssertionMetadata if it exists.
Sourcepub fn active_manifest(&self) -> Option<&str>
pub fn active_manifest(&self) -> Option<&str>
Sourcepub fn manifest_data_ref(&self) -> Option<&ResourceRef>
pub fn manifest_data_ref(&self) -> Option<&ResourceRef>
Returns a reference to C2PA manifest data if it exists.
manifest_data is the binary form of a manifest store in .c2pa format.
Sourcepub fn manifest_data(&self) -> Option<Cow<'_, Vec<u8>>>
pub fn manifest_data(&self) -> Option<Cow<'_, Vec<u8>>>
Returns a copy on write ref to the manifest data bytes or None`.
manifest_data is the binary form of a manifest store in .c2pa format.
Sourcepub fn data_ref(&self) -> Option<&ResourceRef>
pub fn data_ref(&self) -> Option<&ResourceRef>
Returns a reference to ingredient data if it exists.
Sourcepub fn description(&self) -> Option<&str>
pub fn description(&self) -> Option<&str>
Returns the detailed description of the ingredient if it exists.
Sourcepub fn informational_uri(&self) -> Option<&str>
pub fn informational_uri(&self) -> Option<&str>
Returns an informational uri for the ingredient if it exists.
Sourcepub fn data_types(&self) -> Option<&[AssetType]>
pub fn data_types(&self) -> Option<&[AssetType]>
Returns an list AssetType info.
Sourcepub fn set_title<S: Into<String>>(&mut self, title: S) -> &mut Self
pub fn set_title<S: Into<String>>(&mut self, title: S) -> &mut Self
Sets a human-readable title for this ingredient.
Sourcepub fn set_instance_id<S: Into<String>>(&mut self, instance_id: S) -> &mut Self
pub fn set_instance_id<S: Into<String>>(&mut self, instance_id: S) -> &mut Self
Sets the document instanceId.
This call is optional for v2 ingredients.
Typically this is found in XMP under xmpMM:InstanceID.
Sourcepub fn set_document_id<S: Into<String>>(&mut self, document_id: S) -> &mut Self
pub fn set_document_id<S: Into<String>>(&mut self, document_id: S) -> &mut Self
Sets the document identifier.
This call is optional.
Typically this is found in XMP under xmpMM:DocumentID.
Sourcepub fn set_provenance<S: Into<String>>(&mut self, provenance: S) -> &mut Self
pub fn set_provenance<S: Into<String>>(&mut self, provenance: S) -> &mut Self
Sets the provenance URI.
This call is optional.
Typically this is found in XMP under dcterms:provenance.
Sourcepub fn set_is_parent(&mut self) -> &mut Self
pub fn set_is_parent(&mut self) -> &mut Self
Identifies this ingredient as the parent.
Only one ingredient should be flagged as a parent. Use Manifest.set_parent to ensure this is the only parent ingredient.
Sourcepub fn set_relationship(&mut self, relationship: Relationship) -> &mut Self
pub fn set_relationship(&mut self, relationship: Relationship) -> &mut Self
Set the ingredient Relationship status.
Only one ingredient should be set as a parentOf. Use Manifest.set_parent to ensure this is the only parent ingredient.
Sourcepub fn set_thumbnail_ref(&mut self, thumbnail: ResourceRef) -> Result<&mut Self>
pub fn set_thumbnail_ref(&mut self, thumbnail: ResourceRef) -> Result<&mut Self>
Sets the thumbnail from a ResourceRef.
Sourcepub fn set_thumbnail<S: Into<String>, B: Into<Vec<u8>>>(
&mut self,
format: S,
bytes: B,
) -> Result<&mut Self>
pub fn set_thumbnail<S: Into<String>, B: Into<Vec<u8>>>( &mut self, format: S, bytes: B, ) -> Result<&mut Self>
Sets the thumbnail format and image data.
Sourcepub fn set_hash<S: Into<String>>(&mut self, hash: S) -> &mut Self
pub fn set_hash<S: Into<String>>(&mut self, hash: S) -> &mut Self
Sets the hash value generated from the entire asset.
Sourcepub fn add_validation_status(&mut self, status: ValidationStatus) -> &mut Self
pub fn add_validation_status(&mut self, status: ValidationStatus) -> &mut Self
Adds a [ValidationStatus] to this ingredient.
Sourcepub fn set_metadata(&mut self, metadata: AssertionMetadata) -> &mut Self
pub fn set_metadata(&mut self, metadata: AssertionMetadata) -> &mut Self
Adds any desired AssertionMetadata to this ingredient.
Sourcepub fn set_active_manifest<S: Into<String>>(&mut self, label: S) -> &mut Self
pub fn set_active_manifest<S: Into<String>>(&mut self, label: S) -> &mut Self
Sets the label for the active manifest in the manifest data.
Sourcepub fn set_label<S: Into<String>>(&mut self, label: S) -> &mut Self
pub fn set_label<S: Into<String>>(&mut self, label: S) -> &mut Self
Sets the ingredient’s label, used as the linking key for action ingredientIds[].
Sourcepub fn set_manifest_data_ref(
&mut self,
data_ref: ResourceRef,
) -> Result<&mut Self>
pub fn set_manifest_data_ref( &mut self, data_ref: ResourceRef, ) -> Result<&mut Self>
Sets a reference to Manifest C2PA data.
Sourcepub fn set_manifest_data(&mut self, data: Vec<u8>) -> Result<&mut Self>
pub fn set_manifest_data(&mut self, data: Vec<u8>) -> Result<&mut Self>
Sets the Manifest C2PA data for this ingredient with bytes.
Sourcepub fn set_data_ref(&mut self, data_ref: ResourceRef) -> Result<&mut Self>
pub fn set_data_ref(&mut self, data_ref: ResourceRef) -> Result<&mut Self>
Sets a reference to Ingredient data.
Sourcepub fn set_description<S: Into<String>>(&mut self, description: S) -> &mut Self
pub fn set_description<S: Into<String>>(&mut self, description: S) -> &mut Self
Sets a detailed description for this ingredient.
Sourcepub fn set_informational_uri<S: Into<String>>(&mut self, uri: S) -> &mut Self
pub fn set_informational_uri<S: Into<String>>(&mut self, uri: S) -> &mut Self
Sets an informational URI if needed.
Sourcepub fn add_data_type(&mut self, data_type: AssetType) -> &mut Self
pub fn add_data_type(&mut self, data_type: AssetType) -> &mut Self
Add AssetType info for Ingredient.
Sourcepub fn from_file_info<P: AsRef<Path>>(path: P) -> Self
Available on crate feature file_io only.
pub fn from_file_info<P: AsRef<Path>>(path: P) -> Self
file_io only.Generates an Ingredient from a file path, including XMP info
from the file if available.
This does not read c2pa_data in a file, it only reads XMP.
Sourcepub fn from_stream_info<F, S>(
stream: &mut dyn CAIRead,
format: F,
title: S,
) -> Self
pub fn from_stream_info<F, S>( stream: &mut dyn CAIRead, format: F, title: S, ) -> Self
Generates an Ingredient from a stream, including XMP info.
Sourcepub fn from_stream(format: &str, stream: &mut dyn CAIRead) -> Result<Self>
👎Deprecated: Use with_stream with an explicit Context instead
pub fn from_stream(format: &str, stream: &mut dyn CAIRead) -> Result<Self>
Use with_stream with an explicit Context instead
Creates an Ingredient from a stream using thread-local settings.
This does not set title or hash. Thumbnail will be set only if one can be retrieved from a previous valid manifest.
Pass an explicit Context via add_stream_internal instead.
Sourcepub async fn from_memory_async(format: &str, buffer: &[u8]) -> Result<Self>
👎Deprecated: Use with_stream with an explicit Context instead of relying on thread-local settings.
pub async fn from_memory_async(format: &str, buffer: &[u8]) -> Result<Self>
Use with_stream with an explicit Context instead of relying on thread-local settings.
Creates an Ingredient from a memory buffer (async version) using thread-local settings.
This does not set title or hash. Thumbnail will be set only if one can be retrieved from a previous valid manifest.
Use Builder::from_context with an explicit Context instead.
Sourcepub async fn from_stream_async(
format: &str,
stream: &mut dyn CAIRead,
) -> Result<Self>
👎Deprecated: Use with_stream_async with an explicit Context instead of relying on thread-local settings.
pub async fn from_stream_async( format: &str, stream: &mut dyn CAIRead, ) -> Result<Self>
Use with_stream_async with an explicit Context instead of relying on thread-local settings.
Creates an Ingredient from a stream (async version) using thread-local settings.
This does not set title or hash. Thumbnail will be set only if one can be retrieved from a previous valid manifest.
Use Builder::from_context with an explicit Context instead.
Sourcepub async fn from_manifest_and_asset_bytes_async<M: Into<Vec<u8>>>(
manifest_bytes: M,
format: &str,
asset_bytes: &[u8],
) -> Result<Self>
👎Deprecated: Pass an explicit Context via from_manifest_and_asset_stream_async instead of relying on thread-local settings.
pub async fn from_manifest_and_asset_bytes_async<M: Into<Vec<u8>>>( manifest_bytes: M, format: &str, asset_bytes: &[u8], ) -> Result<Self>
Pass an explicit Context via from_manifest_and_asset_stream_async instead of relying on thread-local settings.
Asynchronously create an Ingredient from a binary manifest (.c2pa) and asset bytes, using thread-local settings.
Use Ingredient::from_manifest_and_asset_stream_async with an explicit
Context instead.
§Example: Create an Ingredient from a binary manifest (.c2pa) and asset bytes
use c2pa::{Result, Ingredient};
let asset_bytes = include_bytes!("../tests/fixtures/cloud.jpg");
let manifest_bytes = include_bytes!("../tests/fixtures/cloud_manifest.c2pa");
let ingredient = Ingredient::from_manifest_and_asset_bytes_async(manifest_bytes.to_vec(), "image/jpeg", asset_bytes)
.await
.unwrap();
println!("{}", ingredient);
}Sourcepub async fn from_manifest_and_asset_stream_async<M: Into<Vec<u8>>>(
manifest_bytes: M,
format: &str,
stream: &mut dyn CAIRead,
) -> Result<Self>
👎Deprecated: Pass an explicit Context instead of relying on thread-local settings.
pub async fn from_manifest_and_asset_stream_async<M: Into<Vec<u8>>>( manifest_bytes: M, format: &str, stream: &mut dyn CAIRead, ) -> Result<Self>
Pass an explicit Context instead of relying on thread-local settings.
Asynchronously create an Ingredient from a binary manifest (.c2pa) and asset, using thread-local settings.
Pass an explicit Context instead of relying on thread-local settings.
Trait Implementations§
Source§impl Clone for Ingredient
impl Clone for Ingredient
Source§fn clone(&self) -> Ingredient
fn clone(&self) -> Ingredient
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for Ingredient
impl Debug for Ingredient
Source§impl Default for Ingredient
impl Default for Ingredient
Source§fn default() -> Ingredient
fn default() -> Ingredient
Source§impl<'de> Deserialize<'de> for Ingredient
impl<'de> Deserialize<'de> for Ingredient
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl Display for Ingredient
impl Display for Ingredient
Source§impl JsonSchema for Ingredient
impl JsonSchema for Ingredient
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for Ingredient
impl !UnwindSafe for Ingredient
impl Freeze for Ingredient
impl Send for Ingredient
impl Sync for Ingredient
impl Unpin for Ingredient
impl UnsafeUnpin for Ingredient
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§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 moreSource§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 moreSource§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
Source§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
Source§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.Source§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.Source§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.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<T> Tap for T
impl<T> Tap for T
Source§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 moreSource§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 moreSource§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 moreSource§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 moreSource§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 moreSource§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 moreSource§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.Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.