kameleoon-client 0.9.0

Rust client SDK for feature experimentation and feature flags with Kameleoon.
use kameleoon_core::cookies::accessor::CoreCookieAccessor;

pub trait CookieAccessor {
    fn set<'a>(&mut self, key: &str, value: &str, max_age: u32, top_level_domain: Option<&'a str>);

    fn get(&self, key: &str) -> Option<&str>;
}

pub(crate) struct CookieAccessorAdapter<'a, T> {
    pub(crate) inner: Option<&'a mut T>,
}

impl<T: CookieAccessor> CoreCookieAccessor for CookieAccessorAdapter<'_, T> {
    fn set<'a>(&mut self, key: &str, value: &str, max_age: u32, top_level_domain: Option<&'a str>) {
        if let Some(inner) = self.inner.as_mut() {
            inner.set(key, value, max_age, top_level_domain);
        }
    }

    fn get(&self, key: &str) -> Option<String> {
        self.inner.as_ref()?.get(key).map(str::to_owned)
    }
}