dodopayments_rust 2.2.1

Rust SDK for Dodo Payments API
Documentation
use crate::{
    client::DodoPaymentsClient,
    models::{
        CreateWebhookRequest, GetWebhookHeadersResponse, GetWebhookSecretResponse,
        ListWebhooksResponse, PatchWebhookRequest, WebhookDetails, WebhookHeadersReq,
    },
    request_builder::RequestBuilder,
};
use reqwest::Method;

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

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

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

    pub fn create(&self) -> RequestBuilder<'client, WebhookDetails, (), CreateWebhookRequest> {
        RequestBuilder::new(self.client, Method::POST, "/webhooks")
    }

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

pub struct WebHookByIdApi<'client> {
    client: &'client DodoPaymentsClient,
    webhook_id: String,
}

impl<'client> WebHookByIdApi<'client> {
    pub fn retrieve(&self) -> RequestBuilder<'client, WebhookDetails, (), ()> {
        RequestBuilder::new(
            self.client,
            Method::GET,
            format!("/webhooks/{}", self.webhook_id),
        )
    }

    pub fn update(&self) -> RequestBuilder<'client, WebhookDetails, (), PatchWebhookRequest> {
        RequestBuilder::new(
            self.client,
            Method::PATCH,
            format!("/webhooks/{}", self.webhook_id),
        )
    }

    pub fn delete(&self) -> RequestBuilder<'client, (), (), ()> {
        RequestBuilder::new(
            self.client,
            Method::DELETE,
            format!("/webhooks/{}", self.webhook_id),
        )
    }

    pub fn retrieve_webhook_headers(
        &self,
    ) -> RequestBuilder<'client, GetWebhookHeadersResponse, (), ()> {
        RequestBuilder::new(
            self.client,
            Method::GET,
            format!("/webhooks/{}/headers", self.webhook_id),
        )
    }

    pub fn update_webhook_headers(
        &self,
    ) -> RequestBuilder<'client, GetWebhookHeadersResponse, (), WebhookHeadersReq> {
        RequestBuilder::new(
            self.client,
            Method::PATCH,
            format!("/webhooks/{}/headers", self.webhook_id),
        )
    }

    pub fn signing_key(&self) -> RequestBuilder<'client, GetWebhookSecretResponse, (), ()> {
        RequestBuilder::new(
            self.client,
            Method::GET,
            format!("/webhooks/{}/secret", self.webhook_id),
        )
    }
}