From 3adceac9261730d11cb5e8196b2437841425a313 Mon Sep 17 00:00:00 2001 From: Matthew Zeitlin <37011898+mzeitlin11@users.noreply.github.com> Date: Sun, 7 Apr 2024 21:12:05 -0400 Subject: [PATCH] Remove prefix validation from ids --- .../src/billing_portal_configuration/types.rs | 2 +- .../src/billing_portal_session/types.rs | 2 +- .../stripe_billing/src/usage_record/types.rs | 2 +- .../src/checkout_session/types.rs | 2 +- .../stripe_misc/src/ephemeral_key/types.rs | 2 +- .../src/scheduled_query_run/types.rs | 2 +- .../stripe_misc/src/webhook_endpoint/types.rs | 2 +- generated/stripe_shared/src/account.rs | 2 +- generated/stripe_shared/src/application.rs | 2 +- .../stripe_shared/src/application_fee.rs | 2 +- .../src/application_fee_refund.rs | 2 +- .../stripe_shared/src/balance_transaction.rs | 2 +- generated/stripe_shared/src/bank_account.rs | 2 +- generated/stripe_shared/src/card.rs | 2 +- generated/stripe_shared/src/charge.rs | 2 +- .../src/checkout_session_item.rs | 2 +- .../src/connect_collection_transfer.rs | 2 +- generated/stripe_shared/src/credit_note.rs | 2 +- .../src/credit_note_line_item.rs | 2 +- generated/stripe_shared/src/customer.rs | 2 +- .../src/customer_balance_transaction.rs | 2 +- generated/stripe_shared/src/discount.rs | 2 +- generated/stripe_shared/src/dispute.rs | 2 +- generated/stripe_shared/src/event.rs | 2 +- generated/stripe_shared/src/file.rs | 2 +- generated/stripe_shared/src/file_link.rs | 2 +- generated/stripe_shared/src/invoice.rs | 2 +- generated/stripe_shared/src/invoice_item.rs | 2 +- .../src/issuing_authorization.rs | 2 +- generated/stripe_shared/src/issuing_card.rs | 2 +- .../stripe_shared/src/issuing_cardholder.rs | 2 +- .../stripe_shared/src/issuing_dispute.rs | 2 +- .../stripe_shared/src/issuing_transaction.rs | 2 +- generated/stripe_shared/src/mandate.rs | 2 +- generated/stripe_shared/src/payment_intent.rs | 2 +- generated/stripe_shared/src/payment_link.rs | 2 +- generated/stripe_shared/src/payment_method.rs | 2 +- generated/stripe_shared/src/payout.rs | 2 +- generated/stripe_shared/src/person.rs | 2 +- .../stripe_shared/src/platform_tax_fee.rs | 2 +- generated/stripe_shared/src/price.rs | 2 +- generated/stripe_shared/src/promotion_code.rs | 2 +- generated/stripe_shared/src/quote.rs | 2 +- generated/stripe_shared/src/refund.rs | 2 +- .../stripe_shared/src/reserve_transaction.rs | 2 +- generated/stripe_shared/src/review.rs | 2 +- generated/stripe_shared/src/setup_attempt.rs | 2 +- generated/stripe_shared/src/setup_intent.rs | 2 +- generated/stripe_shared/src/shipping_rate.rs | 2 +- generated/stripe_shared/src/source.rs | 2 +- generated/stripe_shared/src/subscription.rs | 2 +- .../stripe_shared/src/subscription_item.rs | 2 +- .../src/subscription_schedule.rs | 2 +- generated/stripe_shared/src/tax_code.rs | 2 +- .../src/tax_deducted_at_source.rs | 2 +- generated/stripe_shared/src/tax_id.rs | 2 +- generated/stripe_shared/src/tax_rate.rs | 2 +- .../src/test_helpers_test_clock.rs | 2 +- generated/stripe_shared/src/topup.rs | 2 +- generated/stripe_shared/src/transfer.rs | 2 +- .../stripe_shared/src/transfer_reversal.rs | 2 +- .../stripe_shared/src/usage_record_summary.rs | 2 +- .../src/terminal_configuration/types.rs | 2 +- .../src/terminal_location/types.rs | 2 +- .../src/terminal_reader/types.rs | 2 +- openapi/README.md | 2 - openapi/id_prefixes.json | 96 -------- openapi/src/ids.rs | 46 ---- openapi/src/lib.rs | 1 - openapi/src/object_writing.rs | 5 +- stripe_types/src/ids.rs | 232 ++---------------- stripe_types/src/lib.rs | 1 - 72 files changed, 90 insertions(+), 423 deletions(-) delete mode 100644 openapi/id_prefixes.json delete mode 100644 openapi/src/ids.rs diff --git a/generated/stripe_billing/src/billing_portal_configuration/types.rs b/generated/stripe_billing/src/billing_portal_configuration/types.rs index 8bca7d765..ebfa54ee6 100644 --- a/generated/stripe_billing/src/billing_portal_configuration/types.rs +++ b/generated/stripe_billing/src/billing_portal_configuration/types.rs @@ -32,4 +32,4 @@ impl stripe_types::Object for BillingPortalConfiguration { &self.id } } -stripe_types::def_id!(BillingPortalConfigurationId, "bpc_"); +stripe_types::def_id!(BillingPortalConfigurationId); diff --git a/generated/stripe_billing/src/billing_portal_session/types.rs b/generated/stripe_billing/src/billing_portal_session/types.rs index 04d6bd964..e8e42ebd2 100644 --- a/generated/stripe_billing/src/billing_portal_session/types.rs +++ b/generated/stripe_billing/src/billing_portal_session/types.rs @@ -46,7 +46,7 @@ impl stripe_types::Object for BillingPortalSession { &self.id } } -stripe_types::def_id!(BillingPortalSessionId, "bps_"); +stripe_types::def_id!(BillingPortalSessionId); #[derive(Copy, Clone, Eq, PartialEq)] #[non_exhaustive] pub enum BillingPortalSessionLocale { diff --git a/generated/stripe_billing/src/usage_record/types.rs b/generated/stripe_billing/src/usage_record/types.rs index 92c7a9fae..612d5ff10 100644 --- a/generated/stripe_billing/src/usage_record/types.rs +++ b/generated/stripe_billing/src/usage_record/types.rs @@ -23,4 +23,4 @@ impl stripe_types::Object for UsageRecord { &self.id } } -stripe_types::def_id!(UsageRecordId, "mbur_"); +stripe_types::def_id!(UsageRecordId); diff --git a/generated/stripe_checkout/src/checkout_session/types.rs b/generated/stripe_checkout/src/checkout_session/types.rs index c3a08e6f4..d1c565085 100644 --- a/generated/stripe_checkout/src/checkout_session/types.rs +++ b/generated/stripe_checkout/src/checkout_session/types.rs @@ -329,7 +329,7 @@ impl stripe_types::Object for CheckoutSession { &self.id } } -stripe_types::def_id!(CheckoutSessionId, "cs_"); +stripe_types::def_id!(CheckoutSessionId); #[derive(Copy, Clone, Eq, PartialEq)] pub enum CheckoutSessionBillingAddressCollection { Auto, diff --git a/generated/stripe_misc/src/ephemeral_key/types.rs b/generated/stripe_misc/src/ephemeral_key/types.rs index 524bd3190..62087e35d 100644 --- a/generated/stripe_misc/src/ephemeral_key/types.rs +++ b/generated/stripe_misc/src/ephemeral_key/types.rs @@ -18,4 +18,4 @@ impl stripe_types::Object for EphemeralKey { &self.id } } -stripe_types::def_id!(EphemeralKeyId, "ephkey_"); +stripe_types::def_id!(EphemeralKeyId); diff --git a/generated/stripe_misc/src/scheduled_query_run/types.rs b/generated/stripe_misc/src/scheduled_query_run/types.rs index 171b45dcf..7175033f3 100644 --- a/generated/stripe_misc/src/scheduled_query_run/types.rs +++ b/generated/stripe_misc/src/scheduled_query_run/types.rs @@ -33,4 +33,4 @@ impl stripe_types::Object for ScheduledQueryRun { &self.id } } -stripe_types::def_id!(ScheduledQueryRunId, "sqr_"); +stripe_types::def_id!(ScheduledQueryRunId); diff --git a/generated/stripe_misc/src/webhook_endpoint/types.rs b/generated/stripe_misc/src/webhook_endpoint/types.rs index 9eae76e71..40bff0bb3 100644 --- a/generated/stripe_misc/src/webhook_endpoint/types.rs +++ b/generated/stripe_misc/src/webhook_endpoint/types.rs @@ -42,4 +42,4 @@ impl stripe_types::Object for WebhookEndpoint { &self.id } } -stripe_types::def_id!(WebhookEndpointId, "we_"); +stripe_types::def_id!(WebhookEndpointId); diff --git a/generated/stripe_shared/src/account.rs b/generated/stripe_shared/src/account.rs index c34d82a4d..59f22392e 100644 --- a/generated/stripe_shared/src/account.rs +++ b/generated/stripe_shared/src/account.rs @@ -81,7 +81,7 @@ impl stripe_types::Object for Account { &self.id } } -stripe_types::def_id!(AccountId, "acct_"); +stripe_types::def_id!(AccountId); #[derive(Copy, Clone, Eq, PartialEq)] pub enum AccountBusinessType { Company, diff --git a/generated/stripe_shared/src/application.rs b/generated/stripe_shared/src/application.rs index 4f671ae0e..0e4a88781 100644 --- a/generated/stripe_shared/src/application.rs +++ b/generated/stripe_shared/src/application.rs @@ -11,4 +11,4 @@ impl stripe_types::Object for Application { &self.id } } -stripe_types::def_id!(ApplicationId, "ca_"); +stripe_types::def_id!(ApplicationId); diff --git a/generated/stripe_shared/src/application_fee.rs b/generated/stripe_shared/src/application_fee.rs index ebc801ef6..1a1219ed6 100644 --- a/generated/stripe_shared/src/application_fee.rs +++ b/generated/stripe_shared/src/application_fee.rs @@ -36,4 +36,4 @@ impl stripe_types::Object for ApplicationFee { &self.id } } -stripe_types::def_id!(ApplicationFeeId, "fee_"); +stripe_types::def_id!(ApplicationFeeId); diff --git a/generated/stripe_shared/src/application_fee_refund.rs b/generated/stripe_shared/src/application_fee_refund.rs index d89e4260e..4c4e9d80a 100644 --- a/generated/stripe_shared/src/application_fee_refund.rs +++ b/generated/stripe_shared/src/application_fee_refund.rs @@ -30,4 +30,4 @@ impl stripe_types::Object for ApplicationFeeRefund { &self.id } } -stripe_types::def_id!(ApplicationFeeRefundId, "fr_"); +stripe_types::def_id!(ApplicationFeeRefundId); diff --git a/generated/stripe_shared/src/balance_transaction.rs b/generated/stripe_shared/src/balance_transaction.rs index ad8b77726..69fc2d6b8 100644 --- a/generated/stripe_shared/src/balance_transaction.rs +++ b/generated/stripe_shared/src/balance_transaction.rs @@ -225,4 +225,4 @@ impl stripe_types::Object for BalanceTransaction { &self.id } } -stripe_types::def_id!(BalanceTransactionId, "txn_"); +stripe_types::def_id!(BalanceTransactionId); diff --git a/generated/stripe_shared/src/bank_account.rs b/generated/stripe_shared/src/bank_account.rs index 8aacedb5a..560011fa1 100644 --- a/generated/stripe_shared/src/bank_account.rs +++ b/generated/stripe_shared/src/bank_account.rs @@ -130,4 +130,4 @@ impl stripe_types::Object for BankAccount { &self.id } } -stripe_types::def_id!(BankAccountId, "ba_" | "card_"); +stripe_types::def_id!(BankAccountId); diff --git a/generated/stripe_shared/src/card.rs b/generated/stripe_shared/src/card.rs index 1200b690d..f9000bdfb 100644 --- a/generated/stripe_shared/src/card.rs +++ b/generated/stripe_shared/src/card.rs @@ -159,4 +159,4 @@ impl stripe_types::Object for Card { &self.id } } -stripe_types::def_id!(CardId, "card_"); +stripe_types::def_id!(CardId); diff --git a/generated/stripe_shared/src/charge.rs b/generated/stripe_shared/src/charge.rs index d4bc526f1..2a8967e72 100644 --- a/generated/stripe_shared/src/charge.rs +++ b/generated/stripe_shared/src/charge.rs @@ -189,4 +189,4 @@ impl stripe_types::Object for Charge { &self.id } } -stripe_types::def_id!(ChargeId, "ch_" | "py_"); +stripe_types::def_id!(ChargeId); diff --git a/generated/stripe_shared/src/checkout_session_item.rs b/generated/stripe_shared/src/checkout_session_item.rs index 164d7965a..2f4b33f88 100644 --- a/generated/stripe_shared/src/checkout_session_item.rs +++ b/generated/stripe_shared/src/checkout_session_item.rs @@ -35,4 +35,4 @@ impl stripe_types::Object for CheckoutSessionItem { &self.id } } -stripe_types::def_id!(CheckoutSessionItemId, "li_"); +stripe_types::def_id!(CheckoutSessionItemId); diff --git a/generated/stripe_shared/src/connect_collection_transfer.rs b/generated/stripe_shared/src/connect_collection_transfer.rs index 9aafd6e1b..0b28006d0 100644 --- a/generated/stripe_shared/src/connect_collection_transfer.rs +++ b/generated/stripe_shared/src/connect_collection_transfer.rs @@ -18,4 +18,4 @@ impl stripe_types::Object for ConnectCollectionTransfer { &self.id } } -stripe_types::def_id!(ConnectCollectionTransferId, "connct_"); +stripe_types::def_id!(ConnectCollectionTransferId); diff --git a/generated/stripe_shared/src/credit_note.rs b/generated/stripe_shared/src/credit_note.rs index a24ccb78f..2615fbddf 100644 --- a/generated/stripe_shared/src/credit_note.rs +++ b/generated/stripe_shared/src/credit_note.rs @@ -189,7 +189,7 @@ impl stripe_types::Object for CreditNote { &self.id } } -stripe_types::def_id!(CreditNoteId, "cn_"); +stripe_types::def_id!(CreditNoteId); #[derive(Copy, Clone, Eq, PartialEq)] pub enum CreditNoteReason { Duplicate, diff --git a/generated/stripe_shared/src/credit_note_line_item.rs b/generated/stripe_shared/src/credit_note_line_item.rs index b35f9e106..8cb323259 100644 --- a/generated/stripe_shared/src/credit_note_line_item.rs +++ b/generated/stripe_shared/src/credit_note_line_item.rs @@ -98,4 +98,4 @@ impl stripe_types::Object for CreditNoteLineItem { &self.id } } -stripe_types::def_id!(CreditNoteLineItemId, "cnli_"); +stripe_types::def_id!(CreditNoteLineItemId); diff --git a/generated/stripe_shared/src/customer.rs b/generated/stripe_shared/src/customer.rs index df33c84e2..7f10c98d5 100644 --- a/generated/stripe_shared/src/customer.rs +++ b/generated/stripe_shared/src/customer.rs @@ -108,7 +108,7 @@ impl stripe_types::Object for Customer { &self.id } } -stripe_types::def_id!(CustomerId, "cus_"); +stripe_types::def_id!(CustomerId); #[derive(Copy, Clone, Eq, PartialEq)] pub enum CustomerTaxExempt { Exempt, diff --git a/generated/stripe_shared/src/customer_balance_transaction.rs b/generated/stripe_shared/src/customer_balance_transaction.rs index c7be37a23..85b078b18 100644 --- a/generated/stripe_shared/src/customer_balance_transaction.rs +++ b/generated/stripe_shared/src/customer_balance_transaction.rs @@ -126,4 +126,4 @@ impl stripe_types::Object for CustomerBalanceTransaction { &self.id } } -stripe_types::def_id!(CustomerBalanceTransactionId, "cbtxn_"); +stripe_types::def_id!(CustomerBalanceTransactionId); diff --git a/generated/stripe_shared/src/discount.rs b/generated/stripe_shared/src/discount.rs index 09db8a753..25bedcabf 100644 --- a/generated/stripe_shared/src/discount.rs +++ b/generated/stripe_shared/src/discount.rs @@ -36,4 +36,4 @@ impl stripe_types::Object for Discount { &self.id } } -stripe_types::def_id!(DiscountId, "di_"); +stripe_types::def_id!(DiscountId); diff --git a/generated/stripe_shared/src/dispute.rs b/generated/stripe_shared/src/dispute.rs index 20653ecb7..790432d9a 100644 --- a/generated/stripe_shared/src/dispute.rs +++ b/generated/stripe_shared/src/dispute.rs @@ -121,4 +121,4 @@ impl stripe_types::Object for Dispute { &self.id } } -stripe_types::def_id!(DisputeId, "dp_" | "du_" | "pdp_"); +stripe_types::def_id!(DisputeId); diff --git a/generated/stripe_shared/src/event.rs b/generated/stripe_shared/src/event.rs index 492f51a52..35afbf860 100644 --- a/generated/stripe_shared/src/event.rs +++ b/generated/stripe_shared/src/event.rs @@ -829,4 +829,4 @@ impl stripe_types::Object for Event { &self.id } } -stripe_types::def_id!(EventId, "evt_"); +stripe_types::def_id!(EventId); diff --git a/generated/stripe_shared/src/file.rs b/generated/stripe_shared/src/file.rs index 316ea89bb..f38053b72 100644 --- a/generated/stripe_shared/src/file.rs +++ b/generated/stripe_shared/src/file.rs @@ -38,7 +38,7 @@ impl stripe_types::Object for File { &self.id } } -stripe_types::def_id!(FileId, "file_"); +stripe_types::def_id!(FileId); #[derive(Copy, Clone, Eq, PartialEq)] #[non_exhaustive] pub enum FilePurpose { diff --git a/generated/stripe_shared/src/file_link.rs b/generated/stripe_shared/src/file_link.rs index 79c569794..c9c038fbe 100644 --- a/generated/stripe_shared/src/file_link.rs +++ b/generated/stripe_shared/src/file_link.rs @@ -29,4 +29,4 @@ impl stripe_types::Object for FileLink { &self.id } } -stripe_types::def_id!(FileLinkId, "link_"); +stripe_types::def_id!(FileLinkId); diff --git a/generated/stripe_shared/src/invoice.rs b/generated/stripe_shared/src/invoice.rs index 05578f764..641720e4c 100644 --- a/generated/stripe_shared/src/invoice.rs +++ b/generated/stripe_shared/src/invoice.rs @@ -422,7 +422,7 @@ impl stripe_types::Object for Invoice { &self.id } } -stripe_types::def_id!(InvoiceId, "in_"); +stripe_types::def_id!(InvoiceId); #[derive(Copy, Clone, Eq, PartialEq)] pub enum InvoiceCollectionMethod { ChargeAutomatically, diff --git a/generated/stripe_shared/src/invoice_item.rs b/generated/stripe_shared/src/invoice_item.rs index 3d3ee3ac4..f8b1498e5 100644 --- a/generated/stripe_shared/src/invoice_item.rs +++ b/generated/stripe_shared/src/invoice_item.rs @@ -75,4 +75,4 @@ impl stripe_types::Object for InvoiceItem { &self.id } } -stripe_types::def_id!(InvoiceItemId, "ii_"); +stripe_types::def_id!(InvoiceItemId); diff --git a/generated/stripe_shared/src/issuing_authorization.rs b/generated/stripe_shared/src/issuing_authorization.rs index e0d046fcb..308c301c2 100644 --- a/generated/stripe_shared/src/issuing_authorization.rs +++ b/generated/stripe_shared/src/issuing_authorization.rs @@ -81,7 +81,7 @@ impl stripe_types::Object for IssuingAuthorization { &self.id } } -stripe_types::def_id!(IssuingAuthorizationId, "iauth_"); +stripe_types::def_id!(IssuingAuthorizationId); #[derive(Copy, Clone, Eq, PartialEq)] pub enum IssuingAuthorizationAuthorizationMethod { Chip, diff --git a/generated/stripe_shared/src/issuing_card.rs b/generated/stripe_shared/src/issuing_card.rs index 27602fc82..60eee6ae1 100644 --- a/generated/stripe_shared/src/issuing_card.rs +++ b/generated/stripe_shared/src/issuing_card.rs @@ -122,7 +122,7 @@ impl stripe_types::Object for IssuingCard { &self.id } } -stripe_types::def_id!(IssuingCardId, "ic_"); +stripe_types::def_id!(IssuingCardId); #[derive(Copy, Clone, Eq, PartialEq)] pub enum IssuingCardReplacementReason { Damaged, diff --git a/generated/stripe_shared/src/issuing_cardholder.rs b/generated/stripe_shared/src/issuing_cardholder.rs index 241ef69fe..a4341e4ae 100644 --- a/generated/stripe_shared/src/issuing_cardholder.rs +++ b/generated/stripe_shared/src/issuing_cardholder.rs @@ -48,7 +48,7 @@ impl stripe_types::Object for IssuingCardholder { &self.id } } -stripe_types::def_id!(IssuingCardholderId, "ich_"); +stripe_types::def_id!(IssuingCardholderId); #[derive(Copy, Clone, Eq, PartialEq)] pub enum IssuingCardholderPreferredLocales { De, diff --git a/generated/stripe_shared/src/issuing_dispute.rs b/generated/stripe_shared/src/issuing_dispute.rs index 23672233a..9766f316b 100644 --- a/generated/stripe_shared/src/issuing_dispute.rs +++ b/generated/stripe_shared/src/issuing_dispute.rs @@ -36,7 +36,7 @@ impl stripe_types::Object for IssuingDispute { &self.id } } -stripe_types::def_id!(IssuingDisputeId, "idp_"); +stripe_types::def_id!(IssuingDisputeId); #[derive(Copy, Clone, Eq, PartialEq)] pub enum IssuingDisputeStatus { Expired, diff --git a/generated/stripe_shared/src/issuing_transaction.rs b/generated/stripe_shared/src/issuing_transaction.rs index c7251e7ec..a712b0350 100644 --- a/generated/stripe_shared/src/issuing_transaction.rs +++ b/generated/stripe_shared/src/issuing_transaction.rs @@ -121,7 +121,7 @@ impl stripe_types::Object for IssuingTransaction { &self.id } } -stripe_types::def_id!(IssuingTransactionId, "ipi_"); +stripe_types::def_id!(IssuingTransactionId); #[derive(Copy, Clone, Eq, PartialEq)] pub enum IssuingTransactionType { Capture, diff --git a/generated/stripe_shared/src/mandate.rs b/generated/stripe_shared/src/mandate.rs index 362aadcd3..a96062837 100644 --- a/generated/stripe_shared/src/mandate.rs +++ b/generated/stripe_shared/src/mandate.rs @@ -139,4 +139,4 @@ impl stripe_types::Object for Mandate { &self.id } } -stripe_types::def_id!(MandateId, "mandate_"); +stripe_types::def_id!(MandateId); diff --git a/generated/stripe_shared/src/payment_intent.rs b/generated/stripe_shared/src/payment_intent.rs index b89f4ae14..3e093852b 100644 --- a/generated/stripe_shared/src/payment_intent.rs +++ b/generated/stripe_shared/src/payment_intent.rs @@ -275,7 +275,7 @@ impl stripe_types::Object for PaymentIntent { &self.id } } -stripe_types::def_id!(PaymentIntentId, "pi_"); +stripe_types::def_id!(PaymentIntentId); #[derive(Copy, Clone, Eq, PartialEq)] pub enum PaymentIntentCaptureMethod { Automatic, diff --git a/generated/stripe_shared/src/payment_link.rs b/generated/stripe_shared/src/payment_link.rs index 2b1b5a6dc..598ba1a35 100644 --- a/generated/stripe_shared/src/payment_link.rs +++ b/generated/stripe_shared/src/payment_link.rs @@ -193,7 +193,7 @@ impl stripe_types::Object for PaymentLink { &self.id } } -stripe_types::def_id!(PaymentLinkId, "plink_"); +stripe_types::def_id!(PaymentLinkId); #[derive(Copy, Clone, Eq, PartialEq)] pub enum PaymentLinkBillingAddressCollection { Auto, diff --git a/generated/stripe_shared/src/payment_method.rs b/generated/stripe_shared/src/payment_method.rs index aa8017d45..c32c0f810 100644 --- a/generated/stripe_shared/src/payment_method.rs +++ b/generated/stripe_shared/src/payment_method.rs @@ -262,4 +262,4 @@ impl stripe_types::Object for PaymentMethod { &self.id } } -stripe_types::def_id!(PaymentMethodId, "pm_" | "card_" | "src_" | "ba_"); +stripe_types::def_id!(PaymentMethodId); diff --git a/generated/stripe_shared/src/payout.rs b/generated/stripe_shared/src/payout.rs index 2bed66d8f..1966870fc 100644 --- a/generated/stripe_shared/src/payout.rs +++ b/generated/stripe_shared/src/payout.rs @@ -182,4 +182,4 @@ impl stripe_types::Object for Payout { &self.id } } -stripe_types::def_id!(PayoutId, "po_"); +stripe_types::def_id!(PayoutId); diff --git a/generated/stripe_shared/src/person.rs b/generated/stripe_shared/src/person.rs index 9389f82c4..84125eaf1 100644 --- a/generated/stripe_shared/src/person.rs +++ b/generated/stripe_shared/src/person.rs @@ -154,4 +154,4 @@ impl stripe_types::Object for Person { &self.id } } -stripe_types::def_id!(PersonId, "person_"); +stripe_types::def_id!(PersonId); diff --git a/generated/stripe_shared/src/platform_tax_fee.rs b/generated/stripe_shared/src/platform_tax_fee.rs index 5a5bf46f5..1a4bb552f 100644 --- a/generated/stripe_shared/src/platform_tax_fee.rs +++ b/generated/stripe_shared/src/platform_tax_fee.rs @@ -16,4 +16,4 @@ impl stripe_types::Object for PlatformTaxFee { &self.id } } -stripe_types::def_id!(PlatformTaxFeeId, "ptf_"); +stripe_types::def_id!(PlatformTaxFeeId); diff --git a/generated/stripe_shared/src/price.rs b/generated/stripe_shared/src/price.rs index 06397b4e6..a7dbb888f 100644 --- a/generated/stripe_shared/src/price.rs +++ b/generated/stripe_shared/src/price.rs @@ -78,7 +78,7 @@ impl stripe_types::Object for Price { &self.id } } -stripe_types::def_id!(PriceId, "price_" | "plan_"); +stripe_types::def_id!(PriceId); #[derive(Copy, Clone, Eq, PartialEq)] pub enum PriceBillingScheme { PerUnit, diff --git a/generated/stripe_shared/src/promotion_code.rs b/generated/stripe_shared/src/promotion_code.rs index 6ff340261..7fcb31227 100644 --- a/generated/stripe_shared/src/promotion_code.rs +++ b/generated/stripe_shared/src/promotion_code.rs @@ -37,4 +37,4 @@ impl stripe_types::Object for PromotionCode { &self.id } } -stripe_types::def_id!(PromotionCodeId, "promo_"); +stripe_types::def_id!(PromotionCodeId); diff --git a/generated/stripe_shared/src/quote.rs b/generated/stripe_shared/src/quote.rs index 2ce2d8397..c6a84fb83 100644 --- a/generated/stripe_shared/src/quote.rs +++ b/generated/stripe_shared/src/quote.rs @@ -90,7 +90,7 @@ impl stripe_types::Object for Quote { &self.id } } -stripe_types::def_id!(QuoteId, "qt_"); +stripe_types::def_id!(QuoteId); #[derive(Copy, Clone, Eq, PartialEq)] pub enum QuoteCollectionMethod { ChargeAutomatically, diff --git a/generated/stripe_shared/src/refund.rs b/generated/stripe_shared/src/refund.rs index c48c33369..60a5df23f 100644 --- a/generated/stripe_shared/src/refund.rs +++ b/generated/stripe_shared/src/refund.rs @@ -124,4 +124,4 @@ impl stripe_types::Object for Refund { &self.id } } -stripe_types::def_id!(RefundId, "re_" | "pyr_"); +stripe_types::def_id!(RefundId); diff --git a/generated/stripe_shared/src/reserve_transaction.rs b/generated/stripe_shared/src/reserve_transaction.rs index 6eff61158..c831e2223 100644 --- a/generated/stripe_shared/src/reserve_transaction.rs +++ b/generated/stripe_shared/src/reserve_transaction.rs @@ -15,4 +15,4 @@ impl stripe_types::Object for ReserveTransaction { &self.id } } -stripe_types::def_id!(ReserveTransactionId, "rtx_"); +stripe_types::def_id!(ReserveTransactionId); diff --git a/generated/stripe_shared/src/review.rs b/generated/stripe_shared/src/review.rs index c173ea8b2..f280f1b98 100644 --- a/generated/stripe_shared/src/review.rs +++ b/generated/stripe_shared/src/review.rs @@ -161,4 +161,4 @@ impl stripe_types::Object for Review { &self.id } } -stripe_types::def_id!(ReviewId, "prv_"); +stripe_types::def_id!(ReviewId); diff --git a/generated/stripe_shared/src/setup_attempt.rs b/generated/stripe_shared/src/setup_attempt.rs index a68fbdbc4..fc2029b3a 100644 --- a/generated/stripe_shared/src/setup_attempt.rs +++ b/generated/stripe_shared/src/setup_attempt.rs @@ -106,4 +106,4 @@ impl stripe_types::Object for SetupAttempt { &self.id } } -stripe_types::def_id!(SetupAttemptId, "setatt_"); +stripe_types::def_id!(SetupAttemptId); diff --git a/generated/stripe_shared/src/setup_intent.rs b/generated/stripe_shared/src/setup_intent.rs index 5a775a4d1..2b8fcaceb 100644 --- a/generated/stripe_shared/src/setup_intent.rs +++ b/generated/stripe_shared/src/setup_intent.rs @@ -166,7 +166,7 @@ impl stripe_types::Object for SetupIntent { &self.id } } -stripe_types::def_id!(SetupIntentId, "seti_"); +stripe_types::def_id!(SetupIntentId); #[derive(Copy, Clone, Eq, PartialEq)] pub enum SetupIntentCancellationReason { Abandoned, diff --git a/generated/stripe_shared/src/shipping_rate.rs b/generated/stripe_shared/src/shipping_rate.rs index b11603669..7fbc75f13 100644 --- a/generated/stripe_shared/src/shipping_rate.rs +++ b/generated/stripe_shared/src/shipping_rate.rs @@ -40,7 +40,7 @@ impl stripe_types::Object for ShippingRate { &self.id } } -stripe_types::def_id!(ShippingRateId, "shr_"); +stripe_types::def_id!(ShippingRateId); #[derive(Copy, Clone, Eq, PartialEq)] pub enum ShippingRateTaxBehavior { Exclusive, diff --git a/generated/stripe_shared/src/source.rs b/generated/stripe_shared/src/source.rs index e34a1fde9..10718b333 100644 --- a/generated/stripe_shared/src/source.rs +++ b/generated/stripe_shared/src/source.rs @@ -221,4 +221,4 @@ impl stripe_types::Object for Source { &self.id } } -stripe_types::def_id!(SourceId, "src_"); +stripe_types::def_id!(SourceId); diff --git a/generated/stripe_shared/src/subscription.rs b/generated/stripe_shared/src/subscription.rs index 587fcf24a..a269e36b9 100644 --- a/generated/stripe_shared/src/subscription.rs +++ b/generated/stripe_shared/src/subscription.rs @@ -234,7 +234,7 @@ impl stripe_types::Object for Subscription { &self.id } } -stripe_types::def_id!(SubscriptionId, "sub_"); +stripe_types::def_id!(SubscriptionId); #[derive(Copy, Clone, Eq, PartialEq)] pub enum SubscriptionCollectionMethod { ChargeAutomatically, diff --git a/generated/stripe_shared/src/subscription_item.rs b/generated/stripe_shared/src/subscription_item.rs index f77fbbacf..29454821e 100644 --- a/generated/stripe_shared/src/subscription_item.rs +++ b/generated/stripe_shared/src/subscription_item.rs @@ -30,4 +30,4 @@ impl stripe_types::Object for SubscriptionItem { &self.id } } -stripe_types::def_id!(SubscriptionItemId, "si_"); +stripe_types::def_id!(SubscriptionItemId); diff --git a/generated/stripe_shared/src/subscription_schedule.rs b/generated/stripe_shared/src/subscription_schedule.rs index 7672ad33d..e270472a9 100644 --- a/generated/stripe_shared/src/subscription_schedule.rs +++ b/generated/stripe_shared/src/subscription_schedule.rs @@ -116,7 +116,7 @@ impl stripe_types::Object for SubscriptionSchedule { &self.id } } -stripe_types::def_id!(SubscriptionScheduleId, "sub_sched_"); +stripe_types::def_id!(SubscriptionScheduleId); #[derive(Copy, Clone, Eq, PartialEq)] pub enum SubscriptionScheduleEndBehavior { Cancel, diff --git a/generated/stripe_shared/src/tax_code.rs b/generated/stripe_shared/src/tax_code.rs index a1df43358..6425d4c42 100644 --- a/generated/stripe_shared/src/tax_code.rs +++ b/generated/stripe_shared/src/tax_code.rs @@ -16,4 +16,4 @@ impl stripe_types::Object for TaxCode { &self.id } } -stripe_types::def_id!(TaxCodeId, "txcd_"); +stripe_types::def_id!(TaxCodeId); diff --git a/generated/stripe_shared/src/tax_deducted_at_source.rs b/generated/stripe_shared/src/tax_deducted_at_source.rs index 9e9fd08f7..a2c0fd6dd 100644 --- a/generated/stripe_shared/src/tax_deducted_at_source.rs +++ b/generated/stripe_shared/src/tax_deducted_at_source.rs @@ -17,4 +17,4 @@ impl stripe_types::Object for TaxDeductedAtSource { &self.id } } -stripe_types::def_id!(TaxDeductedAtSourceId, "itds_"); +stripe_types::def_id!(TaxDeductedAtSourceId); diff --git a/generated/stripe_shared/src/tax_id.rs b/generated/stripe_shared/src/tax_id.rs index d8bceb5c0..1a770f31b 100644 --- a/generated/stripe_shared/src/tax_id.rs +++ b/generated/stripe_shared/src/tax_id.rs @@ -283,4 +283,4 @@ impl stripe_types::Object for TaxId { &self.id } } -stripe_types::def_id!(TaxIdId, "txi_" | "atxi_"); +stripe_types::def_id!(TaxIdId); diff --git a/generated/stripe_shared/src/tax_rate.rs b/generated/stripe_shared/src/tax_rate.rs index d45339be6..72a3df211 100644 --- a/generated/stripe_shared/src/tax_rate.rs +++ b/generated/stripe_shared/src/tax_rate.rs @@ -120,7 +120,7 @@ impl stripe_types::Object for TaxRate { &self.id } } -stripe_types::def_id!(TaxRateId, "txr_"); +stripe_types::def_id!(TaxRateId); #[derive(Copy, Clone, Eq, PartialEq)] #[non_exhaustive] pub enum TaxRateTaxType { diff --git a/generated/stripe_shared/src/test_helpers_test_clock.rs b/generated/stripe_shared/src/test_helpers_test_clock.rs index af1af728e..75b7fe9cd 100644 --- a/generated/stripe_shared/src/test_helpers_test_clock.rs +++ b/generated/stripe_shared/src/test_helpers_test_clock.rs @@ -83,4 +83,4 @@ impl stripe_types::Object for TestHelpersTestClock { &self.id } } -stripe_types::def_id!(TestHelpersTestClockId, "clock_"); +stripe_types::def_id!(TestHelpersTestClockId); diff --git a/generated/stripe_shared/src/topup.rs b/generated/stripe_shared/src/topup.rs index a4a4bc5ac..af1a403cc 100644 --- a/generated/stripe_shared/src/topup.rs +++ b/generated/stripe_shared/src/topup.rs @@ -113,4 +113,4 @@ impl stripe_types::Object for Topup { &self.id } } -stripe_types::def_id!(TopupId, "tu_"); +stripe_types::def_id!(TopupId); diff --git a/generated/stripe_shared/src/transfer.rs b/generated/stripe_shared/src/transfer.rs index ac70f0ce6..2925cfc5e 100644 --- a/generated/stripe_shared/src/transfer.rs +++ b/generated/stripe_shared/src/transfer.rs @@ -59,4 +59,4 @@ impl stripe_types::Object for Transfer { &self.id } } -stripe_types::def_id!(TransferId, "tr_"); +stripe_types::def_id!(TransferId); diff --git a/generated/stripe_shared/src/transfer_reversal.rs b/generated/stripe_shared/src/transfer_reversal.rs index 7c3f201f6..af4f8ce0b 100644 --- a/generated/stripe_shared/src/transfer_reversal.rs +++ b/generated/stripe_shared/src/transfer_reversal.rs @@ -42,4 +42,4 @@ impl stripe_types::Object for TransferReversal { &self.id } } -stripe_types::def_id!(TransferReversalId, "trr_"); +stripe_types::def_id!(TransferReversalId); diff --git a/generated/stripe_shared/src/usage_record_summary.rs b/generated/stripe_shared/src/usage_record_summary.rs index 2b9343648..32c917a7f 100644 --- a/generated/stripe_shared/src/usage_record_summary.rs +++ b/generated/stripe_shared/src/usage_record_summary.rs @@ -18,4 +18,4 @@ impl stripe_types::Object for UsageRecordSummary { &self.id } } -stripe_types::def_id!(UsageRecordSummaryId, "urs_" | "sis_"); +stripe_types::def_id!(UsageRecordSummaryId); diff --git a/generated/stripe_terminal/src/terminal_configuration/types.rs b/generated/stripe_terminal/src/terminal_configuration/types.rs index 4a3cf4abb..a74a24baa 100644 --- a/generated/stripe_terminal/src/terminal_configuration/types.rs +++ b/generated/stripe_terminal/src/terminal_configuration/types.rs @@ -26,4 +26,4 @@ impl stripe_types::Object for TerminalConfiguration { &self.id } } -stripe_types::def_id!(TerminalConfigurationId, "tmc_"); +stripe_types::def_id!(TerminalConfigurationId); diff --git a/generated/stripe_terminal/src/terminal_location/types.rs b/generated/stripe_terminal/src/terminal_location/types.rs index d7762ef3a..8eb2479f7 100644 --- a/generated/stripe_terminal/src/terminal_location/types.rs +++ b/generated/stripe_terminal/src/terminal_location/types.rs @@ -25,4 +25,4 @@ impl stripe_types::Object for TerminalLocation { &self.id } } -stripe_types::def_id!(TerminalLocationId, "tml_"); +stripe_types::def_id!(TerminalLocationId); diff --git a/generated/stripe_terminal/src/terminal_reader/types.rs b/generated/stripe_terminal/src/terminal_reader/types.rs index 8f2edbcd7..eaa110b33 100644 --- a/generated/stripe_terminal/src/terminal_reader/types.rs +++ b/generated/stripe_terminal/src/terminal_reader/types.rs @@ -35,7 +35,7 @@ impl stripe_types::Object for TerminalReader { &self.id } } -stripe_types::def_id!(TerminalReaderId, "tmr_"); +stripe_types::def_id!(TerminalReaderId); #[derive(Copy, Clone, Eq, PartialEq)] pub enum TerminalReaderDeviceType { BbposChipper2x, diff --git a/openapi/README.md b/openapi/README.md index 9013d486b..617701068 100644 --- a/openapi/README.md +++ b/openapi/README.md @@ -68,5 +68,3 @@ Where possible, keeping hardcoded logic in configuration files read by the code itself is preferred. Currently, these files are: - `gen_crates.toml`: Specifications for the crates we generate, including which core parts of the OpenAPI spec belong in each crate. Modifying this file is how you would change which items are included in which crate, or add additional crate splitting. -- `id_prefixes.json`: A mapping of components to the specification for the allowed prefixes of their `Id` - diff --git a/openapi/id_prefixes.json b/openapi/id_prefixes.json deleted file mode 100644 index 483fe9748..000000000 --- a/openapi/id_prefixes.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "account": "acct", - "application_fee": "fee", - "application": "ca", - "bank_account": [ - "ba", - "card" - ], - "balance_transaction": "txn", - "billing_portal.session": "bps", - "billing_portal.configuration": "bpc", - "card": "card", - "charge": [ - "ch", - "py" - ], - "checkout.session": "cs", - "credit_note": "cn", - "credit_note_line_item": "cnli", - "connect_collection_transfer": "connct", - "customer": "cus", - "customer_balance_transaction": "cbtxn", - "discount": "di", - "dispute": [ - "dp", - "du", - "pdp" - ], - "ephemeral_key": "ephkey", - "event": "evt", - "fee_refund": "fr", - "file": "file", - "file_link": "link", - "invoice": "in", - "invoiceitem": "ii", - "item": "li", - "issuing.dispute": "idp", - "issuing.cardholder": "ich", - "issuing.card": "ic", - "issuing.transaction": "ipi", - "issuing.authorization": "iauth", - "mandate": "mandate", - "order": "or", - "payout": "po", - "payment_intent": "pi", - "payment_link": "plink", - "payment_method": [ - "pm", - "card", - "src", - "ba" - ], - "person": "person", - "platform_tax_fee": "ptf", - "price": [ - "price", - "plan" - ], - "promotion_code": "promo", - "quote": "qt", - "review": "prv", - "refund": [ - "re", - "pyr" - ], - "reserve_transaction": "rtx", - "scheduled_query_run": "sqr", - "setup_attempt": "setatt", - "setup_intent": "seti", - "sku": "sku", - "source": "src", - "shipping_rate": "shr", - "subscription": "sub", - "subscription_item": "si", - "subscription_schedule": "sub_sched", - "tax_code": "txcd", - "tax_id": [ - "txi", - "atxi" - ], - "tax_rate": "txr", - "tax_deducted_at_source": "itds", - "terminal.reader": "tmr", - "terminal.location": "tml", - "terminal.configuration": "tmc", - "test_helpers.test_clock": "clock", - "topup": "tu", - "transfer": "tr", - "transfer_reversal": "trr", - "usage_record": "mbur", - "usage_record_summary": [ - "urs", - "sis" - ], - "webhook_endpoint": "we" -} \ No newline at end of file diff --git a/openapi/src/ids.rs b/openapi/src/ids.rs deleted file mode 100644 index da7286ae5..000000000 --- a/openapi/src/ids.rs +++ /dev/null @@ -1,46 +0,0 @@ -use std::collections::HashMap; -use std::fmt::Write; -use std::fs::File; - -use lazy_static::lazy_static; -use serde::Deserialize; - -use crate::types::{ComponentPath, RustIdent}; -use crate::STRIPE_TYPES; - -/// The kind of prefix an id is required to follow -#[derive(Deserialize)] -#[serde(untagged)] -enum IdPrefix { - /// Must start with given prefix - Single(String), - /// Must start with any of the given prefixes - Multi(Vec), -} - -fn load_id_prefixes() -> anyhow::Result> { - let prefixes = serde_json::from_reader(File::open("id_prefixes.json")?)?; - Ok(prefixes) -} - -lazy_static! { - /// Map of component_path to what the prefix for this id should be. - static ref ID_PREFIXES: HashMap = - load_id_prefixes().expect("Invalid id prefix file"); -} - -pub fn write_object_id(out: &mut String, path: &ComponentPath, ident: &RustIdent) { - match ID_PREFIXES.get(path.as_ref()) { - Some(IdPrefix::Single(prefix)) => { - let _ = writeln!(out, r#"{STRIPE_TYPES}::def_id!({ident}, "{prefix}_");"#); - } - Some(IdPrefix::Multi(prefixes)) => { - let prefix_arg = - prefixes.iter().map(|p| format!(r#""{p}_""#)).collect::>().join("|"); - let _ = writeln!(out, "{STRIPE_TYPES}::def_id!({ident}, {prefix_arg});"); - } - None => { - let _ = writeln!(out, "{STRIPE_TYPES}::def_id!({ident});"); - } - } -} diff --git a/openapi/src/lib.rs b/openapi/src/lib.rs index 34ed5740b..5591e65a4 100644 --- a/openapi/src/lib.rs +++ b/openapi/src/lib.rs @@ -5,7 +5,6 @@ mod crate_table; pub mod crates; mod deduplication; mod graph; -mod ids; mod object_writing; mod overrides; mod printable; diff --git a/openapi/src/object_writing.rs b/openapi/src/object_writing.rs index ea3efe846..da8c4d752 100644 --- a/openapi/src/object_writing.rs +++ b/openapi/src/object_writing.rs @@ -1,7 +1,6 @@ use std::fmt::Write; use crate::components::Components; -use crate::ids::write_object_id; use crate::printable::Lifetime; use crate::rust_object::{as_enum_of_objects, ObjectMetadata, RustObject}; use crate::rust_type::RustType; @@ -9,6 +8,7 @@ use crate::stripe_object::{RequestSpec, StripeObject}; use crate::templates::object_trait::{write_object_trait, write_object_trait_for_enum}; use crate::templates::utils::write_doc_comment; use crate::templates::ObjectWriter; +use crate::STRIPE_TYPES; const ADD_UNKNOWN_VARIANT_THRESHOLD: usize = 12; @@ -101,7 +101,8 @@ pub fn gen_obj( // `DeletedAccount`, we don't want to duplicate `AccountId` since `DeletedAccount` // uses that same id if path == comp.path() { - write_object_id(&mut out, path, &comp.id_type_ident()) + let id_ident = comp.id_type_ident(); + let _ = writeln!(out, "{STRIPE_TYPES}::def_id!({id_ident});"); } } } diff --git a/stripe_types/src/ids.rs b/stripe_types/src/ids.rs index 36e123179..4a0930e4d 100644 --- a/stripe_types/src/ids.rs +++ b/stripe_types/src/ids.rs @@ -1,28 +1,3 @@ -#[doc(hidden)] -#[macro_export] -macro_rules! def_id_serde_impls { - ($struct_name:ident) => { - impl serde::Serialize for $struct_name { - fn serialize(&self, serializer: S) -> Result - where - S: serde::ser::Serializer, - { - self.as_str().serialize(serializer) - } - } - - impl<'de> serde::Deserialize<'de> for $struct_name { - fn deserialize(deserializer: D) -> Result - where - D: serde::de::Deserializer<'de>, - { - let s: std::borrow::Cow<'de, str> = serde::Deserialize::deserialize(deserializer)?; - s.parse::().map_err(::serde::de::Error::custom) - } - } - }; -} - #[doc(hidden)] #[macro_export] macro_rules! def_id { @@ -101,143 +76,41 @@ macro_rules! def_id { } impl std::str::FromStr for $struct_name { - type Err = $crate::ParseIdError; + type Err = std::convert::Infallible; fn from_str(s: &str) -> Result { - Ok($struct_name(s.into())) - } - } - - $crate::def_id_serde_impls!($struct_name); - }; - ($struct_name:ident, $prefix:literal $(| $alt_prefix:literal)*) => { - /// An id for the corresponding object type. - /// - /// This type _typically_ will not allocate and - /// therefore is usually cheaply clonable. - #[derive(Clone, Debug, Eq, PartialEq, Hash)] - pub struct $struct_name(smol_str::SmolStr); - - impl $struct_name { - /// The valid prefixes of the id type (e.g. [`ch_`, `py_`\ for a `ChargeId`). - #[inline] - pub fn prefixes() -> &'static [&'static str] { - &[$prefix$(, $alt_prefix)*] - } - - /// Extracts a string slice containing the entire id. - #[inline] - pub fn as_str(&self) -> &str { - self.0.as_str() - } - - /// Obtain a reference to the underlying `SmolStr`. - #[inline] - pub fn inner(&self) -> &smol_str::SmolStr { - &self.0 - } - - /// Check is provided prefix would be a valid prefix for id's of this type - pub fn is_valid_prefix(prefix: &str) -> bool { - prefix == $prefix $( || prefix == $alt_prefix )* - } - } - - impl stripe_types::AsCursor for $struct_name { - fn as_cursor(&self) -> &str { - self.0.as_str() - } - } - - impl PartialEq for $struct_name { - fn eq(&self, other: &str) -> bool { - self.as_str() == other - } - } - - impl PartialEq<&str> for $struct_name { - fn eq(&self, other: &&str) -> bool { - self.as_str() == *other - } - } - - impl PartialEq for $struct_name { - fn eq(&self, other: &String) -> bool { - self.as_str() == other + Ok(Self(smol_str::SmolStr::from(s))) } } - impl PartialOrd for $struct_name { - fn partial_cmp(&self, other: &Self) -> Option { - Some(self.cmp(other)) - } - } - - impl Ord for $struct_name { - fn cmp(&self, other: &Self) -> std::cmp::Ordering { - self.as_str().cmp(other.as_str()) - } - } - - impl AsRef for $struct_name { - fn as_ref(&self) -> &str { - self.as_str() - } - } - - impl std::ops::Deref for $struct_name { - type Target = str; - - fn deref(&self) -> &str { - self.as_str() + impl serde::Serialize for $struct_name { + fn serialize(&self, serializer: S) -> Result + where + S: serde::ser::Serializer, + { + self.as_str().serialize(serializer) } } - impl std::fmt::Display for $struct_name { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - self.0.fmt(f) + impl From for $struct_name { + #[inline] + fn from(text: String) -> Self { + Self(smol_str::SmolStr::from(text)) } } - impl std::str::FromStr for $struct_name { - type Err = $crate::ParseIdError; - - fn from_str(s: &str) -> Result { - if !s.starts_with($prefix) $( - && !s.starts_with($alt_prefix) - )* { - Err($crate::ParseIdError { - typename: stringify!($struct_name), - expected: stringify!(id to start with $prefix $(or $alt_prefix)*), - }) - } else { - Ok($struct_name(s.into())) - } + impl<'de> serde::Deserialize<'de> for $struct_name { + fn deserialize(deserializer: D) -> Result + where + D: serde::de::Deserializer<'de>, + { + let s: String = serde::Deserialize::deserialize(deserializer)?; + Ok(Self::from(s)) } } - - $crate::def_id_serde_impls!($struct_name); }; } -#[derive(Copy, Clone, Debug)] -pub struct ParseIdError { - pub typename: &'static str, - pub expected: &'static str, -} - -impl std::fmt::Display for ParseIdError { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "invalid `{}`, expected {}", self.typename, self.expected) - } -} - -impl std::error::Error for ParseIdError { - fn description(&self) -> &str { - "error parsing an id" - } -} - // Allow dead code in the tests to avoid warnings around unused code in macro expansions #[allow(dead_code)] #[cfg(test)] @@ -247,14 +120,7 @@ mod tests { use serde::de::DeserializeOwned; use serde::Serialize; - def_id!(ChargeId, "ch_" | "py_"); - def_id!(InvoiceId, "in_"); - def_id!(CustomerId, "cus_"); - def_id!(PriceId, "price_"); - def_id!(ProductId); - def_id!(PaymentMethodId, "pm_" | "card_" | "src_" | "ba_"); - def_id!(RefundId, "re_" | "pyr_"); - def_id!(SubscriptionId, "sub_"); + def_id!(TestId); fn assert_ser_de_roundtrip(id: &str) where @@ -275,62 +141,8 @@ mod tests { #[test] fn test_ser_de_roundtrip() { - // Single prefixes - for id in ["in_12345", "in_"] { - assert_ser_de_roundtrip::(id); - } - assert_ser_de_roundtrip::("price_abc"); - - // Case where multiple possible prefixes - for id in ["re_bcd", "pyr_123"] { - assert_ser_de_roundtrip::(id); - } - - // Case where id can be anything - for id in ["anything", ""] { - assert_ser_de_roundtrip::(id); - } - } - - #[test] - fn test_deser_err() { - // Single prefix - assert_deser_err::("in"); - - for id in ["sub", ""] { - assert_deser_err::(id); - } - - // Case where multiple possible prefixes - for id in ["abc_bcd", "pyr_123"] { - assert_deser_err::(id); - } - } - - #[test] - fn test_parse_customer() { - assert!("cus_123".parse::().is_ok()); - let bad_parse = "zzz_123".parse::(); - assert!(bad_parse.is_err()); - if let Err(err) = bad_parse { - assert_eq!( - format!("{}", err), - "invalid `CustomerId`, expected id to start with \"cus_\"" - ); - } - } - - #[test] - fn test_parse_charge() { - assert!("ch_123".parse::().is_ok()); - assert!("py_123".parse::().is_ok()); - let bad_parse = "zz_123".parse::(); - assert!(bad_parse.is_err()); - if let Err(err) = bad_parse { - assert_eq!( - format!("{}", err), - "invalid `ChargeId`, expected id to start with \"ch_\" or \"py_\"" - ); + for id in ["in_12345", "in_", "", "price_abc"] { + assert_ser_de_roundtrip::(id); } } } diff --git a/stripe_types/src/lib.rs b/stripe_types/src/lib.rs index 08e1a4ec8..926bf0590 100644 --- a/stripe_types/src/lib.rs +++ b/stripe_types/src/lib.rs @@ -8,7 +8,6 @@ mod params; pub use currency::{Currency, ParseCurrencyError}; pub use expandable::*; -pub use ids::*; pub use pagination::*; pub use params::*;