|
1 | 1 | use body_plz::variants::Body; |
2 | 2 | use bytes::BytesMut; |
3 | | -use header_plz::body_headers::encoding_info::EncodingInfo; |
| 3 | +use header_plz::body_headers::{ |
| 4 | + content_encoding::ContentEncoding, encoding_info::EncodingInfo, |
| 5 | +}; |
4 | 6 |
|
5 | 7 | use crate::{ |
6 | 8 | decode_struct::DecodeStruct, |
|
59 | 61 | if last_info.encodings().is_empty() { |
60 | 62 | ds.message |
61 | 63 | .remove_header_on_position(last_info.header_index); |
62 | | - |
63 | 64 | // remove the last encoding_info |
64 | 65 | encoding_infos.pop(); |
65 | 66 | } |
@@ -139,6 +140,12 @@ fn apply_encoding<T>( |
139 | 140 | where |
140 | 141 | T: DecompressTrait + std::fmt::Debug, |
141 | 142 | { |
| 143 | + if is_only_encoding(encoding_info, ContentEncoding::Identity) { |
| 144 | + decode_struct |
| 145 | + .message |
| 146 | + .remove_header_on_position(encoding_info[0].header_index); |
| 147 | + return Ok(()); |
| 148 | + } |
142 | 149 | match decompression_runner( |
143 | 150 | &decode_struct.body, |
144 | 151 | decode_struct.extra_body.as_deref(), |
@@ -202,3 +209,12 @@ where |
202 | 209 | } |
203 | 210 | } |
204 | 211 | } |
| 212 | + |
| 213 | +pub fn is_only_encoding( |
| 214 | + encoding_info: &[EncodingInfo], |
| 215 | + encoding: ContentEncoding, |
| 216 | +) -> bool { |
| 217 | + encoding_info.len() == 1 |
| 218 | + && encoding_info[0].encodings().len() == 1 |
| 219 | + && encoding_info[0].encodings()[0] == encoding |
| 220 | +} |
0 commit comments