blueprint_core/extract/
metadata.rs

1//! An extractor for all metadata in the current [`JobCall`].
2//!
3//! [`JobCall`]: crate::JobCall
4
5use core::convert::Infallible;
6
7use crate::FromJobCallParts;
8use crate::job::call::Parts as JobCallParts;
9use crate::metadata::{MetadataMap, MetadataValue};
10
11/// Extractor for all metadata in the current [`JobCall`].
12///
13/// [`JobCall`]: crate::JobCall
14pub struct Metadata(pub MetadataMap<MetadataValue>);
15
16impl<Ctx> FromJobCallParts<Ctx> for Metadata
17where
18    Ctx: Send + Sync + 'static,
19{
20    type Rejection = Infallible;
21
22    async fn from_job_call_parts(
23        parts: &mut JobCallParts,
24        _: &Ctx,
25    ) -> Result<Self, Self::Rejection> {
26        Ok(Metadata(parts.metadata.clone()))
27    }
28}