mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-29 17:19:15 +08:00
refactor(router): include payment method type in connector choice for session flow (#1036)
This commit is contained in:
10
Cargo.lock
generated
10
Cargo.lock
generated
@ -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",
|
||||||
|
|||||||
@ -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(
|
||||||
|
|||||||
@ -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
|
||||||
};
|
};
|
||||||
|
|||||||
@ -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,
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user