use crate::client::{Client, Response};
use crate::ids::{PaymentMethodDomainId};
use crate::params::{Expand, List, Object, Paginable, Timestamp};
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct PaymentMethodDomain {
pub id: PaymentMethodDomainId,
pub apple_pay: PaymentMethodDomainResourcePaymentMethodStatus,
pub created: Timestamp,
pub domain_name: String,
pub enabled: bool,
pub google_pay: PaymentMethodDomainResourcePaymentMethodStatus,
pub link: PaymentMethodDomainResourcePaymentMethodStatus,
pub livemode: bool,
pub paypal: PaymentMethodDomainResourcePaymentMethodStatus,
}
impl PaymentMethodDomain {
pub fn list(client: &Client, params: &ListPaymentMethodDomains<'_>) -> Response<List<PaymentMethodDomain>> {
client.get_query("/payment_method_domains", params)
}
pub fn create(client: &Client, params: CreatePaymentMethodDomain<'_>) -> Response<PaymentMethodDomain> {
#[allow(clippy::needless_borrows_for_generic_args)]
client.post_form("/payment_method_domains", ¶ms)
}
pub fn retrieve(client: &Client, id: &PaymentMethodDomainId, expand: &[&str]) -> Response<PaymentMethodDomain> {
client.get_query(&format!("/payment_method_domains/{}", id), Expand { expand })
}
pub fn update(client: &Client, id: &PaymentMethodDomainId, params: UpdatePaymentMethodDomain<'_>) -> Response<PaymentMethodDomain> {
#[allow(clippy::needless_borrows_for_generic_args)]
client.post_form(&format!("/payment_method_domains/{}", id), ¶ms)
}
}
impl Object for PaymentMethodDomain {
type Id = PaymentMethodDomainId;
fn id(&self) -> Self::Id {
self.id.clone()
}
fn object(&self) -> &'static str {
"payment_method_domain"
}
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct PaymentMethodDomainResourcePaymentMethodStatus {
pub status: PaymentMethodDomainResourcePaymentMethodStatusStatus,
#[serde(skip_serializing_if = "Option::is_none")]
pub status_details: Option<PaymentMethodDomainResourcePaymentMethodStatusDetails>,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct PaymentMethodDomainResourcePaymentMethodStatusDetails {
pub error_message: String,
}
#[derive(Clone, Debug, Serialize)]
pub struct CreatePaymentMethodDomain<'a> {
pub domain_name: &'a str,
#[serde(skip_serializing_if = "Option::is_none")]
pub enabled: Option<bool>,
#[serde(skip_serializing_if = "Expand::is_empty")]
pub expand: &'a [&'a str],
}
impl<'a> CreatePaymentMethodDomain<'a> {
pub fn new(domain_name: &'a str) -> Self {
CreatePaymentMethodDomain {
domain_name,
enabled: Default::default(),
expand: Default::default(),
}
}
}
#[derive(Clone, Debug, Serialize, Default)]
pub struct ListPaymentMethodDomains<'a> {
#[serde(skip_serializing_if = "Option::is_none")]
pub domain_name: Option<&'a str>,
#[serde(skip_serializing_if = "Option::is_none")]
pub enabled: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ending_before: Option<PaymentMethodDomainId>,
#[serde(skip_serializing_if = "Expand::is_empty")]
pub expand: &'a [&'a str],
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub starting_after: Option<PaymentMethodDomainId>,
}
impl<'a> ListPaymentMethodDomains<'a> {
pub fn new() -> Self {
ListPaymentMethodDomains {
domain_name: Default::default(),
enabled: Default::default(),
ending_before: Default::default(),
expand: Default::default(),
limit: Default::default(),
starting_after: Default::default(),
}
}
}
impl Paginable for ListPaymentMethodDomains<'_> {
type O = PaymentMethodDomain;
fn set_last(&mut self, item: Self::O) {
self.starting_after = Some(item.id());
}}
#[derive(Clone, Debug, Serialize, Default)]
pub struct UpdatePaymentMethodDomain<'a> {
#[serde(skip_serializing_if = "Option::is_none")]
pub enabled: Option<bool>,
#[serde(skip_serializing_if = "Expand::is_empty")]
pub expand: &'a [&'a str],
}
impl<'a> UpdatePaymentMethodDomain<'a> {
pub fn new() -> Self {
UpdatePaymentMethodDomain {
enabled: Default::default(),
expand: Default::default(),
}
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum PaymentMethodDomainResourcePaymentMethodStatusStatus {
Active,
Inactive,
}
impl PaymentMethodDomainResourcePaymentMethodStatusStatus {
pub fn as_str(self) -> &'static str {
match self {
PaymentMethodDomainResourcePaymentMethodStatusStatus::Active => "active",
PaymentMethodDomainResourcePaymentMethodStatusStatus::Inactive => "inactive",
}
}
}
impl AsRef<str> for PaymentMethodDomainResourcePaymentMethodStatusStatus {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for PaymentMethodDomainResourcePaymentMethodStatusStatus {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
impl std::default::Default for PaymentMethodDomainResourcePaymentMethodStatusStatus {
fn default() -> Self {
Self::Active
}
}