From 73581e4a4e2a6f8007cdab6d6e8f6896e64daa9a Mon Sep 17 00:00:00 2001 From: kos-for-juspay <115210506+kos-for-juspay@users.noreply.github.com> Date: Tue, 13 Dec 2022 14:22:45 +0100 Subject: [PATCH] refactor(router): miscellaneous cleanups (#134) --- .../router/src/connector/authorizedotnet.rs | 136 ++++-------------- .../connector/authorizedotnet/transformers.rs | 6 +- .../src/connector/stripe/transformers.rs | 10 +- crates/router/src/core/admin.rs | 7 +- 4 files changed, 39 insertions(+), 120 deletions(-) diff --git a/crates/router/src/connector/authorizedotnet.rs b/crates/router/src/connector/authorizedotnet.rs index 948b01ecc5..b5b7bc0b38 100644 --- a/crates/router/src/connector/authorizedotnet.rs +++ b/crates/router/src/connector/authorizedotnet.rs @@ -162,27 +162,7 @@ impl &self, res: Bytes, ) -> CustomResult { - let response: authorizedotnet::AuthorizedotnetPaymentsResponse = res - .parse_struct("AuthorizedotnetPaymentsResponse") - .change_context(errors::ConnectorError::ResponseDeserializationFailed)?; - - let error = response - .transaction_response - .errors - .and_then(|errors| { - errors.first().map(|error| types::ErrorResponse { - code: error.error_code.clone(), - message: error.error_text.clone(), - reason: None, - }) - }) - .unwrap_or_else(|| types::ErrorResponse { - code: consts::NO_ERROR_CODE.to_string(), - message: consts::NO_ERROR_MESSAGE.to_string(), - reason: None, - }); - - Ok(error) + get_error_response(res) } } @@ -282,27 +262,7 @@ impl &self, res: Bytes, ) -> CustomResult { - let response: authorizedotnet::AuthorizedotnetPaymentsResponse = res - .parse_struct("AuthorizedotnetPaymentsResponse") - .change_context(errors::ConnectorError::ResponseDeserializationFailed)?; - - let error = response - .transaction_response - .errors - .and_then(|errors| { - errors.first().map(|error| types::ErrorResponse { - code: error.error_code.clone(), - message: error.error_text.clone(), - reason: None, - }) - }) - .unwrap_or_else(|| types::ErrorResponse { - code: consts::NO_ERROR_CODE.to_string(), - message: consts::NO_ERROR_MESSAGE.to_string(), - reason: None, - }); - - Ok(error) + get_error_response(res) } } @@ -393,27 +353,7 @@ impl &self, res: Bytes, ) -> CustomResult { - let response: authorizedotnet::AuthorizedotnetPaymentsResponse = res - .parse_struct("AuthorizedotnetPaymentsResponse") - .change_context(errors::ConnectorError::ResponseDeserializationFailed)?; - - let error = response - .transaction_response - .errors - .and_then(|errors| { - errors.first().map(|error| types::ErrorResponse { - code: error.error_code.clone(), - message: error.error_text.clone(), - reason: None, - }) - }) - .unwrap_or_else(|| types::ErrorResponse { - code: consts::NO_ERROR_CODE.to_string(), - message: consts::NO_ERROR_MESSAGE.to_string(), - reason: None, - }); - - Ok(error) + get_error_response(res) } } @@ -506,28 +446,7 @@ impl services::ConnectorIntegration CustomResult { - let response: authorizedotnet::AuthorizedotnetPaymentsResponse = res - .parse_struct("AuthorizedotnetPaymentsResponse") - .change_context(errors::ConnectorError::ResponseDeserializationFailed)?; - logger::info!(response=?res); - - let error = response - .transaction_response - .errors - .and_then(|errors| { - errors.first().map(|error| types::ErrorResponse { - code: error.error_code.clone(), - message: error.error_text.clone(), - reason: None, - }) - }) - .unwrap_or_else(|| types::ErrorResponse { - code: consts::NO_ERROR_CODE.to_string(), - message: consts::NO_ERROR_MESSAGE.to_string(), - reason: None, - }); - - Ok(error) + get_error_response(res) } } @@ -615,27 +534,7 @@ impl services::ConnectorIntegration CustomResult { - let response: authorizedotnet::AuthorizedotnetPaymentsResponse = res - .parse_struct("AuthorizedotnetPaymentsResponse") - .change_context(errors::ConnectorError::ResponseDeserializationFailed)?; - - let error = response - .transaction_response - .errors - .and_then(|errors| { - errors.first().map(|error| types::ErrorResponse { - code: error.error_code.clone(), - message: error.error_text.clone(), - reason: None, - }) - }) - .unwrap_or_else(|| types::ErrorResponse { - code: consts::NO_ERROR_CODE.to_string(), - message: consts::NO_ERROR_MESSAGE.to_string(), - reason: None, - }); - - Ok(error) + get_error_response(res) } } @@ -664,3 +563,28 @@ impl api::IncomingWebhook for Authorizedotnet { } impl services::ConnectorRedirectResponse for Authorizedotnet {} + +#[inline] +fn get_error_response(bytes: Bytes) -> CustomResult { + let response: authorizedotnet::AuthorizedotnetPaymentsResponse = bytes + .parse_struct("AuthorizedotnetPaymentsResponse") + .change_context(errors::ConnectorError::ResponseDeserializationFailed)?; + + logger::info!(response=?response); + + Ok(response + .transaction_response + .errors + .and_then(|errors| { + errors.into_iter().next().map(|error| types::ErrorResponse { + code: error.error_code, + message: error.error_text, + reason: None, + }) + }) + .unwrap_or_else(|| types::ErrorResponse { + code: consts::NO_ERROR_CODE.to_string(), + message: consts::NO_ERROR_MESSAGE.to_string(), + reason: None, + })) +} diff --git a/crates/router/src/connector/authorizedotnet/transformers.rs b/crates/router/src/connector/authorizedotnet/transformers.rs index 9e3815a767..f589ce9cd0 100644 --- a/crates/router/src/connector/authorizedotnet/transformers.rs +++ b/crates/router/src/connector/authorizedotnet/transformers.rs @@ -287,9 +287,9 @@ impl .transaction_response .errors .and_then(|errors| { - errors.first().map(|error| types::ErrorResponse { - code: error.error_code.clone(), - message: error.error_text.clone(), + errors.into_iter().next().map(|error| types::ErrorResponse { + code: error.error_code, + message: error.error_text, reason: None, }) }); diff --git a/crates/router/src/connector/stripe/transformers.rs b/crates/router/src/connector/stripe/transformers.rs index e4f50b9c53..e7cc99ec99 100644 --- a/crates/router/src/connector/stripe/transformers.rs +++ b/crates/router/src/connector/stripe/transformers.rs @@ -273,11 +273,12 @@ pub struct StripeMetadata { pub txn_uuid: String, } -#[derive(Clone, Debug, Eq, PartialEq, Deserialize, Serialize)] +#[derive(Clone, Default, Debug, Eq, PartialEq, Deserialize, Serialize)] #[serde(rename_all = "snake_case")] pub enum StripePaymentStatus { Succeeded, Failed, + #[default] Processing, #[serde(rename = "requires_action")] RequiresCustomerAction, @@ -288,13 +289,6 @@ pub enum StripePaymentStatus { RequiresCapture, } -// Default should be Processing -impl Default for StripePaymentStatus { - fn default() -> Self { - StripePaymentStatus::Processing - } -} - impl From for enums::AttemptStatus { fn from(item: StripePaymentStatus) -> Self { match item { diff --git a/crates/router/src/core/admin.rs b/crates/router/src/core/admin.rs index d14489ba69..67db334585 100644 --- a/crates/router/src/core/admin.rs +++ b/crates/router/src/core/admin.rs @@ -17,10 +17,11 @@ use crate::{ #[inline] fn create_merchant_api_key() -> String { + let id = Uuid::new_v4().simple(); match env::which() { - Env::Development => format!("dev_{}", &Uuid::new_v4().simple().to_string()), - Env::Production => format!("prd_{}", &Uuid::new_v4().simple().to_string()), - Env::Sandbox => format!("snd_{}", &Uuid::new_v4().simple().to_string()), + Env::Development => format!("dev_{id}"), + Env::Production => format!("prd_{id}"), + Env::Sandbox => format!("snd_{id}"), } }