Skip to content

Commit e93526b

Browse files
committed
bridge: Use boxed error instead of io::Error for ReceiverOutput
1 parent 73a548a commit e93526b

File tree

4 files changed

+14
-13
lines changed

4 files changed

+14
-13
lines changed

bridge/svix-bridge-plugin-queue/src/error.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ pub enum Error {
1313
#[error("{0}")]
1414
Generic(String),
1515
}
16-
pub type Result<T> = std::result::Result<T, Error>;
16+
pub type Result<T, E = Error> = std::result::Result<T, E>;
1717

1818
impl From<Error> for std::io::Error {
1919
fn from(value: Error) -> Self {

bridge/svix-bridge-plugin-queue/src/receiver_output/mod.rs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use std::sync::Arc;
22

33
use omniqueue::DynProducer;
4-
use svix_bridge_types::{async_trait, ForwardRequest, ReceiverOutput};
4+
use svix_bridge_types::{async_trait, BoxError, ForwardRequest, ReceiverOutput};
55

66
use crate::{config::QueueOutputOpts, error::Result};
77

@@ -42,11 +42,9 @@ impl ReceiverOutput for QueueForwarder {
4242
fn name(&self) -> &str {
4343
&self.name
4444
}
45-
async fn handle(&self, request: ForwardRequest) -> std::io::Result<()> {
46-
Ok(self
47-
.sender
48-
.send_serde_json(&request.payload)
49-
.await
50-
.map_err(crate::Error::from)?)
45+
46+
async fn handle(&self, request: ForwardRequest) -> Result<(), BoxError> {
47+
self.sender.send_serde_json(&request.payload).await?;
48+
Ok(())
5149
}
5250
}

bridge/svix-bridge-types/src/lib.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,14 +140,16 @@ pub trait SenderInput: Send {
140140
async fn run(&self);
141141
}
142142

143+
pub type BoxError = Box<dyn std::error::Error + Send + Sync>;
144+
143145
/// Represents something we can hand a webhook payload to.
144146
/// Aka a "forwarder."
145147
///
146148
/// To start, we're only using this in conjunction with an HTTP server "owned" by the bridge binary.
147149
#[async_trait]
148150
pub trait ReceiverOutput: Send + Sync {
149151
fn name(&self) -> &str;
150-
async fn handle(&self, request: ForwardRequest) -> std::io::Result<()>;
152+
async fn handle(&self, request: ForwardRequest) -> Result<(), BoxError>;
151153
}
152154

153155
#[derive(Deserialize, Debug, Clone, Default)]

bridge/svix-bridge/src/webhook_receiver/tests.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@ use axum::{
66
};
77
use serde_json::json;
88
use svix_bridge_types::{
9-
async_trait, svix::webhooks::Webhook, ForwardRequest, ReceiverOutput, TransformationConfig,
10-
TransformerInput, TransformerInputFormat, TransformerJob, TransformerOutput,
9+
async_trait, svix::webhooks::Webhook, BoxError, ForwardRequest, ReceiverOutput,
10+
TransformationConfig, TransformerInput, TransformerInputFormat, TransformerJob,
11+
TransformerOutput,
1112
};
1213
use tower::{Service, ServiceExt};
1314

@@ -37,8 +38,8 @@ impl ReceiverOutput for FakeReceiverOutput {
3738
"fake output"
3839
}
3940

40-
async fn handle(&self, request: ForwardRequest) -> std::io::Result<()> {
41-
self.tx.send(request.payload).unwrap();
41+
async fn handle(&self, request: ForwardRequest) -> Result<(), BoxError> {
42+
self.tx.send(request.payload)?;
4243
Ok(())
4344
}
4445
}

0 commit comments

Comments
 (0)