diff options
author | rtkay123 <dev@kanjala.com> | 2025-08-15 19:36:22 +0200 |
---|---|---|
committer | rtkay123 <dev@kanjala.com> | 2025-08-15 19:36:22 +0200 |
commit | 1968002d656383069a386bd874c9f0cc83e3116e (patch) | |
tree | 3f37092facf20b1176313428ee6269878529278f /lib | |
parent | f5ba1a25cad80bff8c6e01f8d956e212be097ae7 (diff) | |
download | warden-1968002d656383069a386bd874c9f0cc83e3116e.tar.bz2 warden-1968002d656383069a386bd874c9f0cc83e3116e.zip |
feat(rule-exec): receive messages
Diffstat (limited to 'lib')
-rw-r--r-- | lib/warden-core/src/configuration/conv.rs | 2 | ||||
-rw-r--r-- | lib/warden-middleware/Cargo.toml | 2 | ||||
-rw-r--r-- | lib/warden-middleware/src/grpc.rs | 28 | ||||
-rw-r--r-- | lib/warden-middleware/src/lib.rs | 1 |
4 files changed, 32 insertions, 1 deletions
diff --git a/lib/warden-core/src/configuration/conv.rs b/lib/warden-core/src/configuration/conv.rs index c5c7768..02f0d27 100644 --- a/lib/warden-core/src/configuration/conv.rs +++ b/lib/warden-core/src/configuration/conv.rs @@ -103,7 +103,7 @@ impl serde::Serialize for GenericParameter { where S: serde::Serializer, { - let json = serde_json::Value::from(self.0.clone()); + let json = self.0.clone(); json.serialize(serializer) } } diff --git a/lib/warden-middleware/Cargo.toml b/lib/warden-middleware/Cargo.toml index 97c2c88..c68bc69 100644 --- a/lib/warden-middleware/Cargo.toml +++ b/lib/warden-middleware/Cargo.toml @@ -12,8 +12,10 @@ publish = false axum.workspace = true metrics.workspace = true metrics-exporter-prometheus.workspace = true +tonic.workspace = true tower-http = { workspace = true, features = [ "request-id", "trace", ] } tracing.workspace = true +warden-stack = { workspace = true, features = ["opentelemetry-tonic"] } diff --git a/lib/warden-middleware/src/grpc.rs b/lib/warden-middleware/src/grpc.rs new file mode 100644 index 0000000..f239ddb --- /dev/null +++ b/lib/warden-middleware/src/grpc.rs @@ -0,0 +1,28 @@ +pub mod interceptor { + use tonic::{ + Status, + service::{Interceptor, interceptor::InterceptedService}, + transport::Channel, + }; + use tracing::Span; + use warden_stack::{ + opentelemetry::global, tracing::telemetry::tonic::injector, + tracing_opentelemetry::OpenTelemetrySpanExt, + }; + + pub type Intercepted = InterceptedService<Channel, MyInterceptor>; + + #[derive(Clone, Copy)] + pub struct MyInterceptor; + + impl Interceptor for MyInterceptor { + fn call(&mut self, mut request: tonic::Request<()>) -> Result<tonic::Request<()>, Status> { + let cx = Span::current().context(); + global::get_text_map_propagator(|propagator| { + propagator.inject_context(&cx, &mut injector::MetadataMap(request.metadata_mut())) + }); + + Ok(request) + } + } +} diff --git a/lib/warden-middleware/src/lib.rs b/lib/warden-middleware/src/lib.rs index 6e3a0f4..2fb8df8 100644 --- a/lib/warden-middleware/src/lib.rs +++ b/lib/warden-middleware/src/lib.rs @@ -1,3 +1,4 @@ +pub mod grpc; mod metrics; mod trace_layer; |