feat: expose signed_fetch for authorized-fetch / Secure Mode
Builder: .signed_fetch_actor_id(uuid) sets instance-level signing actor. Service: .signed_fetch(&url) performs a signed GET returning raw JSON. Closes #2
This commit is contained in:
20
src/service/fetch.rs
Normal file
20
src/service/fetch.rs
Normal file
@@ -0,0 +1,20 @@
|
||||
use url::Url;
|
||||
|
||||
use super::ActivityPubService;
|
||||
|
||||
impl ActivityPubService {
|
||||
/// Fetch a remote ActivityPub resource with HTTP Signatures.
|
||||
///
|
||||
/// Requires `signed_fetch_actor_id` to have been set on the builder.
|
||||
/// Returns the raw JSON value of the remote resource.
|
||||
pub async fn signed_fetch(&self, url: &Url) -> anyhow::Result<serde_json::Value> {
|
||||
let data = self.federation_config.to_request_data();
|
||||
let res = activitypub_federation::fetch::fetch_object_http::<
|
||||
crate::data::FederationData,
|
||||
serde_json::Value,
|
||||
>(url, &data)
|
||||
.await
|
||||
.map_err(|e| anyhow::anyhow!("{e}"))?;
|
||||
Ok(res.object)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user