summaryrefslogtreecommitdiffstats
path: root/adenosine-pds
diff options
context:
space:
mode:
Diffstat (limited to 'adenosine-pds')
-rw-r--r--adenosine-pds/src/bin/adenosine-pds.rs10
-rw-r--r--adenosine-pds/src/db_bsky.rs60
-rw-r--r--adenosine-pds/src/lib.rs46
3 files changed, 54 insertions, 62 deletions
diff --git a/adenosine-pds/src/bin/adenosine-pds.rs b/adenosine-pds/src/bin/adenosine-pds.rs
index c004098..e92c131 100644
--- a/adenosine-pds/src/bin/adenosine-pds.rs
+++ b/adenosine-pds/src/bin/adenosine-pds.rs
@@ -148,7 +148,7 @@ fn main() -> Result<()> {
};
// hyper logging is very verbose, so crank that down even if everything else is more verbose
- let cli_filter = format!("{},hyper=error", log_level);
+ let cli_filter = format!("{log_level},hyper=error");
// defer to env var config, fallback to CLI settings
let log_filter = std::env::var("RUST_LOG").unwrap_or(cli_filter);
pretty_env_logger::formatted_timed_builder()
@@ -174,12 +174,12 @@ fn main() -> Result<()> {
Some(v) => Some(v),
};
let public_url = match public_url {
- None => format!("http://localhost:{}", port),
- Some(v) if v.is_empty() => format!("http://localhost:{}", port),
+ None => format!("http://localhost:{port}"),
+ Some(v) if v.is_empty() => format!("http://localhost:{port}"),
Some(v) => v,
};
let config = AtpServiceConfig {
- listen_host_port: format!("localhost:{}", port),
+ listen_host_port: format!("localhost:{port}"),
public_url,
registration_domain,
invite_code,
@@ -218,7 +218,7 @@ fn main() -> Result<()> {
recoveryKey: recovery_key,
};
let config = AtpServiceConfig {
- public_url: public_url.unwrap_or(format!("https://{}", handle)),
+ public_url: public_url.unwrap_or(format!("https://{handle}")),
..Default::default()
};
let keypair = KeyPair::from_hex(&pds_secret_key)?;
diff --git a/adenosine-pds/src/db_bsky.rs b/adenosine-pds/src/db_bsky.rs
index ee8e0f3..dfe8299 100644
--- a/adenosine-pds/src/db_bsky.rs
+++ b/adenosine-pds/src/db_bsky.rs
@@ -273,7 +273,7 @@ pub fn bsky_get_thread(
// parse the URI
let did = match uri.repository {
DidOrHost::Did(ref did_type, ref did_body) => {
- Did::from_str(&format!("did:{}:{}", did_type, did_body))?
+ Did::from_str(&format!("did:{did_type}:{did_body}"))?
}
_ => Err(anyhow!("expected a DID, not handle, in uri: {}", uri))?,
};
@@ -412,7 +412,7 @@ fn test_bsky_profile() {
ipld!({"subject": {"did": session.did}, "createdAt": created_at_now()}),
),
Mutation::Create(
- follow_nsid.clone(),
+ follow_nsid,
srv.tid_gen.next_tid(),
ipld!({"subject": {"did": "did:web:external.domain"}, "createdAt": created_at_now()}),
),
@@ -427,7 +427,7 @@ fn test_bsky_profile() {
ipld!({"text": "second post"}),
),
Mutation::Create(
- post_nsid.clone(),
+ post_nsid,
srv.tid_gen.next_tid(),
ipld!({"text": "third post"}),
),
@@ -534,9 +534,9 @@ fn test_bsky_feeds() {
// bob follows alice, likes first post, reposts second, replies third
let alice_post3_uri = format!(
"at://{}/{}/{}",
- alice_did.to_string(),
- post_nsid.to_string(),
- alice_post3_tid.to_string()
+ alice_did,
+ post_nsid,
+ alice_post3_tid
);
let mutations = vec![
Mutation::Create(
@@ -545,19 +545,19 @@ fn test_bsky_feeds() {
ipld!({"subject": {"did": alice_did.to_string()}, "createdAt": created_at_now()}),
),
Mutation::Create(
- like_nsid.clone(),
+ like_nsid,
srv.tid_gen.next_tid(),
- ipld!({"subject": {"uri": format!("at://{}/{}/{}", alice_did.to_string(), post_nsid.to_string(), alice_post1_tid.to_string())}, "createdAt": created_at_now()}),
+ ipld!({"subject": {"uri": format!("at://{}/{}/{}", alice_did, post_nsid, alice_post1_tid)}, "createdAt": created_at_now()}),
),
Mutation::Create(
- repost_nsid.clone(),
+ repost_nsid,
srv.tid_gen.next_tid(),
- ipld!({"subject": {"uri": format!("at://{}/{}/{}", alice_did.to_string(), post_nsid.to_string(), alice_post2_tid.to_string())}, "createdAt": created_at_now()}),
+ ipld!({"subject": {"uri": format!("at://{}/{}/{}", alice_did, post_nsid, alice_post2_tid)}, "createdAt": created_at_now()}),
),
Mutation::Create(
post_nsid.clone(),
srv.tid_gen.next_tid(),
- ipld!({"text": "bob comment on alice post3", "reply": {"parent": {"uri": alice_post3_uri.clone()}, "root": {"uri": alice_post3_uri.clone()}}}),
+ ipld!({"text": "bob comment on alice post3", "reply": {"parent": {"uri": alice_post3_uri.clone()}, "root": {"uri": alice_post3_uri}}}),
),
];
srv.repo
@@ -567,7 +567,7 @@ fn test_bsky_feeds() {
// carol follows bob
let mutations = vec![Mutation::Create(
- follow_nsid.clone(),
+ follow_nsid,
srv.tid_gen.next_tid(),
ipld!({"subject": {"did": bob_did.to_string()}, "createdAt": created_at_now()}),
)];
@@ -584,7 +584,7 @@ fn test_bsky_feeds() {
// test alice timeline: still empty (?)
let alice_timeline = bsky_get_timeline(&mut srv, &alice_did).unwrap();
- println!("{:?}", alice_timeline);
+ println!("{alice_timeline:?}");
assert!(alice_timeline.feed.is_empty());
// test alice feed: should have 3 posts, with correct counts
@@ -595,9 +595,9 @@ fn test_bsky_feeds() {
alice_feed.feed[2].uri,
format!(
"at://{}/{}/{}",
- alice_did.to_string(),
- post_nsid.to_string(),
- alice_post1_tid.to_string()
+ alice_did,
+ post_nsid,
+ alice_post1_tid
)
);
// TODO: CID
@@ -628,16 +628,16 @@ fn test_bsky_feeds() {
let bob_timeline = bsky_get_timeline(&mut srv, &bob_did).unwrap();
println!("BOB TIMELINE ======");
for item in bob_timeline.feed.iter() {
- println!("{:?}", item);
+ println!("{item:?}");
}
assert_eq!(bob_timeline.feed.len(), 3);
assert_eq!(
bob_timeline.feed[2].uri,
format!(
"at://{}/{}/{}",
- alice_did.to_string(),
- post_nsid.to_string(),
- alice_post1_tid.to_string()
+ alice_did,
+ post_nsid,
+ alice_post1_tid
)
);
// TODO: CID
@@ -718,9 +718,9 @@ fn test_bsky_thread() {
bsky_mutate_db(&mut srv.atp_db, &alice_did, mutations).unwrap();
let alice_post1_uri = format!(
"at://{}/{}/{}",
- alice_did.to_string(),
- post_nsid.to_string(),
- alice_post1_tid.to_string()
+ alice_did,
+ post_nsid,
+ alice_post1_tid
);
// bob likes and replies first post
@@ -736,9 +736,9 @@ fn test_bsky_thread() {
bsky_mutate_db(&mut srv.atp_db, &bob_did, mutations).unwrap();
let bob_post1_uri = format!(
"at://{}/{}/{}",
- bob_did.to_string(),
- post_nsid.to_string(),
- bob_post1_tid.to_string()
+ bob_did,
+ post_nsid,
+ bob_post1_tid
);
// alice replies to bob reply
@@ -746,7 +746,7 @@ fn test_bsky_thread() {
let mutations = vec![Mutation::Create(
post_nsid.clone(),
alice_post2_tid.clone(),
- ipld!({"text": "alice second post, replying to bob comment", "reply": {"parent": {"uri": bob_post1_uri.clone()}, "root": {"uri": alice_post1_uri.clone()}}}),
+ ipld!({"text": "alice second post, replying to bob comment", "reply": {"parent": {"uri": bob_post1_uri.clone()}, "root": {"uri": alice_post1_uri}}}),
)];
srv.repo
.mutate_repo(&alice_did, &mutations, &srv.pds_keypair)
@@ -754,9 +754,9 @@ fn test_bsky_thread() {
bsky_mutate_db(&mut srv.atp_db, &alice_did, mutations).unwrap();
let _alice_post2_uri = format!(
"at://{}/{}/{}",
- alice_did.to_string(),
- post_nsid.to_string(),
- alice_post2_tid.to_string()
+ alice_did,
+ post_nsid,
+ alice_post2_tid
);
// get thread from bob's post
diff --git a/adenosine-pds/src/lib.rs b/adenosine-pds/src/lib.rs
index cca9b0d..fb63a11 100644
--- a/adenosine-pds/src/lib.rs
+++ b/adenosine-pds/src/lib.rs
@@ -40,7 +40,7 @@ impl fmt::Display for XrpcError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::BadRequest(msg) | Self::NotFound(msg) | Self::Forbidden(msg) => {
- write!(f, "{}", msg)
+ write!(f, "{msg}")
}
Self::MutexPoisoned => write!(f, "service mutex poisoned"),
}
@@ -255,8 +255,7 @@ impl AtpService {
fn xrpc_required_param(request: &Request, key: &str) -> Result<String> {
Ok(request.get_param(key).ok_or(XrpcError::BadRequest(format!(
- "require '{}' query parameter",
- key
+ "require '{key}' query parameter"
)))?)
}
@@ -308,13 +307,12 @@ fn xrpc_get_handler(
let collection = Nsid::from_str(&xrpc_required_param(request, "collection")?)?;
let rkey = Tid::from_str(&xrpc_required_param(request, "rkey")?)?;
let mut srv = srv.lock().or(Err(XrpcError::MutexPoisoned))?;
- let key = format!("/{}/{}", collection, rkey);
+ let key = format!("/{collection}/{rkey}");
match srv.repo.get_atp_record(&did, &collection, &rkey) {
// TODO: format as JSON, not text debug
Ok(Some(ipld)) => Ok(ipld_into_json_value(ipld)),
Ok(None) => Err(anyhow!(XrpcError::NotFound(format!(
- "could not find record: {}",
- key
+ "could not find record: {key}"
)))),
Err(e) => Err(e),
}
@@ -325,7 +323,7 @@ fn xrpc_get_handler(
srv.repo
.lookup_commit(&did)?
.map(|v| json!({ "root": v.to_string() }))
- .ok_or(XrpcError::NotFound(format!("no repository found for DID: {}", did)).into())
+ .ok_or(XrpcError::NotFound(format!("no repository found for DID: {did}")).into())
}
"com.atproto.repo.listRecords" => {
// TODO: limit, before, after, tid, reverse
@@ -338,13 +336,13 @@ fn xrpc_get_handler(
let commit_cid = &srv.repo.lookup_commit(&did)?.unwrap();
let last_commit = srv.repo.get_commit(commit_cid)?;
let full_map = srv.repo.mst_to_map(&last_commit.mst_cid)?;
- let prefix = format!("/{}/", collection);
+ let prefix = format!("/{collection}/");
for (mst_key, cid) in full_map.iter() {
//debug!("{}", mst_key);
if mst_key.starts_with(&prefix) {
let record = srv.repo.get_ipld(cid)?;
record_list.push(json!({
- "uri": format!("at://{}{}", did, mst_key),
+ "uri": format!("at://{did}{mst_key}"),
"cid": cid.to_string(),
"value": ipld_into_json_value(record),
}));
@@ -367,8 +365,7 @@ fn xrpc_get_handler(
match srv.atp_db.resolve_handle(&handle)? {
Some(did) => Ok(json!({"did": did.to_string()})),
None => Err(XrpcError::NotFound(format!(
- "could not resolve handle internally: {}",
- handle
+ "could not resolve handle internally: {handle}"
)))?,
}
}
@@ -444,8 +441,7 @@ fn xrpc_get_handler(
Ok(json!({"notifications": []}))
}
_ => Err(anyhow!(XrpcError::NotFound(format!(
- "XRPC endpoint handler not found: {}",
- method
+ "XRPC endpoint handler not found: {method}"
)))),
}
}
@@ -531,15 +527,14 @@ fn xrpc_post_handler(
"com.atproto.account.create" => {
// validate account request
let req: com_atproto::AccountRequest = rouille::input::json_input(request)
- .map_err(|e| XrpcError::BadRequest(format!("failed to parse JSON body: {}", e)))?;
+ .map_err(|e| XrpcError::BadRequest(format!("failed to parse JSON body: {e}")))?;
// TODO: validate handle, email, recoverykey
let mut srv = srv.lock().unwrap();
if let Some(ref domain) = srv.config.registration_domain {
// TODO: better matching, should not allow arbitrary sub-domains
if !req.handle.ends_with(domain) {
Err(XrpcError::BadRequest(format!(
- "handle is not under registration domain ({})",
- domain
+ "handle is not under registration domain ({domain})"
)))?;
}
} else {
@@ -557,7 +552,7 @@ fn xrpc_post_handler(
}
"com.atproto.session.create" => {
let req: com_atproto::SessionRequest = rouille::input::json_input(request)
- .map_err(|e| XrpcError::BadRequest(format!("failed to parse JSON body: {}", e)))?;
+ .map_err(|e| XrpcError::BadRequest(format!("failed to parse JSON body: {e}")))?;
let mut srv = srv.lock().unwrap();
let keypair = srv.pds_keypair.clone();
Ok(json!(srv.atp_db.create_session(
@@ -721,8 +716,7 @@ fn xrpc_post_handler(
Ok(json!({}))
}
_ => Err(anyhow!(XrpcError::NotFound(format!(
- "XRPC endpoint handler not found: {}",
- method
+ "XRPC endpoint handler not found: {method}"
)))),
}
}
@@ -773,8 +767,7 @@ fn account_view_handler(
.atp_db
.resolve_handle(handle)?
.ok_or(XrpcError::NotFound(format!(
- "no DID found for handle: {}",
- handle
+ "no DID found for handle: {handle}"
)))?;
Ok(AccountView {
@@ -799,7 +792,7 @@ fn thread_view_handler(
let did = srv.atp_db.resolve_handle(handle)?.unwrap();
// TODO: could construct URI directly
- let uri = AtUri::from_str(&format!("at://{}/{}/{}", did, collection, tid))?;
+ let uri = AtUri::from_str(&format!("at://{did}/{collection}/{tid}"))?;
Ok(ThreadView {
domain: host.to_string(),
did,
@@ -851,13 +844,13 @@ fn collection_view_handler(
let commit_cid = &srv.repo.lookup_commit(&did)?.unwrap();
let last_commit = srv.repo.get_commit(commit_cid)?;
let full_map = srv.repo.mst_to_map(&last_commit.mst_cid)?;
- let prefix = format!("/{}/", collection);
+ let prefix = format!("/{collection}/");
for (mst_key, cid) in full_map.iter() {
debug!("{}", mst_key);
if mst_key.starts_with(&prefix) {
let record = srv.repo.get_ipld(cid)?;
record_list.push(json!({
- "uri": format!("at://{}{}", did, mst_key),
+ "uri": format!("at://{did}{mst_key}"),
"tid": mst_key.split('/').nth(2).unwrap(),
"cid": cid,
"value": ipld_into_json_value(record),
@@ -887,12 +880,11 @@ fn record_view_handler(
let rkey = Tid::from_str(tid)?;
let mut srv = srv.lock().or(Err(XrpcError::MutexPoisoned))?;
- let key = format!("/{}/{}", collection, rkey);
+ let key = format!("/{collection}/{rkey}");
let record = match srv.repo.get_atp_record(&did, &collection, &rkey) {
Ok(Some(ipld)) => ipld_into_json_value(ipld),
Ok(None) => Err(anyhow!(XrpcError::NotFound(format!(
- "could not find record: {}",
- key
+ "could not find record: {key}"
))))?,
Err(e) => Err(e)?,
};