+1
Cargo.lock
+1
Cargo.lock
+1
Cargo.toml
+1
Cargo.toml
-1
src/db.rs
-1
src/db.rs
+9
-4
src/main.rs
+9
-4
src/main.rs
···
1
1
mod config;
2
2
mod db;
3
+
mod resolver;
3
4
4
5
#[tokio::main]
5
6
async fn main() {
6
-
println!("Indexing {}", *config::USER);
7
+
println!("User: {}", *config::USER);
7
8
let conn = db::init().await;
8
-
println!("Database established");
9
+
println!("Database connected and initialized");
10
+
11
+
let pds = match resolver::resolve(&config::USER).await {
12
+
Ok(val) => val,
13
+
Err(err) => panic!("{}", err),
14
+
};
9
15
10
-
// to stop docker whinging
11
-
loop {}
16
+
println!("PDS: {}", pds);
12
17
}
+21
src/resolver.rs
+21
src/resolver.rs
···
1
+
use jacquard::prelude::IdentityResolver;
2
+
use jacquard::types::did::Did;
3
+
use thiserror::Error;
4
+
5
+
#[derive(Debug, Error)]
6
+
pub enum ResolveError {
7
+
#[error("Identity error: {}", .0)]
8
+
IdentityError(#[from] jacquard::identity::resolver::IdentityError),
9
+
#[error("Missing domain")]
10
+
MissingDomain,
11
+
}
12
+
13
+
pub async fn resolve(did: &Did<'_>) -> Result<String, ResolveError> {
14
+
// resolve did to pds
15
+
let resolver = jacquard::identity::PublicResolver::default();
16
+
let pds = resolver.pds_for_did(did).await?;
17
+
let Some(pds) = pds.domain() else {
18
+
return Err(ResolveError::MissingDomain);
19
+
};
20
+
Ok(String::from(pds))
21
+
}