refactor(router): include payment method type in connector choice for session flow (#1036)

This commit is contained in:
ItsMeShashank
2023-05-08 14:45:28 +05:30
committed by GitHub
parent ab55d21013
commit 73b8988322
4 changed files with 27 additions and 10 deletions

10
Cargo.lock generated
View File

@ -2950,7 +2950,7 @@ dependencies = [
[[package]] [[package]]
name = "opentelemetry" name = "opentelemetry"
version = "0.18.0" version = "0.18.0"
source = "git+https://github.com/open-telemetry/opentelemetry-rust?rev=44b90202fd744598db8b0ace5b8f0bad7ec45658#44b90202fd744598db8b0ace5b8f0bad7ec45658" source = "git+https://github.com/open-telemetry/opentelemetry-rust/?rev=44b90202fd744598db8b0ace5b8f0bad7ec45658#44b90202fd744598db8b0ace5b8f0bad7ec45658"
dependencies = [ dependencies = [
"opentelemetry_api", "opentelemetry_api",
"opentelemetry_sdk", "opentelemetry_sdk",
@ -2959,7 +2959,7 @@ dependencies = [
[[package]] [[package]]
name = "opentelemetry-otlp" name = "opentelemetry-otlp"
version = "0.11.0" version = "0.11.0"
source = "git+https://github.com/open-telemetry/opentelemetry-rust?rev=44b90202fd744598db8b0ace5b8f0bad7ec45658#44b90202fd744598db8b0ace5b8f0bad7ec45658" source = "git+https://github.com/open-telemetry/opentelemetry-rust/?rev=44b90202fd744598db8b0ace5b8f0bad7ec45658#44b90202fd744598db8b0ace5b8f0bad7ec45658"
dependencies = [ dependencies = [
"async-trait", "async-trait",
"futures", "futures",
@ -2976,7 +2976,7 @@ dependencies = [
[[package]] [[package]]
name = "opentelemetry-proto" name = "opentelemetry-proto"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/open-telemetry/opentelemetry-rust?rev=44b90202fd744598db8b0ace5b8f0bad7ec45658#44b90202fd744598db8b0ace5b8f0bad7ec45658" source = "git+https://github.com/open-telemetry/opentelemetry-rust/?rev=44b90202fd744598db8b0ace5b8f0bad7ec45658#44b90202fd744598db8b0ace5b8f0bad7ec45658"
dependencies = [ dependencies = [
"futures", "futures",
"futures-util", "futures-util",
@ -2988,7 +2988,7 @@ dependencies = [
[[package]] [[package]]
name = "opentelemetry_api" name = "opentelemetry_api"
version = "0.18.0" version = "0.18.0"
source = "git+https://github.com/open-telemetry/opentelemetry-rust?rev=44b90202fd744598db8b0ace5b8f0bad7ec45658#44b90202fd744598db8b0ace5b8f0bad7ec45658" source = "git+https://github.com/open-telemetry/opentelemetry-rust/?rev=44b90202fd744598db8b0ace5b8f0bad7ec45658#44b90202fd744598db8b0ace5b8f0bad7ec45658"
dependencies = [ dependencies = [
"fnv", "fnv",
"futures-channel", "futures-channel",
@ -3003,7 +3003,7 @@ dependencies = [
[[package]] [[package]]
name = "opentelemetry_sdk" name = "opentelemetry_sdk"
version = "0.18.0" version = "0.18.0"
source = "git+https://github.com/open-telemetry/opentelemetry-rust?rev=44b90202fd744598db8b0ace5b8f0bad7ec45658#44b90202fd744598db8b0ace5b8f0bad7ec45658" source = "git+https://github.com/open-telemetry/opentelemetry-rust/?rev=44b90202fd744598db8b0ace5b8f0bad7ec45658#44b90202fd744598db8b0ace5b8f0bad7ec45658"
dependencies = [ dependencies = [
"async-trait", "async-trait",
"crossbeam-channel", "crossbeam-channel",

View File

@ -1032,8 +1032,13 @@ where
let connector = if should_call_connector(operation, payment_data) { let connector = if should_call_connector(operation, payment_data) {
Some(match connector_choice { Some(match connector_choice {
api::ConnectorChoice::SessionMultiple(connectors) => { api::ConnectorChoice::SessionMultiple(session_connectors) => {
api::ConnectorCallType::Multiple(connectors) api::ConnectorCallType::Multiple(
session_connectors
.into_iter()
.map(|c| c.connector)
.collect(),
)
} }
api::ConnectorChoice::StraightThrough(straight_through) => connector_selection( api::ConnectorChoice::StraightThrough(straight_through) => connector_selection(

View File

@ -350,7 +350,10 @@ where
connector_and_payment_method_type.0.as_str(), connector_and_payment_method_type.0.as_str(),
api::GetToken::from(connector_and_payment_method_type.1), api::GetToken::from(connector_and_payment_method_type.1),
)?; )?;
connectors_data.push(connector_details); connectors_data.push(api::SessionConnectorData {
payment_method_type,
connector: connector_details,
});
} }
} }
} }
@ -364,7 +367,10 @@ where
connector_and_payment_method_type.0.as_str(), connector_and_payment_method_type.0.as_str(),
api::GetToken::from(connector_and_payment_method_type.1), api::GetToken::from(connector_and_payment_method_type.1),
)?; )?;
connectors_data.push(connector_details); connectors_data.push(api::SessionConnectorData {
payment_method_type: connector_and_payment_method_type.1,
connector: connector_details,
});
} }
connectors_data connectors_data
}; };

View File

@ -150,8 +150,14 @@ pub struct ConnectorData {
pub get_token: GetToken, pub get_token: GetToken,
} }
#[derive(Clone)]
pub struct SessionConnectorData {
pub payment_method_type: api_enums::PaymentMethodType,
pub connector: ConnectorData,
}
pub enum ConnectorChoice { pub enum ConnectorChoice {
SessionMultiple(Vec<ConnectorData>), SessionMultiple(Vec<SessionConnectorData>),
StraightThrough(serde_json::Value), StraightThrough(serde_json::Value),
Decide, Decide,
} }