refactor(mca): use separate struct for connector metadata (#1465)

This commit is contained in:
Narayan Bhat
2023-06-17 20:32:13 +05:30
committed by GitHub
parent 6e581c6060
commit 8d2057844e
2 changed files with 22 additions and 13 deletions

View File

@ -1762,8 +1762,12 @@ pub struct ApplepaySessionRequest {
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct ConnectorMetadata { pub struct ConnectorMetadata {
pub apple_pay: Option<ApplePayMetadata>, pub apple_pay: Option<ApplepayConnectorMetadataRequest>,
pub google_pay: Option<GpayMetaData>, }
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct ApplepayConnectorMetadataRequest {
pub session_token_data: Option<SessionTokenInfo>,
} }
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]

View File

@ -384,7 +384,7 @@ fn validate_certificate_in_mca_metadata(
connector_metadata: Secret<serde_json::Value>, connector_metadata: Secret<serde_json::Value>,
) -> RouterResult<()> { ) -> RouterResult<()> {
let parsed_connector_metadata = connector_metadata let parsed_connector_metadata = connector_metadata
.parse_value::<api_models::payments::ConnectorMetadata>("ApplepaySessionTokenData") .parse_value::<api_models::payments::ConnectorMetadata>("ConnectorMetadata")
.change_context(errors::ParsingError::StructParseFailure("Metadata")) .change_context(errors::ParsingError::StructParseFailure("Metadata"))
.change_context(errors::ApiErrorResponse::InvalidDataFormat { .change_context(errors::ApiErrorResponse::InvalidDataFormat {
field_name: "metadata".to_string(), field_name: "metadata".to_string(),
@ -393,17 +393,22 @@ fn validate_certificate_in_mca_metadata(
parsed_connector_metadata parsed_connector_metadata
.apple_pay .apple_pay
.map(|applepay_metadata| { .and_then(|applepay_metadata| {
let api_models::payments::SessionTokenInfo { applepay_metadata
certificate, .session_token_data
certificate_keys, .map(|session_token_data| {
.. let api_models::payments::SessionTokenInfo {
} = applepay_metadata.session_token_data; certificate,
helpers::create_identity_from_certificate_and_key(certificate, certificate_keys) certificate_keys,
.change_context(errors::ApiErrorResponse::InvalidDataValue { ..
field_name: "certificate/certificate key", } = session_token_data;
helpers::create_identity_from_certificate_and_key(certificate, certificate_keys)
.change_context(errors::ApiErrorResponse::InvalidDataValue {
field_name: "certificate/certificate key",
})
.map(|_identity_result| ())
}) })
.map(|_identity_result| ())
}) })
.transpose()?; .transpose()?;