dodopayments_rust 2.2.2

Rust SDK for Dodo Payments API
Documentation
use crate::{
    client::DodoPaymentsClient,
    models::{CalculateSessionResponse, CreateCheckoutSessionRequest, CreateSessionResponse},
    request_builder::RequestBuilder,
};
use reqwest::Method;

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

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

    pub fn create(
        &self,
    ) -> RequestBuilder<'client, CreateSessionResponse, (), CreateCheckoutSessionRequest> {
        RequestBuilder::new(self.client, Method::POST, "/checkouts")
    }

    pub fn preview(
        &self,
    ) -> RequestBuilder<'client, CalculateSessionResponse, (), CreateCheckoutSessionRequest> {
        RequestBuilder::new(self.client, Method::POST, "/checkouts/preview")
    }

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

pub struct CheckoutByIdApi<'client> {
    client: &'client DodoPaymentsClient,
    checkout_id: String,
}

impl<'client> CheckoutByIdApi<'client> {
    pub fn retrieve(&self) -> RequestBuilder<'client, CreateSessionResponse, (), ()> {
        RequestBuilder::new(
            self.client,
            Method::GET,
            format!("/checkouts/{}", self.checkout_id),
        )
    }
}