Skip to content

Commit c98a31e

Browse files
committed
code refactoring
1 parent ec2fe16 commit c98a31e

File tree

3 files changed

+65
-17
lines changed

3 files changed

+65
-17
lines changed

crates/router/src/core/proxy.rs

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,17 @@ pub async fn proxy_core(
1616
req: proxy_api_models::ProxyRequest,
1717
) -> RouterResponse<proxy_api_models::ProxyResponse> {
1818
let req_wrapper = utils::ProxyRequestWrapper(req.clone());
19-
let vault_id = req_wrapper
20-
.get_vault_id(
19+
let proxy_record = req_wrapper
20+
.get_payment_method_or_tokenization_record(
2121
&state,
2222
merchant_context.get_merchant_key_store(),
2323
merchant_context.get_merchant_account().storage_scheme,
2424
)
2525
.await?;
2626

27-
let customer_id = req_wrapper
28-
.get_customer_id(
29-
&state,
30-
merchant_context.get_merchant_key_store(),
31-
merchant_context.get_merchant_account().storage_scheme,
32-
)
33-
.await?;
27+
let vault_id = proxy_record.get_vault_id()?;
28+
let customer_id = proxy_record.get_customer_id()?;
29+
3430
let vault_response =
3531
super::payment_methods::vault::retrieve_payment_method_from_vault_internal(
3632
&state,

crates/router/src/core/proxy/utils.rs

Lines changed: 51 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,18 @@ use crate::{
1919
};
2020

2121
pub struct ProxyRequestWrapper(pub proxy_api_models::ProxyRequest);
22+
pub enum ProxyRecord {
23+
PaymentMethodRecord(domain::PaymentMethod),
24+
TokenizationRecord(domain::Tokenization),
25+
}
2226

2327
impl ProxyRequestWrapper {
24-
pub async fn get_vault_id(
28+
pub async fn get_payment_method_or_tokenization_record(
2529
&self,
2630
state: &SessionState,
2731
key_store: &domain::MerchantKeyStore,
2832
storage_scheme: common_enums::enums::MerchantStorageScheme,
29-
) -> RouterResult<payment_methods::VaultId> {
33+
) -> RouterResult<ProxyRecord> {
3034
let token = &self.0.token;
3135

3236
match self.0.token_type {
@@ -39,15 +43,13 @@ impl ProxyRequestWrapper {
3943
.change_context(errors::ApiErrorResponse::InternalServerError)
4044
.attach_printable("Unable to generate GlobalPaymentMethodId")?;
4145

42-
state
46+
let payment_method_record = state
4347
.store
4448
.find_payment_method(&((state).into()), key_store, &pm_id, storage_scheme)
4549
.await
46-
.change_context(errors::ApiErrorResponse::PaymentMethodNotFound)?
47-
.locker_id
48-
.get_required_value("vault_id")
49-
.change_context(errors::ApiErrorResponse::InternalServerError)
50-
.attach_printable("Locker id not present in Payment Method Entry")
50+
.change_context(errors::ApiErrorResponse::PaymentMethodNotFound)?;
51+
Ok(ProxyRecord::PaymentMethodRecord(payment_method_record))
52+
5153
}
5254
proxy_api_models::TokenType::TokenizationId => {
5355
Err(report!(errors::ApiErrorResponse::NotImplemented {
@@ -112,6 +114,47 @@ impl ProxyRequestWrapper {
112114
}
113115
}
114116

117+
impl ProxyRecord{
118+
pub fn get_vault_id(
119+
&self,
120+
) -> RouterResult<payment_methods::VaultId>{
121+
122+
match self {
123+
Self::PaymentMethodRecord(payment_method) => {
124+
payment_method.locker_id.clone()
125+
.get_required_value("vault_id")
126+
.change_context(errors::ApiErrorResponse::InternalServerError)
127+
.attach_printable("Locker id not present in Payment Method Entry")
128+
129+
}
130+
Self::TokenizationRecord(_) => {
131+
Err(report!(errors::ApiErrorResponse::NotImplemented {
132+
message: NotImplementedMessage::Reason(
133+
"Proxy flow using tokenization id".to_string(),
134+
),
135+
}))
136+
}
137+
}
138+
}
139+
140+
pub fn get_customer_id(
141+
&self,
142+
) -> RouterResult<id_type::GlobalCustomerId> {
143+
match self {
144+
Self::PaymentMethodRecord(payment_method) => {
145+
Ok(payment_method.customer_id.clone())
146+
}
147+
Self::TokenizationRecord(_) => {
148+
Err(report!(errors::ApiErrorResponse::NotImplemented {
149+
message: NotImplementedMessage::Reason(
150+
"Proxy flow using tokenization id".to_string(),
151+
),
152+
}))
153+
}
154+
}
155+
}
156+
}
157+
115158
#[derive(Debug)]
116159
pub struct TokenReference {
117160
pub field: String,

crates/router/src/types/domain.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,12 @@ pub mod vault {
5656
pub use hyperswitch_domain_models::vault::*;
5757
}
5858

59+
#[cfg(feature = "v2")]
60+
pub mod tokenization {
61+
pub use hyperswitch_domain_models::tokenization::*;
62+
}
63+
64+
5965
mod routing {
6066
pub use hyperswitch_domain_models::routing::*;
6167
}
@@ -83,3 +89,6 @@ pub use user::*;
8389
pub use user_key_store::*;
8490
#[cfg(feature = "v2")]
8591
pub use vault::*;
92+
93+
#[cfg(feature = "v2")]
94+
pub use tokenization::*;

0 commit comments

Comments
 (0)