Skip to main content

dfns_sdk_rust/agreements/
mod.rs

1// Code generated by rust-sdk-generator. DO NOT EDIT.
2
3pub mod types;
4
5#[allow(unused_imports)]
6use types::*;
7
8/// Client for agreements operations.
9#[derive(Clone)]
10pub struct AgreementsClient {
11    client: crate::client::Client,
12}
13
14impl AgreementsClient {
15    pub fn new(client: crate::client::Client) -> Self {
16        AgreementsClient { client }
17    }
18
19    /// Get the latest unaccepted agreement for a specific agreement type
20    pub async fn get_latest_unaccepted_agreement(
21        &self,
22        query: Option<GetLatestUnacceptedAgreementQuery>,
23    ) -> Result<GetLatestUnacceptedAgreementResponse, crate::error::Error> {
24        let mut path = String::from("/agreements/latest-unaccepted");
25        if let Some(query) = &query {
26            let mut q: Vec<String> = Vec::new();
27            q.push(format!(
28                "agreementType={}",
29                urlencoding::encode(&query.agreement_type.to_string())
30            ));
31            if !q.is_empty() {
32                path.push('?');
33                path.push_str(&q.join("&"));
34            }
35        }
36        self.client
37            .request::<GetLatestUnacceptedAgreementResponse>(
38                reqwest::Method::GET,
39                &path,
40                None,
41                false,
42            )
43            .await
44    }
45
46    /// Record the acceptance of a specific agreement by its ID
47    pub async fn record_agreement_acceptance(
48        &self,
49        agreement_id: String,
50    ) -> Result<RecordAgreementAcceptanceResponse, crate::error::Error> {
51        let path = format!("/agreements/{}/accept", urlencoding::encode(&agreement_id));
52        self.client
53            .request::<RecordAgreementAcceptanceResponse>(reqwest::Method::POST, &path, None, true)
54            .await
55    }
56}