siera_cloudagent_python/cloudagent/
credential.rs1use 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}