Skip to content

Commit aed6f20

Browse files
Add x_restate_server header
1 parent 82c0ba3 commit aed6f20

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

src/hyper.rs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use bytes::Bytes;
66
use futures::future::BoxFuture;
77
use futures::{FutureExt, TryStreamExt};
88
use http::header::CONTENT_TYPE;
9-
use http::{response, Request, Response};
9+
use http::{response, HeaderName, HeaderValue, Request, Response};
1010
use http_body_util::{BodyExt, Either, Full};
1111
use hyper::body::{Body, Frame, Incoming};
1212
use hyper::service::Service;
@@ -17,7 +17,12 @@ use std::ops::Deref;
1717
use std::pin::Pin;
1818
use std::task::{ready, Context, Poll};
1919
use tokio::sync::mpsc;
20-
use tracing::warn;
20+
use tracing::{debug, warn};
21+
22+
#[allow(clippy::declare_interior_mutable_const)]
23+
const X_RESTATE_SERVER: HeaderName = HeaderName::from_static("x-restate-server");
24+
const X_RESTATE_SERVER_VALUE: HeaderValue =
25+
HeaderValue::from_static(concat!("restate-sdk-rust/", env!("CARGO_PKG_VERSION")));
2126

2227
/// Wraps [`Endpoint`] to implement hyper [`Service`].
2328
#[derive(Clone)]
@@ -39,10 +44,11 @@ impl Service<Request<Incoming>> for HyperEndpoint {
3944
let endpoint_response = match self.0.resolve(parts.uri.path(), parts.headers) {
4045
Ok(res) => res,
4146
Err(err) => {
42-
// TODO log this
47+
debug!("Error when trying to handle incoming request: {err}");
4348
return ready(Ok(Response::builder()
4449
.status(err.status_code())
4550
.header(CONTENT_TYPE, "text/plain")
51+
.header(X_RESTATE_SERVER, X_RESTATE_SERVER_VALUE)
4652
.body(Either::Left(Full::new(Bytes::from(err.to_string()))))
4753
.expect("Headers should be valid")));
4854
}
@@ -80,7 +86,9 @@ impl Service<Request<Incoming>> for HyperEndpoint {
8086
}
8187

8288
fn response_builder_from_response_head(response_head: ResponseHead) -> response::Builder {
83-
let mut response_builder = Response::builder().status(response_head.status_code);
89+
let mut response_builder = Response::builder()
90+
.status(response_head.status_code)
91+
.header(X_RESTATE_SERVER, X_RESTATE_SERVER_VALUE);
8492

8593
for header in response_head.headers {
8694
response_builder = response_builder.header(header.key.deref(), header.value.deref());

0 commit comments

Comments
 (0)