@@ -201,15 +201,32 @@ impl HeaderMap {
201201 result
202202 }
203203
204- pub fn truncate_header_values_on_key < T > ( & mut self , key : & str , remove : T )
204+ // ----- remove
205+ pub fn remove_header_on_key_all ( & mut self , key : & str ) -> bool {
206+ let mut result = false ;
207+ if let Some ( positions) = self . header_key_position_all ( key) {
208+ result = true ;
209+ self . remove_header_all_positions ( positions) ;
210+ }
211+ result
212+ }
213+
214+ pub fn remove_header_on_key ( & mut self , key : & str ) -> bool {
215+ let mut result = false ;
216+ if let Some ( position) = self . header_key_position ( key) {
217+ result = true ;
218+ self . headers . remove ( position) ;
219+ }
220+ result
221+ }
222+
223+ // truncate
224+ pub fn truncate_header_value_on_position < T > ( & mut self , pos : usize , truncate_at : T )
205225 where
206226 T : AsRef < str > ,
207227 {
208- let Some ( pos) = self . header_key_position ( key) else {
209- return ;
210- } ;
211228 let value = self . headers [ pos] . value_as_str ( ) ;
212- let Some ( mut index) = value. find ( remove . as_ref ( ) ) else {
229+ let Some ( mut index) = value. find ( truncate_at . as_ref ( ) ) else {
213230 return ;
214231 } ;
215232
@@ -227,25 +244,6 @@ impl HeaderMap {
227244 . extend_from_slice ( CRLF . as_bytes ( ) ) ;
228245 }
229246
230- // ----- remove
231- pub fn remove_header_on_key_all ( & mut self , key : & str ) -> bool {
232- let mut result = false ;
233- if let Some ( positions) = self . header_key_position_all ( key) {
234- result = true ;
235- self . remove_header_all_positions ( positions) ;
236- }
237- result
238- }
239-
240- pub fn remove_header_on_key ( & mut self , key : & str ) -> bool {
241- let mut result = false ;
242- if let Some ( position) = self . header_key_position ( key) {
243- result = true ;
244- self . headers . remove ( position) ;
245- }
246- result
247- }
248-
249247 // ---------- value
250248 // ------ update
251249 pub fn update_header_value_on_position ( & mut self , pos : usize , value : & str ) {
@@ -271,7 +269,7 @@ impl HeaderMap {
271269#[ cfg( test) ]
272270mod tests {
273271
274- use crate :: { body_headers:: content_encoding:: ContentEncoding , const_headers :: CONTENT_ENCODING } ;
272+ use crate :: body_headers:: content_encoding:: ContentEncoding ;
275273
276274 use super :: * ;
277275
@@ -610,12 +608,12 @@ mod tests {
610608 let data = "Header: a, b,c\r \n \r \n " ;
611609 let buf = BytesMut :: from ( data) ;
612610 let mut header_map = HeaderMap :: from ( buf) ;
613- header_map. truncate_header_values_on_key ( "Header" , "c" ) ;
611+ header_map. truncate_header_value_on_position ( 0 , "c" ) ;
614612 let result = header_map. into_bytes ( ) ;
615613 assert_eq ! ( result, "Header: a, b\r \n \r \n " ) ;
616614
617615 let mut header_map = HeaderMap :: from ( result) ;
618- header_map. truncate_header_values_on_key ( "Header" , "b" ) ;
616+ header_map. truncate_header_value_on_position ( 0 , "b" ) ;
619617 let result = header_map. into_bytes ( ) ;
620618 assert_eq ! ( result, "Header: a\r \n \r \n " ) ;
621619 }
@@ -624,7 +622,7 @@ mod tests {
624622 fn test_header_map_truncate_header_values_middle ( ) {
625623 let input = "Content-Encoding: gzip, deflate, br\r \n \r \n " ;
626624 let mut header_map = HeaderMap :: from ( BytesMut :: from ( input) ) ;
627- header_map. truncate_header_values_on_key ( CONTENT_ENCODING , ContentEncoding :: Deflate ) ;
625+ header_map. truncate_header_value_on_position ( 0 , ContentEncoding :: Deflate ) ;
628626 let result = header_map. into_bytes ( ) ;
629627 assert_eq ! ( result, "Content-Encoding: gzip\r \n \r \n " ) ;
630628 }
@@ -633,7 +631,7 @@ mod tests {
633631 fn test_header_map_truncate_header_values_all ( ) {
634632 let input = "Content-Encoding: gzip, deflate, br\r \n \r \n " ;
635633 let mut header_map = HeaderMap :: from ( BytesMut :: from ( input) ) ;
636- header_map. truncate_header_values_on_key ( CONTENT_ENCODING , ContentEncoding :: Gzip ) ;
634+ header_map. truncate_header_value_on_position ( 0 , ContentEncoding :: Gzip ) ;
637635 let result = header_map. into_bytes ( ) ;
638636 assert_eq ! ( result, "Content-Encoding: \r \n \r \n " ) ;
639637 }
0 commit comments