util.rs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. use std::collections::HashMap;
  2. use std::sync::Arc;
  3. use parking_lot::RwLock;
  4. use uuid::Uuid;
  5. use flowy_server::af_cloud::AFCloudServer;
  6. use flowy_server::supabase::define::{USER_DEVICE_ID, USER_SIGN_IN_URL};
  7. use flowy_server_config::af_cloud_config::AFCloudConfiguration;
  8. use crate::setup_log;
  9. pub fn get_af_cloud_config() -> Option<AFCloudConfiguration> {
  10. dotenv::from_filename("./.env.ci").ok()?;
  11. setup_log();
  12. AFCloudConfiguration::from_env().ok()
  13. }
  14. pub fn af_cloud_server(config: AFCloudConfiguration) -> Arc<AFCloudServer> {
  15. let fake_device_id = uuid::Uuid::new_v4().to_string();
  16. let device_id = Arc::new(RwLock::new(fake_device_id));
  17. Arc::new(AFCloudServer::new(config, true, device_id))
  18. }
  19. pub async fn generate_sign_in_url(user_email: &str, config: &AFCloudConfiguration) -> String {
  20. let http_client = reqwest::Client::new();
  21. let api_client = client_api::Client::from(
  22. http_client,
  23. &config.base_url,
  24. &config.base_ws_url,
  25. &config.gotrue_url,
  26. );
  27. let admin_email = std::env::var("GOTRUE_ADMIN_EMAIL").unwrap();
  28. let admin_password = std::env::var("GOTRUE_ADMIN_PASSWORD").unwrap();
  29. api_client
  30. .generate_sign_in_callback_url(&admin_email, &admin_password, user_email)
  31. .await
  32. .unwrap()
  33. }
  34. pub async fn af_cloud_sign_up_param(
  35. email: &str,
  36. config: &AFCloudConfiguration,
  37. ) -> HashMap<String, String> {
  38. let mut params = HashMap::new();
  39. params.insert(
  40. USER_SIGN_IN_URL.to_string(),
  41. generate_sign_in_url(email, config).await,
  42. );
  43. params.insert(USER_DEVICE_ID.to_string(), Uuid::new_v4().to_string());
  44. params
  45. }
  46. pub fn generate_test_email() -> String {
  47. format!("{}@test.com", Uuid::new_v4())
  48. }