af_cloud_config.rs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. use serde::{Deserialize, Serialize};
  2. use flowy_error::{ErrorCode, FlowyError};
  3. pub const APPFLOWY_CLOUD_BASE_URL: &str = "APPFLOWY_CLOUD_BASE_URL";
  4. pub const APPFLOWY_CLOUD_WS_BASE_URL: &str = "APPFLOWY_CLOUD_WS_BASE_URL";
  5. pub const APPFLOWY_CLOUD_GOTRUE_URL: &str = "APPFLOWY_CLOUD_GOTRUE_URL";
  6. #[derive(Debug, Serialize, Deserialize, Clone, Default)]
  7. pub struct AFCloudConfiguration {
  8. pub base_url: String,
  9. pub ws_base_url: String,
  10. pub gotrue_url: String,
  11. }
  12. impl AFCloudConfiguration {
  13. pub fn from_env() -> Result<Self, FlowyError> {
  14. let base_url = std::env::var(APPFLOWY_CLOUD_BASE_URL).map_err(|_| {
  15. FlowyError::new(
  16. ErrorCode::InvalidAuthConfig,
  17. "Missing APPFLOWY_CLOUD_BASE_URL",
  18. )
  19. })?;
  20. let ws_base_url = std::env::var(APPFLOWY_CLOUD_WS_BASE_URL).map_err(|_| {
  21. FlowyError::new(
  22. ErrorCode::InvalidAuthConfig,
  23. "Missing APPFLOWY_CLOUD_WS_BASE_URL",
  24. )
  25. })?;
  26. let gotrue_url = std::env::var(APPFLOWY_CLOUD_GOTRUE_URL)
  27. .map_err(|_| FlowyError::new(ErrorCode::InvalidAuthConfig, "Missing AF_CLOUD_GOTRUE_URL"))?;
  28. Ok(Self {
  29. base_url,
  30. ws_base_url,
  31. gotrue_url,
  32. })
  33. }
  34. /// Write the configuration to the environment variables.
  35. pub fn write_env(&self) {
  36. std::env::set_var(APPFLOWY_CLOUD_BASE_URL, &self.base_url);
  37. std::env::set_var(APPFLOWY_CLOUD_WS_BASE_URL, &self.ws_base_url);
  38. std::env::set_var(APPFLOWY_CLOUD_GOTRUE_URL, &self.gotrue_url);
  39. }
  40. }