diff --git a/wp_api/src/lib.rs b/wp_api/src/lib.rs index 8df46d48f..7e3c02d4d 100644 --- a/wp_api/src/lib.rs +++ b/wp_api/src/lib.rs @@ -1,5 +1,6 @@ #![allow(dead_code, unused_variables)] +use serde::Deserialize; use std::collections::HashMap; pub use api_error::*; @@ -390,6 +391,16 @@ pub fn parse_api_details_response(response: WPNetworkResponse) -> Result>( + response: &'de WPNetworkResponse, +) -> Result { + parse_response_for_generic_errors(response)?; + serde_json::from_slice(&response.body).map_err(|err| WPApiError::ParsingError { + reason: err.to_string(), + response: String::from_utf8_lossy(&response.body).to_string(), + }) +} + pub fn parse_response_for_generic_errors(response: &WPNetworkResponse) -> Result<(), WPApiError> { let response_str = String::from_utf8_lossy(&response.body).to_string(); // TODO: Further parse the response body to include error message diff --git a/wp_api/src/users.rs b/wp_api/src/users.rs index e07f165b7..277d71e97 100644 --- a/wp_api/src/users.rs +++ b/wp_api/src/users.rs @@ -3,79 +3,69 @@ use std::collections::HashMap; use serde::{Deserialize, Serialize}; use wp_derive::WPContextual; -use crate::{parse_response_for_generic_errors, WPApiError, WPApiParamOrder, WPNetworkResponse}; +use crate::{parse_wp_response, WPApiError, WPApiParamOrder, WPNetworkResponse}; #[uniffi::export] pub fn parse_filter_users_response( response: &WPNetworkResponse, ) -> Result, WPApiError> { - parse_users_response(response) + parse_wp_response(response) } #[uniffi::export] pub fn parse_filter_retrieve_user_response( response: &WPNetworkResponse, ) -> Result { - parse_users_response(response) + parse_wp_response(response) } #[uniffi::export] pub fn parse_list_users_response_with_edit_context( response: &WPNetworkResponse, ) -> Result, WPApiError> { - parse_users_response(response) + parse_wp_response(response) } #[uniffi::export] pub fn parse_list_users_response_with_embed_context( response: &WPNetworkResponse, ) -> Result, WPApiError> { - parse_users_response(response) + parse_wp_response(response) } #[uniffi::export] pub fn parse_list_users_response_with_view_context( response: &WPNetworkResponse, ) -> Result, WPApiError> { - parse_users_response(response) + parse_wp_response(response) } #[uniffi::export] pub fn parse_retrieve_user_response_with_edit_context( response: &WPNetworkResponse, ) -> Result { - parse_users_response(response) + parse_wp_response(response) } #[uniffi::export] pub fn parse_retrieve_user_response_with_embed_context( response: &WPNetworkResponse, ) -> Result { - parse_users_response(response) + parse_wp_response(response) } #[uniffi::export] pub fn parse_retrieve_user_response_with_view_context( response: &WPNetworkResponse, ) -> Result { - parse_users_response(response) + parse_wp_response(response) } #[uniffi::export] pub fn parse_delete_user_response( response: &WPNetworkResponse, ) -> Result { - parse_users_response(response) -} - -pub fn parse_users_response<'de, T: Deserialize<'de>>( - response: &'de WPNetworkResponse, -) -> Result { - parse_response_for_generic_errors(response)?; - serde_json::from_slice(&response.body).map_err(|err| WPApiError::ParsingError { - reason: err.to_string(), - response: String::from_utf8_lossy(&response.body).to_string(), - }) + parse_wp_response(response) } #[derive(Debug, Clone, Copy, PartialEq, Eq, uniffi::Enum)]