dodo_payments 0.1.1

This is Unoffical SDK of dodopayments.com
Documentation
use super::*;
use crate::{client::Handle, operations::create_product::GetProductResponse};
use std::sync::Arc;
use super::super::common::structs::{LicenseKeyDuration, Metadata, PatchDigitalProductDeliveryRequest, Price, TaxCategory};

pub struct UpdateProductBuilder {
    pub config: UpdateProductConfig,
    pub(crate) handle: Arc<Handle>,
}

impl UpdateProductBuilder {
    pub fn new(handle: Arc<Handle>, id: String) -> Self {
        Self {
            handle,
            config: UpdateProductConfig {
                id,
                body: PatchProductRequest {
                    addons: None,
                    brand_id: None,
                    description: None,
                    digital_product_delivery: None,
                    image_id: None,
                    license_key_activation_message: None,
                    license_key_activations_limit: None,
                    license_key_duration: None,
                    license_key_enabled: None,
                    metadata: None,
                    name: None,
                    price: None,
                    tax_category: None,
                },
            },
        }
    }

    pub fn addons(mut self, addons: Vec<String>) -> Self {
        self.config.body.addons = Some(addons);
        self
    }

    pub fn brand_id(mut self, brand_id: String) -> Self {
        self.config.body.brand_id = Some(brand_id);
        self
    }

    pub fn description(mut self, description: String) -> Self {
        self.config.body.description = Some(description);
        self
    }

    pub fn digital_product_delivery(mut self, digital_product_delivery: PatchDigitalProductDeliveryRequest) -> Self {
        self.config.body.digital_product_delivery = Some(digital_product_delivery);
        self
    }

    pub fn image_id(mut self, image_id: String) -> Self {
        self.config.body.image_id = Some(image_id);
        self
    }

    pub fn license_key_activation_message(mut self, license_key_activation_message: String) -> Self {
        self.config.body.license_key_activation_message = Some(license_key_activation_message);
        self
    }

    pub fn license_key_activations_limit(mut self, license_key_activations_limit: i32) -> Self {
        self.config.body.license_key_activations_limit = Some(license_key_activations_limit);
        self
    }

    pub fn license_key_duration(mut self, license_key_duration: LicenseKeyDuration) -> Self {
        self.config.body.license_key_duration = Some(license_key_duration);
        self
    }

    pub fn license_key_enabled(mut self, license_key_enabled: bool) -> Self {
        self.config.body.license_key_enabled = Some(license_key_enabled);
        self
    }

    pub fn metadata(mut self, metadata: Metadata) -> Self {
        self.config.body.metadata = Some(metadata);
        self
    }

    pub fn name(mut self, name: String) -> Self {
        self.config.body.name = Some(name);
        self
    }

    pub fn price(mut self, price: Price) -> Self {
        self.config.body.price = Some(price);
        self
    }

    pub fn tax_category(mut self, tax_category: TaxCategory) -> Self {
        self.config.body.tax_category = Some(tax_category);
        self
    }

    pub async fn send(self) -> Result<GetProductResponse, crate::errors::Error> {
        Ok(UpdateProduct::orchestrate(self.handle, self.config).await?)
    }
}