Skip to main content

canic_core/api/
metadata.rs

1use crate::dto::metadata::CanicMetadataResponse;
2
3const CANISTER_NAME: &str = env!("CARGO_PKG_NAME");
4const CANISTER_VERSION: &str = env!("CARGO_PKG_VERSION");
5const CANISTER_DESCRIPTION: &str = env!("CARGO_PKG_DESCRIPTION");
6
7///
8/// CanicMetadataApi
9///
10
11pub struct CanicMetadataApi;
12
13impl CanicMetadataApi {
14    /// Return metadata for the core crate fallback path.
15    #[must_use]
16    pub fn metadata(canister_version: u64) -> CanicMetadataResponse {
17        Self::metadata_for(
18            CANISTER_NAME,
19            CANISTER_VERSION,
20            CANISTER_DESCRIPTION,
21            CANISTER_VERSION,
22            canister_version,
23        )
24    }
25
26    /// Return metadata for the canister crate that exports the endpoint.
27    #[must_use]
28    pub fn metadata_for(
29        package_name: &str,
30        package_version: &str,
31        package_description: &str,
32        canic_version: &str,
33        canister_version: u64,
34    ) -> CanicMetadataResponse {
35        CanicMetadataResponse {
36            package_name: package_name.to_string(),
37            package_version: package_version.to_string(),
38            package_description: package_description.to_string(),
39            canic_version: canic_version.to_string(),
40            canister_version,
41        }
42    }
43}