Skip to main content

pdk_flex_abi/api/
metadata.rs

1// Copyright (c) 2026, Salesforce, Inc.,
2// All rights reserved.
3// For full license text, see the LICENSE.txt file
4
5use std::convert::TryFrom;
6
7use serde::Deserialize;
8
9use crate::api::status::Status;
10use crate::api::status::Status::ParseFailure;
11
12#[derive(Debug, Deserialize)]
13pub struct PolicyMetadata {
14    #[serde(alias = "name")]
15    policy_name: String,
16
17    #[serde(alias = "namespace")]
18    policy_namespace: String,
19}
20
21impl PolicyMetadata {
22    pub fn policy_name(&self) -> &str {
23        &self.policy_name
24    }
25    pub fn policy_namespace(&self) -> &str {
26        &self.policy_namespace
27    }
28}
29
30impl TryFrom<Vec<u8>> for PolicyMetadata {
31    type Error = Status;
32
33    fn try_from(value: Vec<u8>) -> Result<Self, Self::Error> {
34        let parsed: Self = serde_json::from_slice(value.as_ref()).map_err(|_| ParseFailure)?;
35        if parsed.policy_name.is_empty() || parsed.policy_namespace.is_empty() {
36            return Err(ParseFailure);
37        }
38        Ok(parsed)
39    }
40}