38 lines
880 B
Rust
38 lines
880 B
Rust
use std::sync::Arc;
|
|
|
|
use eyre::Result;
|
|
|
|
use foxchat::{fed, s2s::http::RestEvent};
|
|
use tracing::{debug, error};
|
|
|
|
use crate::{app_state::AppState, model::identity_instance::IdentityInstance};
|
|
|
|
/// Posts an event to a remote instance's inbox.
|
|
pub async fn post_rest_event(
|
|
state: Arc<AppState>,
|
|
instance: &IdentityInstance,
|
|
event: RestEvent,
|
|
) -> Result<()> {
|
|
debug!("Sending {:?} event to {}'s inbox", &event, &instance.domain);
|
|
|
|
match fed::post::<RestEvent, ()>(
|
|
&state.private_key,
|
|
&state.config.domain,
|
|
&instance.domain,
|
|
"/_fox/ident/inbox",
|
|
None,
|
|
&event,
|
|
)
|
|
.await
|
|
{
|
|
Ok(_) => Ok(()),
|
|
Err(e) => {
|
|
error!(
|
|
"Error sending {:?} event to {}'s inbox: {}",
|
|
&event, &instance.domain, e
|
|
);
|
|
|
|
return Err(e);
|
|
}
|
|
}
|
|
}
|