Skip to content

Commit 9126b78

Browse files
committed
feat: Modified truncate_header_values_on_key to truncate_header_value_on_position
1 parent c2c6a25 commit 9126b78

File tree

3 files changed

+31
-33
lines changed

3 files changed

+31
-33
lines changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

header-plz/src/message_head/header_map/mod.rs

Lines changed: 27 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -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)]
272270
mod 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
}

header-plz/src/message_head/info_line/request.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,18 +91,19 @@ mod tests {
9191
use std::error::Error;
9292

9393
#[test]
94-
fn test_infoline_request_basic() {
94+
fn test_infoline_request_basic() -> Result<(), Box<dyn Error>> {
9595
let req = "GET /echo HTTP/1.1\r\n";
9696
let buf = BytesMut::from(req);
9797
let verify = buf[0..20].to_owned();
9898
let verify_ptr = buf[0..20].as_ptr_range();
99-
let request = Request::try_build_infoline(buf).unwrap();
99+
let request = Request::try_build_infoline(buf)?;
100100
assert_eq!(request.method(), b"GET");
101101
assert_eq!(request.uri_as_string(), "/echo");
102102
assert_eq!(request.version, " HTTP/1.1\r\n");
103103
let toverify = request.into_bytes();
104104
assert_eq!(verify_ptr, toverify.as_ptr_range());
105105
assert_eq!(toverify, verify);
106+
Ok(())
106107
}
107108

108109
#[test]
@@ -214,7 +215,6 @@ mod tests {
214215
}
215216
216217
217-
218218
#[test]
219219
fn test_return_first_line_query_params_end_ampersand() {
220220
let req = "GET /users?param=value& HTTP/1.1\r\n\r\n";

0 commit comments

Comments
 (0)