@@ -10,12 +10,12 @@ use crate::tracer_payload::TracerPayloadCollection;
1010use anyhow:: { anyhow, Context } ;
1111use futures:: stream:: FuturesUnordered ;
1212use futures:: StreamExt ;
13- use http:: header:: CONTENT_TYPE ;
13+ use http:: { header:: CONTENT_TYPE , HeaderMap , HeaderValue } ;
1414use libdd_capabilities:: HttpClientTrait ;
1515use libdd_common:: {
1616 header:: {
17- APPLICATION_MSGPACK_STR , APPLICATION_PROTOBUF_STR , DATADOG_SEND_REAL_HTTP_STATUS_STR ,
18- DATADOG_TRACE_COUNT_STR ,
17+ APPLICATION_MSGPACK , APPLICATION_PROTOBUF , DATADOG_SEND_REAL_HTTP_STATUS ,
18+ DATADOG_TRACE_COUNT ,
1919 } ,
2020 Endpoint ,
2121} ;
@@ -69,7 +69,7 @@ pub struct SendData {
6969 pub ( crate ) tracer_payloads : TracerPayloadCollection ,
7070 pub ( crate ) size : usize , // have a rough size estimate to force flushing if it's large
7171 target : Endpoint ,
72- headers : HashMap < & ' static str , String > ,
72+ headers : HeaderMap ,
7373 retry_strategy : RetryStrategy ,
7474 #[ cfg( feature = "compression" ) ]
7575 compression : Compression ,
@@ -86,7 +86,7 @@ pub struct SendDataBuilder {
8686 pub ( crate ) tracer_payloads : TracerPayloadCollection ,
8787 pub ( crate ) size : usize ,
8888 target : Endpoint ,
89- headers : HashMap < & ' static str , String > ,
89+ headers : HeaderMap ,
9090 retry_strategy : RetryStrategy ,
9191 #[ cfg( feature = "compression" ) ]
9292 compression : Compression ,
@@ -99,8 +99,8 @@ impl SendDataBuilder {
9999 tracer_header_tags : TracerHeaderTags ,
100100 target : & Endpoint ,
101101 ) -> SendDataBuilder {
102- let mut headers: HashMap < & ' static str , String > = tracer_header_tags. into ( ) ;
103- headers. insert ( DATADOG_SEND_REAL_HTTP_STATUS_STR , "1" . to_string ( ) ) ;
102+ let mut headers: HeaderMap = tracer_header_tags. into ( ) ;
103+ headers. insert ( DATADOG_SEND_REAL_HTTP_STATUS , HeaderValue :: from_static ( "1" ) ) ;
104104 SendDataBuilder {
105105 tracer_payloads : tracer_payload,
106106 size,
@@ -161,8 +161,8 @@ impl SendData {
161161 tracer_header_tags : TracerHeaderTags ,
162162 target : & Endpoint ,
163163 ) -> SendData {
164- let mut headers: HashMap < & ' static str , String > = tracer_header_tags. into ( ) ;
165- headers. insert ( DATADOG_SEND_REAL_HTTP_STATUS_STR , "1" . to_string ( ) ) ;
164+ let mut headers: HeaderMap = tracer_header_tags. into ( ) ;
165+ headers. insert ( DATADOG_SEND_REAL_HTTP_STATUS , HeaderValue :: from_static ( "1" ) ) ;
166166 SendData {
167167 tracer_payloads : tracer_payload,
168168 size,
@@ -245,7 +245,7 @@ impl SendData {
245245 client : & H ,
246246 chunks : u64 ,
247247 payload : Vec < u8 > ,
248- headers : HashMap < & ' static str , String > ,
248+ headers : HeaderMap ,
249249 endpoint : Option < & Endpoint > ,
250250 ) -> ( SendWithRetryResult , u64 , u64 ) {
251251 #[ allow( clippy:: unwrap_used) ]
@@ -269,7 +269,7 @@ impl SendData {
269269 }
270270
271271 #[ cfg( feature = "compression" ) ]
272- fn compress_payload ( & self , payload : Vec < u8 > , headers : & mut HashMap < & str , String > ) -> Vec < u8 > {
272+ fn compress_payload ( & self , payload : Vec < u8 > , headers : & mut HeaderMap ) -> Vec < u8 > {
273273 match self . compression {
274274 Compression :: Zstd ( level) => {
275275 let result = ( || -> std:: io:: Result < Vec < u8 > > {
@@ -280,7 +280,10 @@ impl SendData {
280280
281281 match result {
282282 Ok ( compressed_payload) => {
283- headers. insert ( "Content-Encoding" , "zstd" . to_string ( ) ) ;
283+ headers. insert (
284+ http:: header:: CONTENT_ENCODING ,
285+ HeaderValue :: from_static ( "zstd" ) ,
286+ ) ;
284287 compressed_payload
285288 }
286289 Err ( _) => payload,
@@ -318,7 +321,7 @@ impl SendData {
318321 #[ cfg( not( feature = "compression" ) ) ]
319322 let final_payload = serialized_trace_payload;
320323
321- request_headers. insert ( CONTENT_TYPE . as_str ( ) , APPLICATION_PROTOBUF_STR . to_string ( ) ) ;
324+ request_headers. insert ( CONTENT_TYPE , APPLICATION_PROTOBUF ) ;
322325
323326 let ( response, bytes_sent, chunks) = self
324327 . send_payload (
@@ -352,8 +355,9 @@ impl SendData {
352355 #[ allow( clippy:: unwrap_used) ]
353356 let chunks = u64:: try_from ( tracer_payload. chunks . len ( ) ) . unwrap ( ) ;
354357 let mut headers = self . headers . clone ( ) ;
355- headers. insert ( DATADOG_TRACE_COUNT_STR , chunks. to_string ( ) ) ;
356- headers. insert ( CONTENT_TYPE . as_str ( ) , APPLICATION_MSGPACK_STR . to_string ( ) ) ;
358+ headers. reserve ( 2 ) ;
359+ headers. insert ( DATADOG_TRACE_COUNT , chunks. into ( ) ) ;
360+ headers. insert ( CONTENT_TYPE , APPLICATION_MSGPACK ) ;
357361
358362 let payload = match rmp_serde:: to_vec_named ( tracer_payload) {
359363 Ok ( p) => p,
@@ -373,8 +377,9 @@ impl SendData {
373377 #[ allow( clippy:: unwrap_used) ]
374378 let chunks = u64:: try_from ( self . tracer_payloads . size ( ) ) . unwrap ( ) ;
375379 let mut headers = self . headers . clone ( ) ;
376- headers. insert ( DATADOG_TRACE_COUNT_STR , chunks. to_string ( ) ) ;
377- headers. insert ( CONTENT_TYPE . as_str ( ) , APPLICATION_MSGPACK_STR . to_string ( ) ) ;
380+ headers. reserve ( 2 ) ;
381+ headers. insert ( DATADOG_TRACE_COUNT , chunks. into ( ) ) ;
382+ headers. insert ( CONTENT_TYPE , APPLICATION_MSGPACK ) ;
378383
379384 let payload = msgpack_encoder:: v04:: to_vec ( payload) ;
380385
@@ -390,8 +395,9 @@ impl SendData {
390395 #[ allow( clippy:: unwrap_used) ]
391396 let chunks = u64:: try_from ( self . tracer_payloads . size ( ) ) . unwrap ( ) ;
392397 let mut headers = self . headers . clone ( ) ;
393- headers. insert ( DATADOG_TRACE_COUNT_STR , chunks. to_string ( ) ) ;
394- headers. insert ( CONTENT_TYPE . as_str ( ) , APPLICATION_MSGPACK_STR . to_string ( ) ) ;
398+ headers. reserve ( 2 ) ;
399+ headers. insert ( DATADOG_TRACE_COUNT , chunks. into ( ) ) ;
400+ headers. insert ( CONTENT_TYPE , APPLICATION_MSGPACK ) ;
395401
396402 let payload = match rmp_serde:: to_vec ( payload) {
397403 Ok ( p) => p,
@@ -576,8 +582,8 @@ mod tests {
576582 assert_eq ! ( data. target. api_key, None ) ;
577583 assert_eq ! ( data. target. url. path( ) , "/foo/bar" ) ;
578584
579- for ( key, value) in HashMap :: from ( header_tags) {
580- assert_eq ! ( data. headers. get( key) . unwrap ( ) , & value) ;
585+ for ( key, value) in & HeaderMap :: from ( header_tags) {
586+ assert_eq ! ( data. headers. get( key) , Some ( value) ) ;
581587 }
582588 }
583589
@@ -686,7 +692,7 @@ mod tests {
686692 let mock = server
687693 . mock_async ( |when, then| {
688694 when. method ( POST )
689- . header ( DATADOG_TRACE_COUNT_STR , "1" )
695+ . header ( "x-datadog-trace-count" , "1" )
690696 . header ( "Content-type" , "application/msgpack" )
691697 . header ( "datadog-meta-lang" , header_tags. lang )
692698 . header (
@@ -745,7 +751,7 @@ mod tests {
745751 let mock = server
746752 . mock_async ( |when, then| {
747753 when. method ( POST )
748- . header ( DATADOG_TRACE_COUNT_STR , "1" )
754+ . header ( "x-datadog-trace-count" , "1" )
749755 . header ( "Content-type" , "application/msgpack" )
750756 . header ( "datadog-meta-lang" , header_tags. lang )
751757 . header (
@@ -933,7 +939,7 @@ mod tests {
933939 let mock = server
934940 . mock_async ( |when, then| {
935941 when. method ( POST )
936- . header ( DATADOG_TRACE_COUNT_STR , "2" )
942+ . header ( "x-datadog-trace-count" , "2" )
937943 . header ( "Content-type" , "application/msgpack" )
938944 . header ( "datadog-meta-lang" , header_tags. lang )
939945 . header (
0 commit comments