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)]
pub struct ConnectorMetadata {
pub apple_pay: Option<ApplePayMetadata>,
pub google_pay: Option<GpayMetaData>,
pub apple_pay: Option<ApplepayConnectorMetadataRequest>,
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct ApplepayConnectorMetadataRequest {
pub session_token_data: Option<SessionTokenInfo>,
}
#[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>,
) -> RouterResult<()> {
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::ApiErrorResponse::InvalidDataFormat {
field_name: "metadata".to_string(),
@ -393,18 +393,23 @@ fn validate_certificate_in_mca_metadata(
parsed_connector_metadata
.apple_pay
.map(|applepay_metadata| {
.and_then(|applepay_metadata| {
applepay_metadata
.session_token_data
.map(|session_token_data| {
let api_models::payments::SessionTokenInfo {
certificate,
certificate_keys,
..
} = applepay_metadata.session_token_data;
} = 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| ())
})
})
.transpose()?;
Ok(())