siera_cloudagent_python/cloudagent/
credential.rs

1use crate::agent::CloudAgentPython;
2use async_trait::async_trait;
3use serde_json::json;
4use siera_agent::error::Result;
5use siera_agent::modules::credential::{
6    CredentialModule, CredentialOfferOptions, CredentialOfferResponse,
7};
8
9#[async_trait]
10impl CredentialModule for CloudAgentPython {
11    async fn send_offer(&self, options: CredentialOfferOptions) -> Result<CredentialOfferResponse> {
12        let url = self.create_url(&["issue-credential", "send-offer"])?;
13
14        let mut attributes = vec![];
15        for (i, key) in options.keys.iter().enumerate() {
16            let value = &options.values[i];
17            attributes.push(json!({"name": key, "value": value}));
18        }
19
20        let body = json!({
21          "connection_id": options.connection_id,
22          "cred_def_id": options.cred_def_id,
23          "credential_preview": {
24            "@type": "issue-credential/1.0/credential-preview",
25            "attributes": attributes,
26          },
27        });
28
29        self.post(url, None, Some(body)).await
30    }
31}