From 855484ccee78c3d21661f4828401e192f4edfc11 Mon Sep 17 00:00:00 2001 From: Oguz Kocer Date: Thu, 8 Aug 2024 15:07:13 -0400 Subject: [PATCH] Change UrlDiscovery attempts type from Vec to HashMap (#239) --- wp_api/src/login/login_client.rs | 4 ++-- wp_api/src/login/url_discovery.rs | 18 +++++++++++++++--- wp_api_integration_tests/src/lib.rs | 6 +++++- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/wp_api/src/login/login_client.rs b/wp_api/src/login/login_client.rs index 6af74ea6..abc4a804 100644 --- a/wp_api/src/login/login_client.rs +++ b/wp_api/src/login/login_client.rs @@ -71,8 +71,8 @@ impl WpLoginClient { let attempts = attempts .into_iter() .map(|a| match a { - Ok(s) => UrlDiscoveryState::Success(s), - Err(e) => UrlDiscoveryState::Failure(e), + Ok(s) => (s.site_url.url(), UrlDiscoveryState::Success(s)), + Err(e) => (e.site_url(), UrlDiscoveryState::Failure(e)), }) .collect(); if let Some(s) = successful_attempt { diff --git a/wp_api/src/login/url_discovery.rs b/wp_api/src/login/url_discovery.rs index 10dbbc7c..2691b27d 100644 --- a/wp_api/src/login/url_discovery.rs +++ b/wp_api/src/login/url_discovery.rs @@ -1,4 +1,4 @@ -use std::sync::Arc; +use std::{collections::HashMap, sync::Arc}; use crate::{ request::{WpNetworkHeaderMap, WpNetworkResponse}, @@ -55,18 +55,30 @@ pub enum UrlDiscoveryAttemptError { }, } +impl UrlDiscoveryAttemptError { + pub fn site_url(&self) -> String { + match self { + UrlDiscoveryAttemptError::FailedToParseSiteUrl { site_url, .. } => site_url.clone(), + UrlDiscoveryAttemptError::FetchApiRootUrlFailed { site_url, .. } => site_url.url(), + UrlDiscoveryAttemptError::FetchApiDetailsFailed { site_url, .. } => site_url.url(), + } + } +} + #[derive(Debug, uniffi::Record)] pub struct UrlDiscoverySuccess { pub site_url: Arc, pub api_details: Arc, pub api_root_url: Arc, - pub attempts: Vec, + pub attempts: HashMap, } #[derive(Debug, thiserror::Error, uniffi::Error)] pub enum UrlDiscoveryError { #[error("Url discovery failed: {:?}", attempts)] - UrlDiscoveryFailed { attempts: Vec }, + UrlDiscoveryFailed { + attempts: HashMap, + }, } #[derive(Debug)] diff --git a/wp_api_integration_tests/src/lib.rs b/wp_api_integration_tests/src/lib.rs index e2a46811..1f179f01 100644 --- a/wp_api_integration_tests/src/lib.rs +++ b/wp_api_integration_tests/src/lib.rs @@ -171,7 +171,11 @@ impl AssertResponse for Result { type Item = T; fn assert_response(self) -> T { - assert!(self.is_ok(), "Request failed with: {}", self.unwrap_err()); + assert!( + self.is_ok(), + "Request failed with: {:#?}", + self.unwrap_err() + ); self.unwrap() } }