15
15
// specific language governing permissions and limitations
16
16
// under the License.
17
17
18
- use std:: collections:: HashMap ;
19
18
use std:: fmt:: Debug ;
20
19
use std:: fmt:: Formatter ;
21
20
use std:: fmt:: Write ;
22
21
use std:: time:: Duration ;
23
22
24
23
use bytes:: Bytes ;
24
+ use constants:: X_OSS_META_PREFIX ;
25
25
use http:: header:: CACHE_CONTROL ;
26
26
use http:: header:: CONTENT_DISPOSITION ;
27
27
use http:: header:: CONTENT_LENGTH ;
@@ -190,7 +190,7 @@ impl OssCore {
190
190
"the format of the user metadata key is invalid, please refer the document" ,
191
191
) ) ;
192
192
}
193
- req = req. header ( format ! ( "{}{}" , constants :: X_OSS_META_PREFIX , key ) , value)
193
+ req = req. header ( format ! ( "{X_OSS_META_PREFIX}{key}" ) , value)
194
194
}
195
195
}
196
196
@@ -213,28 +213,11 @@ impl OssCore {
213
213
/// # Notes
214
214
///
215
215
/// before return the user defined metadata, we'll strip the user_metadata_prefix from the key
216
- pub fn parse_metadata (
217
- & self ,
218
- path : & str ,
219
- user_metadata_prefix : & str ,
220
- headers : & HeaderMap ,
221
- ) -> Result < Metadata > {
216
+ pub fn parse_metadata ( & self , path : & str , headers : & HeaderMap ) -> Result < Metadata > {
222
217
let mut m = parse_into_metadata ( path, headers) ?;
223
-
224
- let data: HashMap < String , String > = headers
225
- . iter ( )
226
- . filter_map ( |( key, _) | {
227
- key. as_str ( )
228
- . strip_prefix ( user_metadata_prefix)
229
- . and_then ( |stripped_key| {
230
- parse_header_to_str ( headers, key)
231
- . unwrap_or ( None )
232
- . map ( |val| ( stripped_key. to_string ( ) , val. to_string ( ) ) )
233
- } )
234
- } )
235
- . collect ( ) ;
236
- if !data. is_empty ( ) {
237
- m. with_user_metadata ( data) ;
218
+ let user_meta = parse_prefixed_headers ( & headers, X_OSS_META_PREFIX ) ;
219
+ if !user_meta. is_empty ( ) {
220
+ m. with_user_metadata ( user_meta) ;
238
221
}
239
222
240
223
Ok ( m)
0 commit comments