dfns_sdk_rust/agreements/
mod.rs1pub mod types;
4
5#[allow(unused_imports)]
6use types::*;
7
8#[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 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 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}