init
This commit is contained in:
34
src/commands/did.rs
Normal file
34
src/commands/did.rs
Normal file
@@ -0,0 +1,34 @@
|
||||
use anyhow::{Context, Result};
|
||||
use serde::Deserialize;
|
||||
|
||||
use crate::lexicons::{self, com_atproto_identity};
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
struct ResolveHandleResponse {
|
||||
did: String,
|
||||
}
|
||||
|
||||
/// Resolve handle to DID
|
||||
pub async fn resolve(handle: &str, server: &str) -> Result<()> {
|
||||
let client = reqwest::Client::new();
|
||||
let url = format!(
|
||||
"{}?handle={}",
|
||||
lexicons::url(server, &com_atproto_identity::RESOLVE_HANDLE),
|
||||
handle
|
||||
);
|
||||
|
||||
let res = client.get(&url).send().await?;
|
||||
|
||||
if !res.status().is_success() {
|
||||
let status = res.status();
|
||||
let body = res.text().await.unwrap_or_default();
|
||||
anyhow::bail!("Failed to resolve handle: {} - {}", status, body);
|
||||
}
|
||||
|
||||
let result: ResolveHandleResponse = res.json().await
|
||||
.context("Failed to parse response")?;
|
||||
|
||||
println!("{}", result.did);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
Reference in New Issue
Block a user