use std::time::Duration;
use irma::{CredentialBuilder, IrmaClient, IssuanceRequestBuilder};
use tokio::time::sleep;
#[tokio::main]
async fn main() {
let client = IrmaClient::new("http://localhost:8088/").unwrap();
let request = IssuanceRequestBuilder::new()
.add_credential(
CredentialBuilder::new("irma-demo.sidn-pbdf.email".into())
.attribute("email".into(), "test@example.com".into())
.build(),
)
.build();
let session = client
.request(&request)
.await
.expect("Failed to start session");
let sessionptr = serde_json::to_string(&session.session_ptr).unwrap();
let qr = qrcode::QrCode::new(sessionptr)
.unwrap()
.render::<char>()
.quiet_zone(false)
.module_dimensions(2, 1)
.build();
println!("\n\n{}", qr);
loop {
match client.result(&session.token).await {
Ok(_) => break,
Err(irma::Error::SessionNotFinished(_)) => {}
Err(v) => panic!("{}", v),
}
sleep(Duration::from_secs(2)).await;
}
println!("Issuance done");
}