siera-cloudagent-python 0.2.0

Hyperledger Aries Cloudagent Python controller.
Documentation
use crate::agent::CloudAgentPython;
use async_trait::async_trait;
use serde_json::json;
use siera_agent::error::Result;
use siera_agent::modules::oob::{
    OobConnection, OobConnectionCreateInvitationOptions, OobConnectionCreateInvitationResponse,
    OobConnectionReceiveInvitationOptions, OobModule,
};

#[async_trait]
impl OobModule for CloudAgentPython {
    async fn create_invitation(
        &self,
        options: OobConnectionCreateInvitationOptions,
    ) -> Result<OobConnectionCreateInvitationResponse> {
        let url = self.create_url(&["out-of-band", "create-invitation"])?;
        let mut query: Vec<(&str, String)> = vec![];

        if options.multi_use {
            query.push(("multi_use", true.to_string()));
        }
        if options.auto_accept {
            query.push(("auto_accept", true.to_string()));
        }
        if let Some(alias) = &options.alias {
            query.push(("alias", alias.clone()));
        }

        let body = Some(json!({
            "handshake_protocols": [
                options.handshake_protocol,
            ]
        }));

        self.post::<OobConnectionCreateInvitationResponse>(url, Some(query), body)
            .await
    }
    async fn receive_invitation(
        &self,
        invitation: OobConnectionReceiveInvitationOptions,
    ) -> Result<OobConnection> {
        let url = self.create_url(&["out-of-band", "receive-invitation"])?;

        self.post(url, None, Some(serde_json::to_value(invitation)?))
            .await
    }
}