use rocket::serde::Deserialize;
#[derive(Debug, Deserialize)]
#[serde(crate = "rocket::serde")]
pub struct StripeCustomerDetails<'s> {
pub email: &'s str,
pub name: &'s str,
}
#[derive(Debug, Deserialize)]
#[serde(crate = "rocket::serde")]
pub struct StripeChargeObject<'s> {
pub id: &'s str,
pub created: i64,
pub currency: &'s str,
pub paid: bool,
pub status: &'s str,
pub amount: u32,
pub billing_details: StripeCustomerDetails<'s>,
pub calculated_statement_descriptor: Option<&'s str>,
pub receipt_url: Option<&'s str>,
}
#[derive(Debug, Deserialize)]
#[serde(crate = "rocket::serde")]
pub struct StripeCheckoutObject<'s> {
pub id: &'s str,
pub created: i64,
pub currency: &'s str,
pub payment_status: &'s str,
pub status: &'s str,
pub amount_total: u32,
pub customer_details: StripeCustomerDetails<'s>,
}
#[derive(Debug, Deserialize)]
#[serde(crate = "rocket::serde")]
#[serde(untagged)]
pub enum StripeData<'s> {
StripeCharge {
#[serde(borrow)]
object: StripeChargeObject<'s>,
},
StripeCheckout {
#[serde(borrow)]
object: StripeCheckoutObject<'s>,
},
}
#[derive(Debug, Deserialize)]
#[serde(crate = "rocket::serde")]
pub struct StripeEvent<'s> {
#[serde(alias = "id")]
pub _id: &'s str,
#[serde(borrow)]
pub data: StripeData<'s>,
#[serde(rename(deserialize = "type"))]
pub event_type: &'s str,
}