@@ -6,7 +6,7 @@ use bytes::Bytes;
66use futures:: future:: BoxFuture ;
77use futures:: { FutureExt , TryStreamExt } ;
88use http:: header:: CONTENT_TYPE ;
9- use http:: { response, Request , Response } ;
9+ use http:: { response, HeaderName , HeaderValue , Request , Response } ;
1010use http_body_util:: { BodyExt , Either , Full } ;
1111use hyper:: body:: { Body , Frame , Incoming } ;
1212use hyper:: service:: Service ;
@@ -17,7 +17,12 @@ use std::ops::Deref;
1717use std:: pin:: Pin ;
1818use std:: task:: { ready, Context , Poll } ;
1919use 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
8288fn 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