coven_domain/joining/
config.rs1use coven_foundation::config::{CloudProvider, Config, HomeStorage};
2use coven_storage::cloud::CloudHomeJoinInfo;
3use coven_storage::CloudCipher;
4
5pub fn build_config(
9 store_id: &str,
10 device_id: &str,
11 store_name: &str,
12 join_info: &CloudHomeJoinInfo,
13 cipher: &CloudCipher,
14) -> Config {
15 let mut config = Config::with_defaults(
16 store_id.to_string(),
17 device_id.to_string(),
18 store_name.to_string(),
19 );
20
21 config.cloud_home.storage = match cipher {
22 CloudCipher::Encrypted(_) => HomeStorage::Opaque,
23 CloudCipher::Plaintext => HomeStorage::Browsable,
24 };
25
26 config.cloud_home.provider = Some(match join_info {
27 CloudHomeJoinInfo::S3 { .. } => CloudProvider::S3,
28 CloudHomeJoinInfo::GoogleDrive { .. } => CloudProvider::GoogleDrive,
29 CloudHomeJoinInfo::Dropbox { .. } => CloudProvider::Dropbox,
30 CloudHomeJoinInfo::OneDrive { .. } => CloudProvider::OneDrive,
31 CloudHomeJoinInfo::CloudKit | CloudHomeJoinInfo::CloudKitShare { .. } => {
32 CloudProvider::CloudKit
33 }
34 });
35
36 match join_info {
37 CloudHomeJoinInfo::S3 {
38 bucket,
39 region,
40 endpoint,
41 key_prefix,
42 ..
43 } => {
44 config.cloud_home.s3_bucket = Some(bucket.clone());
45 config.cloud_home.s3_region = Some(region.clone());
46 config.cloud_home.s3_endpoint = endpoint.clone();
47 config.cloud_home.s3_key_prefix = key_prefix.clone();
48 }
49 CloudHomeJoinInfo::GoogleDrive { folder_id } => {
50 config.cloud_home.google_drive_folder_id = Some(folder_id.clone());
51 }
52 CloudHomeJoinInfo::Dropbox { folder_path } => {
53 config.cloud_home.dropbox_folder_path = Some(folder_path.clone());
54 }
55 CloudHomeJoinInfo::OneDrive {
56 drive_id,
57 folder_id,
58 } => {
59 config.cloud_home.onedrive_drive_id = Some(drive_id.clone());
60 config.cloud_home.onedrive_folder_id = Some(folder_id.clone());
61 }
62 CloudHomeJoinInfo::CloudKit => {}
63 CloudHomeJoinInfo::CloudKitShare {
64 owner_name,
65 zone_name,
66 ..
67 } => {
68 config.cloud_home.cloudkit_owner_name = Some(owner_name.clone());
69 config.cloud_home.cloudkit_zone_name = Some(zone_name.clone());
70 }
71 }
72
73 config
74}