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]]
name = "opentelemetry"
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 = [
"opentelemetry_api",
"opentelemetry_sdk",
@ -2959,7 +2959,7 @@ dependencies = [
[[package]]
name = "opentelemetry-otlp"
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 = [
"async-trait",
"futures",
@ -2976,7 +2976,7 @@ dependencies = [
[[package]]
name = "opentelemetry-proto"
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 = [
"futures",
"futures-util",
@ -2988,7 +2988,7 @@ dependencies = [
[[package]]
name = "opentelemetry_api"
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 = [
"fnv",
"futures-channel",
@ -3003,7 +3003,7 @@ dependencies = [
[[package]]
name = "opentelemetry_sdk"
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 = [
"async-trait",
"crossbeam-channel",

View File

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

View File

@ -350,7 +350,10 @@ where
connector_and_payment_method_type.0.as_str(),
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(),
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
};

View File

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