refactor(connectors): [BOA] PII data masking (#3702)

Co-authored-by: Arjun Karthik <m.arjunkarthik@gmail.com>
Co-authored-by: likhinbopanna <131246334+likhinbopanna@users.noreply.github.com>
This commit is contained in:
AkshayaFoiger
2024-02-20 20:23:09 +05:30
committed by GitHub
parent e5e44857d2
commit 49c71d093e
2 changed files with 20 additions and 15 deletions

View File

@ -1079,8 +1079,10 @@ impl ConnectorIntegration<api::Execute, types::RefundsData, types::RefundsRespon
.response .response
.parse_struct("bankofamerica RefundResponse") .parse_struct("bankofamerica RefundResponse")
.change_context(errors::ConnectorError::ResponseDeserializationFailed)?; .change_context(errors::ConnectorError::ResponseDeserializationFailed)?;
event_builder.map(|i| i.set_response_body(&response)); event_builder.map(|i| i.set_response_body(&response));
router_env::logger::info!(connector_response=?response); router_env::logger::info!(connector_response=?response);
types::RouterData::try_from(types::ResponseRouterData { types::RouterData::try_from(types::ResponseRouterData {
response, response,
data: data.clone(), data: data.clone(),

View File

@ -2,7 +2,7 @@ use api_models::payments;
use base64::Engine; use base64::Engine;
use common_utils::{ext_traits::ValueExt, pii}; use common_utils::{ext_traits::ValueExt, pii};
use error_stack::{IntoReport, ResultExt}; use error_stack::{IntoReport, ResultExt};
use masking::{PeekInterface, Secret}; use masking::{ExposeInterface, PeekInterface, Secret};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use serde_json::Value; use serde_json::Value;
@ -113,9 +113,9 @@ pub struct MerchantDefinedInformation {
pub struct BankOfAmericaConsumerAuthInformation { pub struct BankOfAmericaConsumerAuthInformation {
ucaf_collection_indicator: Option<String>, ucaf_collection_indicator: Option<String>,
cavv: Option<String>, cavv: Option<String>,
ucaf_authentication_data: Option<String>, ucaf_authentication_data: Option<Secret<String>>,
xid: Option<String>, xid: Option<String>,
directory_server_transaction_id: Option<String>, directory_server_transaction_id: Option<Secret<String>>,
specification_version: Option<String>, specification_version: Option<String>,
} }
@ -213,7 +213,7 @@ pub struct BillTo {
first_name: Secret<String>, first_name: Secret<String>,
last_name: Secret<String>, last_name: Secret<String>,
address1: Secret<String>, address1: Secret<String>,
locality: String, locality: Secret<String>,
administrative_area: Secret<String>, administrative_area: Secret<String>,
postal_code: Secret<String>, postal_code: Secret<String>,
country: api_enums::CountryAlpha2, country: api_enums::CountryAlpha2,
@ -235,7 +235,7 @@ fn build_bill_to(
first_name: address.get_first_name()?.to_owned(), first_name: address.get_first_name()?.to_owned(),
last_name: address.get_last_name()?.to_owned(), last_name: address.get_last_name()?.to_owned(),
address1: address.get_line1()?.to_owned(), address1: address.get_line1()?.to_owned(),
locality: address.get_city()?.to_owned(), locality: Secret::new(address.get_city()?.to_owned()),
administrative_area: Secret::from(state), administrative_area: Secret::from(state),
postal_code: address.get_zip()?.to_owned(), postal_code: address.get_zip()?.to_owned(),
country: address.get_country()?.to_owned(), country: address.get_country()?.to_owned(),
@ -435,7 +435,7 @@ pub struct ClientRiskInformation {
#[derive(Debug, Clone, Deserialize, Serialize)] #[derive(Debug, Clone, Deserialize, Serialize)]
pub struct ClientRiskInformationRules { pub struct ClientRiskInformationRules {
name: String, name: Secret<String>,
} }
#[derive(Debug, Clone, Serialize, Deserialize)] #[derive(Debug, Clone, Serialize, Deserialize)]
@ -889,8 +889,8 @@ impl ForeignFrom<(BankofamericaPaymentStatus, bool)> for enums::AttemptStatus {
#[derive(Debug, Deserialize, Serialize)] #[derive(Debug, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct BankOfAmericaConsumerAuthInformationResponse { pub struct BankOfAmericaConsumerAuthInformationResponse {
access_token: String, access_token: Secret<String>,
device_data_collection_url: String, device_data_collection_url: Secret<String>,
reference_id: String, reference_id: String,
} }
@ -1066,10 +1066,12 @@ impl<F>
redirection_data: Some(services::RedirectForm::CybersourceAuthSetup { redirection_data: Some(services::RedirectForm::CybersourceAuthSetup {
access_token: info_response access_token: info_response
.consumer_authentication_information .consumer_authentication_information
.access_token, .access_token
.expose(),
ddc_url: info_response ddc_url: info_response
.consumer_authentication_information .consumer_authentication_information
.device_data_collection_url, .device_data_collection_url
.expose(),
reference_id: info_response reference_id: info_response
.consumer_authentication_information .consumer_authentication_information
.reference_id, .reference_id,
@ -1322,10 +1324,10 @@ pub enum BankOfAmericaAuthEnrollmentStatus {
pub struct BankOfAmericaConsumerAuthValidateResponse { pub struct BankOfAmericaConsumerAuthValidateResponse {
ucaf_collection_indicator: Option<String>, ucaf_collection_indicator: Option<String>,
cavv: Option<String>, cavv: Option<String>,
ucaf_authentication_data: Option<String>, ucaf_authentication_data: Option<Secret<String>>,
xid: Option<String>, xid: Option<String>,
specification_version: Option<String>, specification_version: Option<String>,
directory_server_transaction_id: Option<String>, directory_server_transaction_id: Option<Secret<String>>,
indicator: Option<String>, indicator: Option<String>,
} }
@ -1337,7 +1339,7 @@ pub struct BankOfAmericaThreeDSMetadata {
#[derive(Debug, Deserialize, Serialize)] #[derive(Debug, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct BankOfAmericaConsumerAuthInformationEnrollmentResponse { pub struct BankOfAmericaConsumerAuthInformationEnrollmentResponse {
access_token: Option<String>, access_token: Option<Secret<String>>,
step_up_url: Option<String>, step_up_url: Option<String>,
//Added to segregate the three_ds_data in a separate struct //Added to segregate the three_ds_data in a separate struct
#[serde(flatten)] #[serde(flatten)]
@ -1420,7 +1422,8 @@ impl<F>
let redirection_data = match ( let redirection_data = match (
info_response info_response
.consumer_authentication_information .consumer_authentication_information
.access_token, .access_token
.map(|access_token| access_token.expose()),
info_response info_response
.consumer_authentication_information .consumer_authentication_information
.step_up_url, .step_up_url,
@ -2023,7 +2026,7 @@ impl
client_risk_information.rules.map(|rules| { client_risk_information.rules.map(|rules| {
rules rules
.iter() .iter()
.map(|risk_info| format!(" , {}", risk_info.name)) .map(|risk_info| format!(" , {}", risk_info.name.clone().expose()))
.collect::<Vec<String>>() .collect::<Vec<String>>()
.join("") .join("")
}) })