fix(connector): accept state abbreviation in 2 letter (#4646)

Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com>
This commit is contained in:
SamraatBansal
2024-05-15 16:39:53 +05:30
committed by GitHub
parent 24214bcfcd
commit 3cf840e486
2 changed files with 106 additions and 86 deletions

View File

@ -2010,7 +2010,9 @@ pub enum FileUploadProvider {
Checkout, Checkout,
} }
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, strum::Display)] #[derive(
Debug, Clone, PartialEq, Eq, Serialize, Deserialize, strum::Display, strum::EnumString,
)]
pub enum UsStatesAbbreviation { pub enum UsStatesAbbreviation {
AL, AL,
AK, AK,
@ -2073,7 +2075,9 @@ pub enum UsStatesAbbreviation {
WY, WY,
} }
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, strum::Display)] #[derive(
Debug, Clone, PartialEq, Eq, Serialize, Deserialize, strum::Display, strum::EnumString,
)]
pub enum CanadaStatesAbbreviation { pub enum CanadaStatesAbbreviation {
AB, AB,
BC, BC,

View File

@ -10,6 +10,7 @@ use base64::Engine;
use common_utils::{ use common_utils::{
date_time, date_time,
errors::ReportSwitchExt, errors::ReportSwitchExt,
ext_traits::StringExt,
pii::{self, Email, IpAddress}, pii::{self, Email, IpAddress},
}; };
use diesel_models::enums; use diesel_models::enums;
@ -1789,72 +1790,80 @@ pub fn get_webhook_merchant_secret_key(connector_label: &str, merchant_id: &str)
impl ForeignTryFrom<String> for UsStatesAbbreviation { impl ForeignTryFrom<String> for UsStatesAbbreviation {
type Error = error_stack::Report<errors::ConnectorError>; type Error = error_stack::Report<errors::ConnectorError>;
fn foreign_try_from(value: String) -> Result<Self, Self::Error> { fn foreign_try_from(value: String) -> Result<Self, Self::Error> {
let binding = value.as_str().to_lowercase(); let state_abbreviation_check =
let state = binding.as_str(); StringExt::<Self>::parse_enum(value.to_uppercase().clone(), "UsStatesAbbreviation");
match state {
"alabama" => Ok(Self::AL), match state_abbreviation_check {
"alaska" => Ok(Self::AK), Ok(state_abbreviation) => Ok(state_abbreviation),
"american samoa" => Ok(Self::AS), Err(_) => {
"arizona" => Ok(Self::AZ), let binding = value.as_str().to_lowercase();
"arkansas" => Ok(Self::AR), let state = binding.as_str();
"california" => Ok(Self::CA), match state {
"colorado" => Ok(Self::CO), "alabama" => Ok(Self::AL),
"connecticut" => Ok(Self::CT), "alaska" => Ok(Self::AK),
"delaware" => Ok(Self::DE), "american samoa" => Ok(Self::AS),
"district of columbia" | "columbia" => Ok(Self::DC), "arizona" => Ok(Self::AZ),
"federated states of micronesia" | "micronesia" => Ok(Self::FM), "arkansas" => Ok(Self::AR),
"florida" => Ok(Self::FL), "california" => Ok(Self::CA),
"georgia" => Ok(Self::GA), "colorado" => Ok(Self::CO),
"guam" => Ok(Self::GU), "connecticut" => Ok(Self::CT),
"hawaii" => Ok(Self::HI), "delaware" => Ok(Self::DE),
"idaho" => Ok(Self::ID), "district of columbia" | "columbia" => Ok(Self::DC),
"illinois" => Ok(Self::IL), "federated states of micronesia" | "micronesia" => Ok(Self::FM),
"indiana" => Ok(Self::IN), "florida" => Ok(Self::FL),
"iowa" => Ok(Self::IA), "georgia" => Ok(Self::GA),
"kansas" => Ok(Self::KS), "guam" => Ok(Self::GU),
"kentucky" => Ok(Self::KY), "hawaii" => Ok(Self::HI),
"louisiana" => Ok(Self::LA), "idaho" => Ok(Self::ID),
"maine" => Ok(Self::ME), "illinois" => Ok(Self::IL),
"marshall islands" => Ok(Self::MH), "indiana" => Ok(Self::IN),
"maryland" => Ok(Self::MD), "iowa" => Ok(Self::IA),
"massachusetts" => Ok(Self::MA), "kansas" => Ok(Self::KS),
"michigan" => Ok(Self::MI), "kentucky" => Ok(Self::KY),
"minnesota" => Ok(Self::MN), "louisiana" => Ok(Self::LA),
"mississippi" => Ok(Self::MS), "maine" => Ok(Self::ME),
"missouri" => Ok(Self::MO), "marshall islands" => Ok(Self::MH),
"montana" => Ok(Self::MT), "maryland" => Ok(Self::MD),
"nebraska" => Ok(Self::NE), "massachusetts" => Ok(Self::MA),
"nevada" => Ok(Self::NV), "michigan" => Ok(Self::MI),
"new hampshire" => Ok(Self::NH), "minnesota" => Ok(Self::MN),
"new jersey" => Ok(Self::NJ), "mississippi" => Ok(Self::MS),
"new mexico" => Ok(Self::NM), "missouri" => Ok(Self::MO),
"new york" => Ok(Self::NY), "montana" => Ok(Self::MT),
"north carolina" => Ok(Self::NC), "nebraska" => Ok(Self::NE),
"north dakota" => Ok(Self::ND), "nevada" => Ok(Self::NV),
"northern mariana islands" => Ok(Self::MP), "new hampshire" => Ok(Self::NH),
"ohio" => Ok(Self::OH), "new jersey" => Ok(Self::NJ),
"oklahoma" => Ok(Self::OK), "new mexico" => Ok(Self::NM),
"oregon" => Ok(Self::OR), "new york" => Ok(Self::NY),
"palau" => Ok(Self::PW), "north carolina" => Ok(Self::NC),
"pennsylvania" => Ok(Self::PA), "north dakota" => Ok(Self::ND),
"puerto rico" => Ok(Self::PR), "northern mariana islands" => Ok(Self::MP),
"rhode island" => Ok(Self::RI), "ohio" => Ok(Self::OH),
"south carolina" => Ok(Self::SC), "oklahoma" => Ok(Self::OK),
"south dakota" => Ok(Self::SD), "oregon" => Ok(Self::OR),
"tennessee" => Ok(Self::TN), "palau" => Ok(Self::PW),
"texas" => Ok(Self::TX), "pennsylvania" => Ok(Self::PA),
"utah" => Ok(Self::UT), "puerto rico" => Ok(Self::PR),
"vermont" => Ok(Self::VT), "rhode island" => Ok(Self::RI),
"virgin islands" => Ok(Self::VI), "south carolina" => Ok(Self::SC),
"virginia" => Ok(Self::VA), "south dakota" => Ok(Self::SD),
"washington" => Ok(Self::WA), "tennessee" => Ok(Self::TN),
"west virginia" => Ok(Self::WV), "texas" => Ok(Self::TX),
"wisconsin" => Ok(Self::WI), "utah" => Ok(Self::UT),
"wyoming" => Ok(Self::WY), "vermont" => Ok(Self::VT),
_ => Err(errors::ConnectorError::InvalidDataFormat { "virgin islands" => Ok(Self::VI),
field_name: "address.state", "virginia" => Ok(Self::VA),
"washington" => Ok(Self::WA),
"west virginia" => Ok(Self::WV),
"wisconsin" => Ok(Self::WI),
"wyoming" => Ok(Self::WY),
_ => Err(errors::ConnectorError::InvalidDataFormat {
field_name: "address.state",
}
.into()),
}
} }
.into()),
} }
} }
} }
@ -1862,26 +1871,33 @@ impl ForeignTryFrom<String> for UsStatesAbbreviation {
impl ForeignTryFrom<String> for CanadaStatesAbbreviation { impl ForeignTryFrom<String> for CanadaStatesAbbreviation {
type Error = error_stack::Report<errors::ConnectorError>; type Error = error_stack::Report<errors::ConnectorError>;
fn foreign_try_from(value: String) -> Result<Self, Self::Error> { fn foreign_try_from(value: String) -> Result<Self, Self::Error> {
let binding = value.as_str().to_lowercase(); let state_abbreviation_check =
let state = binding.as_str(); StringExt::<Self>::parse_enum(value.to_uppercase().clone(), "CanadaStatesAbbreviation");
match state { match state_abbreviation_check {
"alberta" => Ok(Self::AB), Ok(state_abbreviation) => Ok(state_abbreviation),
"british columbia" => Ok(Self::BC), Err(_) => {
"manitoba" => Ok(Self::MB), let binding = value.as_str().to_lowercase();
"new brunswick" => Ok(Self::NB), let state = binding.as_str();
"newfoundland and labrador" | "newfoundland & labrador" => Ok(Self::NL), match state {
"northwest territories" => Ok(Self::NT), "alberta" => Ok(Self::AB),
"nova scotia" => Ok(Self::NS), "british columbia" => Ok(Self::BC),
"nunavut" => Ok(Self::NU), "manitoba" => Ok(Self::MB),
"ontario" => Ok(Self::ON), "new brunswick" => Ok(Self::NB),
"prince edward island" => Ok(Self::PE), "newfoundland and labrador" | "newfoundland & labrador" => Ok(Self::NL),
"quebec" => Ok(Self::QC), "northwest territories" => Ok(Self::NT),
"saskatchewan" => Ok(Self::SK), "nova scotia" => Ok(Self::NS),
"yukon" => Ok(Self::YT), "nunavut" => Ok(Self::NU),
_ => Err(errors::ConnectorError::InvalidDataFormat { "ontario" => Ok(Self::ON),
field_name: "address.state", "prince edward island" => Ok(Self::PE),
"quebec" => Ok(Self::QC),
"saskatchewan" => Ok(Self::SK),
"yukon" => Ok(Self::YT),
_ => Err(errors::ConnectorError::InvalidDataFormat {
field_name: "address.state",
}
.into()),
}
} }
.into()),
} }
} }
} }