🏡 index : ~doyle/jogre.git

use std::collections::BTreeSet;

use jmap_proto::endpoints::session::CoreCapability;
use uuid::Uuid;

use crate::{
    config::CoreCapabilities,
    extensions::{JmapExtension, JmapSessionCapabilityExtension},
};

#[derive(Clone)]
pub struct Core {
    pub(crate) core_capabilities: CoreCapabilities,
}

impl JmapExtension for Core {
    const EXTENSION: &'static str = "urn:ietf:params:jmap:core";
}

impl JmapSessionCapabilityExtension for Core {
    type Metadata = CoreCapability<'static>;

    fn build(&self, _user: Uuid) -> Self::Metadata {
        CoreCapability {
            max_size_upload: self.core_capabilities.max_size_upload.into(),
            max_concurrent_upload: self.core_capabilities.max_concurrent_upload.into(),
            max_size_request: self.core_capabilities.max_size_request.into(),
            max_concurrent_requests: self.core_capabilities.max_concurrent_requests.into(),
            max_calls_in_request: self.core_capabilities.max_calls_in_request.into(),
            max_objects_in_get: self.core_capabilities.max_objects_in_get.into(),
            max_objects_in_set: self.core_capabilities.max_objects_in_set.into(),
            collation_algorithms: BTreeSet::default(),
        }
    }
}