Skip to main content

cloudcover_core/
provider.rs

1use crate::{ApiMethod, ResolvedSdk, Sdk, SdkMethodMapping};
2
3pub trait CloudProvider {
4    type Error: std::error::Error + Send + Sync + 'static;
5
6    #[must_use]
7    fn list_api_methods(&self) -> Vec<ApiMethod>;
8
9    #[must_use]
10    fn list_sdks(&self) -> Vec<Sdk>;
11
12    /// # Errors
13    ///
14    /// Returns an error when the SDK is unsupported or when its resolved
15    /// modules contain missing, replaced, or unsupported versions.
16    fn sdk_method_mappings(
17        &self,
18        resolved_sdk: &ResolvedSdk,
19    ) -> Result<Vec<SdkMethodMapping>, Self::Error>;
20
21    /// # Errors
22    ///
23    /// Returns an error when the provider cannot map every requested API method
24    /// to a permissions policy entry.
25    fn permissions_policy(&self, methods: &[ApiMethod]) -> Result<serde_json::Value, Self::Error>;
26}