diff --git a/crates/desktop/artcraft/src/core/providers/mod.rs b/crates/desktop/artcraft/src/core/providers/mod.rs index a552943c94..2540a3ac91 100644 --- a/crates/desktop/artcraft/src/core/providers/mod.rs +++ b/crates/desktop/artcraft/src/core/providers/mod.rs @@ -1,3 +1,4 @@ pub mod payload; pub mod provider_credential_key; +pub mod provider_credential_loading_cache; pub mod provider_credential_type; \ No newline at end of file diff --git a/crates/desktop/artcraft/src/core/providers/payload/api_key.rs b/crates/desktop/artcraft/src/core/providers/payload/api_key.rs index e09756b11a..c00bfedcde 100644 --- a/crates/desktop/artcraft/src/core/providers/payload/api_key.rs +++ b/crates/desktop/artcraft/src/core/providers/payload/api_key.rs @@ -2,6 +2,7 @@ use std::error::Error; use std::fmt::Display; use std::path::Path; +#[derive(Clone)] pub struct ApiKeyData(String); impl ApiKeyData { diff --git a/crates/desktop/artcraft/src/core/providers/payload/provider_credential_payload.rs b/crates/desktop/artcraft/src/core/providers/payload/provider_credential_payload.rs index 93b78dfb92..5baa66690c 100644 --- a/crates/desktop/artcraft/src/core/providers/payload/provider_credential_payload.rs +++ b/crates/desktop/artcraft/src/core/providers/payload/provider_credential_payload.rs @@ -1,8 +1,10 @@ use crate::core::providers::payload::api_key::ApiKeyData; use crate::core::providers::payload::web_login::WebLoginData; +#[derive(Clone)] pub enum ProviderCredentialPayload { ApiKey(ApiKeyData), + // TODO: There might be logins in the future that use weird header states, etc. - WebLogin (WebLoginData), + WebLogin(WebLoginData), } diff --git a/crates/desktop/artcraft/src/core/providers/payload/web_login.rs b/crates/desktop/artcraft/src/core/providers/payload/web_login.rs index d3ada891f4..4f9a41766e 100644 --- a/crates/desktop/artcraft/src/core/providers/payload/web_login.rs +++ b/crates/desktop/artcraft/src/core/providers/payload/web_login.rs @@ -7,6 +7,7 @@ use std::path::Path; const CURRENT_VERSION: u8 = 1; +#[derive(Clone)] pub struct WebLoginData { pub cookies_header: Option, pub additional_headers: Option>, diff --git a/crates/desktop/artcraft/src/core/providers/provider_credential_loading_cache.rs b/crates/desktop/artcraft/src/core/providers/provider_credential_loading_cache.rs new file mode 100644 index 0000000000..431cca8fe5 --- /dev/null +++ b/crates/desktop/artcraft/src/core/providers/provider_credential_loading_cache.rs @@ -0,0 +1,46 @@ +use std::error::Error; +use std::fmt::Display; +use crate::core::providers::payload::provider_credential_payload::ProviderCredentialPayload; +use crate::core::providers::provider_credential_key::ProviderCredentialKey; +use crate::core::state::data_dir::app_data_root::AppDataRoot; + +#[derive(Clone)] +pub struct ProviderCredentialLoadingCache { + // TODO: Some kind of Arc>> + app_data_root: AppDataRoot, +} + +impl ProviderCredentialLoadingCache { + + pub fn new(app_data_root: AppDataRoot) -> Self { + Self { + app_data_root, + } + } + + pub fn get_credentials(&self, key: ProviderCredentialKey) -> Result, ProviderCredentialLoadingCacheError> { + unimplemented!() + } + + pub fn save_credentials(&self, key: ProviderCredentialKey, payload: ProviderCredentialPayload) -> Result<(), ProviderCredentialLoadingCacheError> { + unimplemented!() + } +} + +#[derive(Debug)] +pub enum ProviderCredentialLoadingCacheError { + IoError(std::io::Error), +} + +impl Error for ProviderCredentialLoadingCacheError { + fn source(&self) -> Option<&(dyn Error + 'static)> { + match self { + ProviderCredentialLoadingCacheError::IoError(err) => Some(err), + } + } +} + +impl Display for ProviderCredentialLoadingCacheError { + +} +