diff --git a/openapi/src/codegen.rs b/openapi/src/codegen.rs index f3ba27340..12cf4eb72 100644 --- a/openapi/src/codegen.rs +++ b/openapi/src/codegen.rs @@ -657,7 +657,7 @@ pub fn gen_unions(out: &mut String, unions: &BTreeMap, me .unwrap_or_else(|| schema.schema_data.title.clone().unwrap()); let variant_name = meta.schema_to_rust_type(&object_name); let type_name = meta.schema_to_rust_type(variant_schema); - if variant_name.to_snake_case() != object_name { + if variant_to_serde_snake_case(&variant_name) != object_name { write_serde_rename(out, &object_name); } out.push_str(" "); @@ -694,6 +694,22 @@ pub fn gen_unions(out: &mut String, unions: &BTreeMap, me } } +/// This code is taken from serde RenameRule::apply_to_variant +/// It differs in some cases from heck, so we need to make sure we +/// do exactly the same when figuring out whether we need a serde(rename) +/// e.g. heck_snake(Self_) = self +/// serde_snake(Self_) = self_ +pub fn variant_to_serde_snake_case(variant: &str) -> String { + let mut snake = String::new(); + for (i, ch) in variant.char_indices() { + if i > 0 && ch.is_uppercase() { + snake.push('_'); + } + snake.push(ch.to_ascii_lowercase()); + } + snake +} + #[tracing::instrument(skip_all)] pub fn gen_variant_name(wire_name: &str, meta: &Metadata) -> String { match wire_name { @@ -732,7 +748,7 @@ pub fn gen_enums(out: &mut String, enums: &BTreeMap, meta: if variant_name.trim().is_empty() { panic!("unhandled enum variant: {:?}", wire_name) } - if &variant_name.to_snake_case() != wire_name { + if &variant_to_serde_snake_case(&variant_name) != wire_name { write_serde_rename(out, wire_name); } out.push_str(" "); diff --git a/src/resources/generated/checkout_session.rs b/src/resources/generated/checkout_session.rs index 3ebec39ce..67d8e6bf1 100644 --- a/src/resources/generated/checkout_session.rs +++ b/src/resources/generated/checkout_session.rs @@ -4721,6 +4721,7 @@ impl std::default::Default for CheckoutUsBankAccountPaymentMethodOptionsVerifica #[serde(rename_all = "snake_case")] pub enum CreateCheckoutSessionAutomaticTaxLiabilityType { Account, + #[serde(rename = "self")] Self_, } @@ -5035,6 +5036,7 @@ impl std::default::Default for CreateCheckoutSessionCustomerUpdateShipping { #[serde(rename_all = "snake_case")] pub enum CreateCheckoutSessionInvoiceCreationInvoiceDataIssuerType { Account, + #[serde(rename = "self")] Self_, } @@ -7857,6 +7859,7 @@ impl std::default::Default for CreateCheckoutSessionShippingOptionsShippingRateD #[serde(rename_all = "snake_case")] pub enum CreateCheckoutSessionSubscriptionDataInvoiceSettingsIssuerType { Account, + #[serde(rename = "self")] Self_, } diff --git a/src/resources/generated/connect_account_reference.rs b/src/resources/generated/connect_account_reference.rs index d7278b120..c54d9d7b8 100644 --- a/src/resources/generated/connect_account_reference.rs +++ b/src/resources/generated/connect_account_reference.rs @@ -24,6 +24,7 @@ pub struct ConnectAccountReference { #[serde(rename_all = "snake_case")] pub enum ConnectAccountReferenceType { Account, + #[serde(rename = "self")] Self_, } diff --git a/src/resources/generated/invoice.rs b/src/resources/generated/invoice.rs index 2f5dea1de..acbff7de5 100644 --- a/src/resources/generated/invoice.rs +++ b/src/resources/generated/invoice.rs @@ -1555,6 +1555,7 @@ impl std::default::Default for CollectionMethod { #[serde(rename_all = "snake_case")] pub enum CreateInvoiceAutomaticTaxLiabilityType { Account, + #[serde(rename = "self")] Self_, } @@ -1621,6 +1622,7 @@ impl std::default::Default for CreateInvoiceFromInvoiceAction { #[serde(rename_all = "snake_case")] pub enum CreateInvoiceIssuerType { Account, + #[serde(rename = "self")] Self_, } diff --git a/src/resources/generated/issuing_card.rs b/src/resources/generated/issuing_card.rs index 87f07660d..d05ad9820 100644 --- a/src/resources/generated/issuing_card.rs +++ b/src/resources/generated/issuing_card.rs @@ -608,7 +608,6 @@ pub enum IssuingCardSpendingLimitCategories { HardwareStores, HealthAndBeautySpas, HearingAidsSalesAndSupplies, - #[serde(rename = "heating_plumbing_a_c")] HeatingPlumbingAC, HobbyToyAndGameShops, HomeSupplyWarehouseStores, @@ -737,7 +736,6 @@ pub enum IssuingCardSpendingLimitCategories { TruckUtilityTrailerRentals, TypesettingPlateMakingAndRelatedServices, TypewriterStores, - #[serde(rename = "u_s_federal_government_agencies_or_departments")] USFederalGovernmentAgenciesOrDepartments, UniformsCommercialClothing, UsedMerchandiseAndSecondhandStores, diff --git a/src/resources/generated/issuing_cardholder.rs b/src/resources/generated/issuing_cardholder.rs index 2f92216b9..a992b662c 100644 --- a/src/resources/generated/issuing_cardholder.rs +++ b/src/resources/generated/issuing_cardholder.rs @@ -510,7 +510,6 @@ pub enum IssuingCardholderSpendingLimitCategories { HardwareStores, HealthAndBeautySpas, HearingAidsSalesAndSupplies, - #[serde(rename = "heating_plumbing_a_c")] HeatingPlumbingAC, HobbyToyAndGameShops, HomeSupplyWarehouseStores, @@ -639,7 +638,6 @@ pub enum IssuingCardholderSpendingLimitCategories { TruckUtilityTrailerRentals, TypesettingPlateMakingAndRelatedServices, TypewriterStores, - #[serde(rename = "u_s_federal_government_agencies_or_departments")] USFederalGovernmentAgenciesOrDepartments, UniformsCommercialClothing, UsedMerchandiseAndSecondhandStores, diff --git a/src/resources/generated/payment_link.rs b/src/resources/generated/payment_link.rs index 6cb088927..9c32c330e 100644 --- a/src/resources/generated/payment_link.rs +++ b/src/resources/generated/payment_link.rs @@ -1788,6 +1788,7 @@ impl std::default::Default for CreatePaymentLinkAfterCompletionType { #[serde(rename_all = "snake_case")] pub enum CreatePaymentLinkAutomaticTaxLiabilityType { Account, + #[serde(rename = "self")] Self_, } @@ -1996,6 +1997,7 @@ impl std::default::Default for CreatePaymentLinkCustomFieldsType { #[serde(rename_all = "snake_case")] pub enum CreatePaymentLinkInvoiceCreationInvoiceDataIssuerType { Account, + #[serde(rename = "self")] Self_, } @@ -2967,6 +2969,7 @@ impl std::default::Default for CreatePaymentLinkShippingAddressCollectionAllowed #[serde(rename_all = "snake_case")] pub enum CreatePaymentLinkSubscriptionDataInvoiceSettingsIssuerType { Account, + #[serde(rename = "self")] Self_, } @@ -4318,6 +4321,7 @@ impl std::default::Default for UpdatePaymentLinkAfterCompletionType { #[serde(rename_all = "snake_case")] pub enum UpdatePaymentLinkAutomaticTaxLiabilityType { Account, + #[serde(rename = "self")] Self_, } @@ -4420,6 +4424,7 @@ impl std::default::Default for UpdatePaymentLinkCustomFieldsType { #[serde(rename_all = "snake_case")] pub enum UpdatePaymentLinkInvoiceCreationInvoiceDataIssuerType { Account, + #[serde(rename = "self")] Self_, } @@ -5321,6 +5326,7 @@ impl std::default::Default for UpdatePaymentLinkShippingAddressCollectionAllowed #[serde(rename_all = "snake_case")] pub enum UpdatePaymentLinkSubscriptionDataInvoiceSettingsIssuerType { Account, + #[serde(rename = "self")] Self_, } diff --git a/src/resources/generated/subscription.rs b/src/resources/generated/subscription.rs index 5f52e4d1f..a65328e78 100644 --- a/src/resources/generated/subscription.rs +++ b/src/resources/generated/subscription.rs @@ -1958,6 +1958,7 @@ impl std::default::Default for CancellationDetailsReason { #[serde(rename_all = "snake_case")] pub enum CreateSubscriptionAutomaticTaxLiabilityType { Account, + #[serde(rename = "self")] Self_, } @@ -1992,6 +1993,7 @@ impl std::default::Default for CreateSubscriptionAutomaticTaxLiabilityType { #[serde(rename_all = "snake_case")] pub enum CreateSubscriptionInvoiceSettingsIssuerType { Account, + #[serde(rename = "self")] Self_, } @@ -3173,6 +3175,7 @@ impl std::default::Default for SubscriptionsResourcePaymentSettingsSaveDefaultPa #[serde(rename_all = "snake_case")] pub enum UpdateSubscriptionAutomaticTaxLiabilityType { Account, + #[serde(rename = "self")] Self_, } @@ -3253,6 +3256,7 @@ impl std::default::Default for UpdateSubscriptionCancellationDetailsFeedback { #[serde(rename_all = "snake_case")] pub enum UpdateSubscriptionInvoiceSettingsIssuerType { Account, + #[serde(rename = "self")] Self_, } diff --git a/src/resources/generated/subscription_schedule.rs b/src/resources/generated/subscription_schedule.rs index b363e16b1..99a9030af 100644 --- a/src/resources/generated/subscription_schedule.rs +++ b/src/resources/generated/subscription_schedule.rs @@ -1287,6 +1287,7 @@ pub struct UpdateSubscriptionSchedulePhasesItemsPriceDataRecurring { #[serde(rename_all = "snake_case")] pub enum CreateSubscriptionSchedulePhasesAutomaticTaxLiabilityType { Account, + #[serde(rename = "self")] Self_, } @@ -1571,6 +1572,7 @@ impl std::default::Default for SubscriptionScheduleDefaultSettingsCollectionMeth #[serde(rename_all = "snake_case")] pub enum SubscriptionScheduleDefaultSettingsParamsAutomaticTaxLiabilityType { Account, + #[serde(rename = "self")] Self_, } @@ -1681,6 +1683,7 @@ impl std::default::Default for SubscriptionScheduleEndBehavior { #[serde(rename_all = "snake_case")] pub enum SubscriptionScheduleInvoiceSettingsIssuerType { Account, + #[serde(rename = "self")] Self_, } @@ -1789,6 +1792,7 @@ impl std::default::Default for SubscriptionScheduleStatus { #[serde(rename_all = "snake_case")] pub enum UpdateSubscriptionSchedulePhasesAutomaticTaxLiabilityType { Account, + #[serde(rename = "self")] Self_, }