diff --git a/bridge/svix-bridge-plugin-queue/src/error.rs b/bridge/svix-bridge-plugin-queue/src/error.rs index b0ea29577..33be507c6 100644 --- a/bridge/svix-bridge-plugin-queue/src/error.rs +++ b/bridge/svix-bridge-plugin-queue/src/error.rs @@ -13,7 +13,7 @@ pub enum Error { #[error("{0}")] Generic(String), } -pub type Result = std::result::Result; +pub type Result = std::result::Result; impl From for std::io::Error { fn from(value: Error) -> Self { diff --git a/bridge/svix-bridge-plugin-queue/src/receiver_output/mod.rs b/bridge/svix-bridge-plugin-queue/src/receiver_output/mod.rs index 99bdc5726..9a7afd020 100644 --- a/bridge/svix-bridge-plugin-queue/src/receiver_output/mod.rs +++ b/bridge/svix-bridge-plugin-queue/src/receiver_output/mod.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use omniqueue::DynProducer; -use svix_bridge_types::{async_trait, ForwardRequest, ReceiverOutput}; +use svix_bridge_types::{async_trait, BoxError, ForwardRequest, ReceiverOutput}; use crate::{config::QueueOutputOpts, error::Result}; @@ -42,11 +42,9 @@ impl ReceiverOutput for QueueForwarder { fn name(&self) -> &str { &self.name } - async fn handle(&self, request: ForwardRequest) -> std::io::Result<()> { - Ok(self - .sender - .send_serde_json(&request.payload) - .await - .map_err(crate::Error::from)?) + + async fn handle(&self, request: ForwardRequest) -> Result<(), BoxError> { + self.sender.send_serde_json(&request.payload).await?; + Ok(()) } } diff --git a/bridge/svix-bridge-types/src/lib.rs b/bridge/svix-bridge-types/src/lib.rs index 61b97190f..d20e9ee91 100644 --- a/bridge/svix-bridge-types/src/lib.rs +++ b/bridge/svix-bridge-types/src/lib.rs @@ -140,6 +140,8 @@ pub trait SenderInput: Send { async fn run(&self); } +pub type BoxError = Box; + /// Represents something we can hand a webhook payload to. /// Aka a "forwarder." /// @@ -147,7 +149,7 @@ pub trait SenderInput: Send { #[async_trait] pub trait ReceiverOutput: Send + Sync { fn name(&self) -> &str; - async fn handle(&self, request: ForwardRequest) -> std::io::Result<()>; + async fn handle(&self, request: ForwardRequest) -> Result<(), BoxError>; } #[derive(Deserialize, Debug, Clone, Default)] diff --git a/bridge/svix-bridge/src/webhook_receiver/tests.rs b/bridge/svix-bridge/src/webhook_receiver/tests.rs index c2544a729..ce51fa836 100644 --- a/bridge/svix-bridge/src/webhook_receiver/tests.rs +++ b/bridge/svix-bridge/src/webhook_receiver/tests.rs @@ -6,8 +6,9 @@ use axum::{ }; use serde_json::json; use svix_bridge_types::{ - async_trait, svix::webhooks::Webhook, ForwardRequest, ReceiverOutput, TransformationConfig, - TransformerInput, TransformerInputFormat, TransformerJob, TransformerOutput, + async_trait, svix::webhooks::Webhook, BoxError, ForwardRequest, ReceiverOutput, + TransformationConfig, TransformerInput, TransformerInputFormat, TransformerJob, + TransformerOutput, }; use tower::{Service, ServiceExt}; @@ -37,8 +38,8 @@ impl ReceiverOutput for FakeReceiverOutput { "fake output" } - async fn handle(&self, request: ForwardRequest) -> std::io::Result<()> { - self.tx.send(request.payload).unwrap(); + async fn handle(&self, request: ForwardRequest) -> Result<(), BoxError> { + self.tx.send(request.payload)?; Ok(()) } }