dodopayments_rust 2.2.2

Rust SDK for Dodo Payments API
Documentation
use crate::{
    client::DodoPaymentsClient,
    models::{
        CreateOneTimePaymentRequest, CreateOneTimePaymentResponse, GetPaymentsListResponse,
        PaymentLineItemsResponse, PaymentResponse,
    },
    request_builder::{RawBytes, RequestBuilder},
};
use reqwest::Method;

pub struct PaymentsApi<'client> {
    pub(crate) client: &'client DodoPaymentsClient,
}

impl<'client> PaymentsApi<'client> {
    pub fn new(client: &'client DodoPaymentsClient) -> Self {
        Self { client }
    }

    pub fn list(&self) -> RequestBuilder<'client, GetPaymentsListResponse, (), ()> {
        RequestBuilder::new(self.client, Method::GET, "/payments")
    }

    #[deprecated(note = "This API will be deprecated soon. We recommend using Checkout Sessions.")]
    pub fn create(
        &self,
    ) -> RequestBuilder<'client, CreateOneTimePaymentResponse, (), CreateOneTimePaymentRequest>
    {
        RequestBuilder::new(self.client, Method::POST, "/payments")
    }

    pub fn id(&self, payment_id: impl Into<String>) -> PaymentByIdApi<'client> {
        PaymentByIdApi {
            client: self.client,
            payment_id: payment_id.into(),
        }
    }
}

pub struct PaymentByIdApi<'client> {
    client: &'client DodoPaymentsClient,
    payment_id: String,
}

impl<'client> PaymentByIdApi<'client> {
    pub fn retrieve(&self) -> RequestBuilder<'client, PaymentResponse, (), ()> {
        RequestBuilder::new(
            self.client,
            Method::GET,
            format!("/payments/{}", self.payment_id),
        )
    }

    pub fn retrieve_invoice(&self) -> RequestBuilder<'client, RawBytes, (), ()> {
        RequestBuilder::new(
            self.client,
            Method::GET,
            format!("/invoices/payments/{}", self.payment_id),
        )
    }

    pub fn line_items(&self) -> RequestBuilder<'client, PaymentLineItemsResponse, (), ()> {
        RequestBuilder::new(
            self.client,
            Method::GET,
            format!("/payments/{}/line-items", self.payment_id),
        )
    }
}