Skip to main content

poolster_core/
extensions.rs

1//! Canonical Poolster OpenAPI extensions.
2
3use serde_json::Value;
4use std::collections::BTreeMap;
5
6/// Read an `x-poolster-*` extension.
7pub fn poolster_extension<'a>(
8    annotations: &'a BTreeMap<String, Value>,
9    suffix: &str,
10) -> Option<&'a Value> {
11    annotations.get(&format!("x-poolster-{suffix}"))
12}
13
14#[cfg(test)]
15mod tests {
16    use super::*;
17    use serde_json::json;
18
19    #[test]
20    fn reads_canonical_name() {
21        let extensions = BTreeMap::from([("x-poolster-pagination".into(), json!("canonical"))]);
22        assert_eq!(
23            poolster_extension(&extensions, "pagination"),
24            Some(&json!("canonical"))
25        );
26        assert_eq!(poolster_extension(&extensions, "missing"), None);
27    }
28}