dfns-sdk-rust 0.2.0

Dfns API SDK for Rust
Documentation
// Code generated by rust-sdk-generator. DO NOT EDIT.

pub mod delegated;
pub mod types;

#[allow(unused_imports)]
use types::*;

/// Client for agreements operations.
#[derive(Clone)]
pub struct AgreementsClient {
    client: crate::client::Client,
}

impl AgreementsClient {
    pub fn new(client: crate::client::Client) -> Self {
        AgreementsClient { client }
    }

    /// Get the latest unaccepted agreement for a specific agreement type
    pub async fn get_latest_unaccepted_agreement(
        &self,
        query: Option<GetLatestUnacceptedAgreementQuery>,
    ) -> Result<GetLatestUnacceptedAgreementResponse, crate::error::Error> {
        let mut path = String::from("/agreements/latest-unaccepted");
        if let Some(query) = &query {
            let mut q: Vec<String> = Vec::new();
            q.push(format!(
                "agreementType={}",
                urlencoding::encode(&query.agreement_type.to_string())
            ));
            if !q.is_empty() {
                path.push('?');
                path.push_str(&q.join("&"));
            }
        }
        self.client
            .request::<GetLatestUnacceptedAgreementResponse>(
                reqwest::Method::GET,
                &path,
                None,
                false,
            )
            .await
    }

    /// Record the acceptance of a specific agreement by its ID
    pub async fn record_agreement_acceptance(
        &self,
        agreement_id: String,
    ) -> Result<RecordAgreementAcceptanceResponse, crate::error::Error> {
        let path = format!("/agreements/{}/accept", urlencoding::encode(&agreement_id));
        self.client
            .request::<RecordAgreementAcceptanceResponse>(reqwest::Method::POST, &path, None, true)
            .await
    }
}