use reqwest;
use async_trait::async_trait;
use vade::traits::{ DidResolver };
use serde_json::Value;
use simple_error::SimpleError;
pub struct RustDidResolverEvan {
}
impl RustDidResolverEvan {
pub fn new() -> RustDidResolverEvan {
RustDidResolverEvan { }
}
}
#[async_trait(?Send)]
impl DidResolver for RustDidResolverEvan {
async fn check_did(&self, _did_name: &str, _value: &str) -> Result<(), Box<dyn std::error::Error>> {
unimplemented!();
}
async fn get_did_document(&self, did_id: &str) -> Result<String, Box<dyn std::error::Error>> {
let body = reqwest::get(&format!("https://testcore.evan.network/did/{}", did_id))
.await?
.text()
.await?;
let parsed: Value = serde_json::from_str(&body).unwrap();
if parsed["status"] == "error" {
Err(Box::new(SimpleError::new(format!("could not get did document, {:?}", parsed["error"].as_str().unwrap()))))
} else {
Ok(serde_json::to_string(&parsed["did"]).unwrap())
}
}
async fn set_did_document(&mut self, _did_id: &str, _value: &str) -> std::result::Result<(), Box<dyn std::error::Error>> {
unimplemented!();
}
}