mirror of
				https://github.com/juspay/hyperswitch.git
				synced 2025-10-31 10:06:32 +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
	 ItsMeShashank
					ItsMeShashank