+12
-3
crates/ott-xrpc/src/main.rs
+12
-3
crates/ott-xrpc/src/main.rs
···
1
1
use std::collections::BTreeMap;
2
2
3
-
use axum::{Json, Router};
3
+
use axum::{routing::get, Json, Router};
4
4
use jacquard::types::did_doc::{DidDocument, Service, VerificationMethod};
5
5
use jacquard_api::app_bsky::feed::{
6
6
get_feed_skeleton::{GetFeedSkeletonOutput, GetFeedSkeletonRequest},
···
17
17
use jacquard_identity::JacquardResolver;
18
18
use ott_xrpc::{bsky::BskyClient, key::generate_key};
19
19
20
+
use serde_json::Value;
20
21
use tracing::info;
21
22
use tracing_subscriber::EnvFilter;
23
+
24
+
async fn handle_wellknown_atproto_did() -> Json<serde_json::Value> {
25
+
Json::from(Value::from("did:web:ott.aleeve.dev"))
26
+
}
22
27
23
28
async fn handler(
24
29
ExtractServiceAuth(auth): ExtractServiceAuth,
···
55
60
56
61
let verification_method = VerificationMethod {
57
62
id: format!("{}#atproto", did_str).into(),
58
-
r#type: "Mutlikey".into(),
63
+
r#type: "Multikey".into(),
59
64
controller: Some("did:web:ott.aleeve.dev".into()),
60
65
public_key_multibase: Some(generate_key().into()),
61
66
extra_data: BTreeMap::default(),
···
83
88
let app = Router::new()
84
89
.merge(GetFeedSkeletonRequest::into_router(handler))
85
90
.with_state(config)
86
-
.merge(did_web_router(did_doc));
91
+
.merge(did_web_router(did_doc))
92
+
.route(
93
+
"/.well-known/atproto-did",
94
+
get(handle_wellknown_atproto_did),
95
+
);
87
96
88
97
let listener = tokio::net::TcpListener::bind("0.0.0.0:8080").await.unwrap();
89
98
info!("Starting service");