From d741e2b20247f7db42b9a787054247223c96644d Mon Sep 17 00:00:00 2001 From: asonix Date: Sun, 15 Mar 2020 17:49:40 -0500 Subject: [PATCH] Always return generated AP type, except on error --- src/inbox.rs | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/inbox.rs b/src/inbox.rs index 059dfe4..d12e048 100644 --- a/src/inbox.rs +++ b/src/inbox.rs @@ -4,10 +4,9 @@ use activitystreams::{ primitives::XsdAnyUri, }; use actix::Addr; -use actix_web::{client::Client, web, HttpResponse}; +use actix_web::{client::Client, http::StatusCode, web, HttpResponse}; use futures::join; use log::error; -use std::collections::HashMap; use crate::{ apub::{AcceptedActors, AcceptedObjects, ValidTypes}, @@ -117,9 +116,9 @@ async fn handle_forward( let inboxes = get_inboxes(&state, &actor, &object_id).await?; - deliver_many(client, inboxes, input); + deliver_many(client, inboxes, input.clone()); - Ok(response(HashMap::<(), ()>::new())) + Ok(response(input)) } async fn handle_relay( @@ -150,11 +149,11 @@ async fn handle_relay( let inboxes = get_inboxes(&state, &actor, &object_id).await?; - deliver_many(client, inboxes, announce); + deliver_many(client, inboxes, announce.clone()); state.cache(object_id.to_owned(), activity_id).await; - Ok(response(HashMap::<(), ()>::new())) + Ok(response(announce)) } async fn handle_follow( @@ -316,7 +315,17 @@ async fn get_inboxes( Ok(state.listeners_without(&inbox, &domain).await) } -impl actix_web::error::ResponseError for MyError {} +impl actix_web::error::ResponseError for MyError { + fn status_code(&self) -> StatusCode { + StatusCode::INTERNAL_SERVER_ERROR + } + + fn error_response(&self) -> HttpResponse { + HttpResponse::InternalServerError() + .header("Content-Type", "application/activity+json") + .json(serde_json::json!({})) + } +} impl From for MyError { fn from(_: std::convert::Infallible) -> Self {