Loading crates/s3s-fs/src/s3.rs +14 −12 Original line number Diff line number Diff line Loading @@ -237,7 +237,7 @@ impl S3 for FileSystem { let output = GetObjectOutput { body: Some(StreamingBlob::wrap(body)), content_length: content_length_i64, content_length: Some(content_length_i64), content_range, last_modified: Some(last_modified), metadata: object_metadata, Loading @@ -260,7 +260,7 @@ impl S3 for FileSystem { return Err(s3_error!(NoSuchBucket)); } Ok(S3Response::new(HeadBucketOutput {})) Ok(S3Response::new(HeadBucketOutput::default())) } #[tracing::instrument] Loading @@ -282,7 +282,7 @@ impl S3 for FileSystem { let content_type = mime::APPLICATION_OCTET_STREAM; let output = HeadObjectOutput { content_length: try_!(i64::try_from(file_len)), content_length: Some(try_!(i64::try_from(file_len))), content_type: Some(content_type), last_modified: Some(last_modified), metadata: object_metadata, Loading Loading @@ -387,7 +387,7 @@ impl S3 for FileSystem { let object = Object { key: Some(key_str), last_modified: Some(last_modified), size: try_!(i64::try_from(size)), size: Some(try_!(i64::try_from(size))), ..Default::default() }; objects.push(object); Loading @@ -413,8 +413,8 @@ impl S3 for FileSystem { let key_count = try_!(i32::try_from(objects.len())); let output = ListObjectsV2Output { key_count, max_keys: key_count, key_count: Some(key_count), max_keys: Some(key_count), contents: Some(objects), delimiter: input.delimiter, encoding_type: input.encoding_type, Loading Loading @@ -475,7 +475,7 @@ impl S3 for FileSystem { let object_path = self.get_object_path(&bucket, &key)?; let mut file_writer = self.prepare_file_write(&object_path).await?; let mut md5_hash = Md5::new(); let mut md5_hash = <Md5 as Digest>::new(); let stream = body.inspect_ok(|bytes| { md5_hash.update(bytes.as_ref()); checksum.update(bytes.as_ref()); Loading Loading @@ -564,7 +564,7 @@ impl S3 for FileSystem { let file_path = self.resolve_upload_part_path(upload_id, part_number)?; let mut md5_hash = Md5::new(); let mut md5_hash = <Md5 as Digest>::new(); let stream = body.inspect_ok(|bytes| md5_hash.update(bytes.as_ref())); let mut file_writer = self.prepare_file_write(&file_path).await?; Loading Loading @@ -628,7 +628,7 @@ impl S3 for FileSystem { let _ = try_!(src_file.seek(io::SeekFrom::Start(start)).await); let body = StreamingBlob::wrap(bytes_stream(ReaderStream::with_capacity(src_file, 4096), content_length_usize)); let mut md5_hash = Md5::new(); let mut md5_hash = <Md5 as Digest>::new(); let stream = body.inspect_ok(|bytes| md5_hash.update(bytes.as_ref())); let mut file_writer = self.prepare_file_write(&dst_path).await?; Loading Loading @@ -680,8 +680,8 @@ impl S3 for FileSystem { let part = Part { last_modified: Some(last_modified), part_number, size, part_number: Some(part_number), size: Some(size), ..Default::default() }; parts.push(part); Loading Loading @@ -729,7 +729,9 @@ impl S3 for FileSystem { let mut cnt: i32 = 0; for part in multipart_upload.parts.into_iter().flatten() { let part_number = part.part_number; let part_number = part .part_number .ok_or_else(|| s3_error!(InvalidRequest, "missing part number"))?; cnt += 1; if part_number != cnt { return Err(s3_error!(InvalidRequest, "invalid part order")); Loading crates/s3s/src/http/ser.rs +10 −10 Original line number Diff line number Diff line Loading @@ -13,16 +13,16 @@ use std::fmt::Write as _; use hyper::header::{IntoHeaderName, InvalidHeaderValue}; pub fn add_header<N, V>(res: &mut Response, name: N, value: V) -> S3Result where N: IntoHeaderName, V: TryIntoHeaderValue, V::Error: std::error::Error + Send + Sync + 'static, { let val = value.try_into_header_value().map_err(S3Error::internal_error)?; res.headers.insert(name, val); Ok(()) } // pub fn add_header<N, V>(res: &mut Response, name: N, value: V) -> S3Result // where // N: IntoHeaderName, // V: TryIntoHeaderValue, // V::Error: std::error::Error + Send + Sync + 'static, // { // let val = value.try_into_header_value().map_err(S3Error::internal_error)?; // res.headers.insert(name, val); // Ok(()) // } pub fn add_opt_header<N, V>(res: &mut Response, name: N, value: Option<V>) -> S3Result where Loading crates/s3s/src/xml/tests.rs +4 −4 Original line number Diff line number Diff line Loading @@ -53,13 +53,13 @@ fn d001() { let parts = ans.parts.as_deref().unwrap(); assert_eq!(parts.len(), 3); assert_eq!(parts[0].part_number, 1); assert_eq!(parts[0].part_number, Some(1)); assert_eq!(parts[0].e_tag.as_deref(), Some("\"a54357aff0632cce46d942af68356b38\"")); assert_eq!(parts[1].part_number, 2); assert_eq!(parts[1].part_number, Some(2)); assert_eq!(parts[1].e_tag.as_deref(), Some("\"0c78aef83f66abc1fa1e8477f296d394\"")); assert_eq!(parts[2].part_number, 3); assert_eq!(parts[2].part_number, Some(3)); assert_eq!(parts[2].e_tag.as_deref(), Some("\"acbd18db4cc2f85cedef654fccc4a4d8\"")); } Loading Loading @@ -93,7 +93,7 @@ fn d002() { { let csv = ans.input_serialization.csv.as_ref().unwrap(); assert_eq!(csv.allow_quoted_record_delimiter, false); assert_eq!(csv.allow_quoted_record_delimiter, Some(false)); } } Loading Loading
crates/s3s-fs/src/s3.rs +14 −12 Original line number Diff line number Diff line Loading @@ -237,7 +237,7 @@ impl S3 for FileSystem { let output = GetObjectOutput { body: Some(StreamingBlob::wrap(body)), content_length: content_length_i64, content_length: Some(content_length_i64), content_range, last_modified: Some(last_modified), metadata: object_metadata, Loading @@ -260,7 +260,7 @@ impl S3 for FileSystem { return Err(s3_error!(NoSuchBucket)); } Ok(S3Response::new(HeadBucketOutput {})) Ok(S3Response::new(HeadBucketOutput::default())) } #[tracing::instrument] Loading @@ -282,7 +282,7 @@ impl S3 for FileSystem { let content_type = mime::APPLICATION_OCTET_STREAM; let output = HeadObjectOutput { content_length: try_!(i64::try_from(file_len)), content_length: Some(try_!(i64::try_from(file_len))), content_type: Some(content_type), last_modified: Some(last_modified), metadata: object_metadata, Loading Loading @@ -387,7 +387,7 @@ impl S3 for FileSystem { let object = Object { key: Some(key_str), last_modified: Some(last_modified), size: try_!(i64::try_from(size)), size: Some(try_!(i64::try_from(size))), ..Default::default() }; objects.push(object); Loading @@ -413,8 +413,8 @@ impl S3 for FileSystem { let key_count = try_!(i32::try_from(objects.len())); let output = ListObjectsV2Output { key_count, max_keys: key_count, key_count: Some(key_count), max_keys: Some(key_count), contents: Some(objects), delimiter: input.delimiter, encoding_type: input.encoding_type, Loading Loading @@ -475,7 +475,7 @@ impl S3 for FileSystem { let object_path = self.get_object_path(&bucket, &key)?; let mut file_writer = self.prepare_file_write(&object_path).await?; let mut md5_hash = Md5::new(); let mut md5_hash = <Md5 as Digest>::new(); let stream = body.inspect_ok(|bytes| { md5_hash.update(bytes.as_ref()); checksum.update(bytes.as_ref()); Loading Loading @@ -564,7 +564,7 @@ impl S3 for FileSystem { let file_path = self.resolve_upload_part_path(upload_id, part_number)?; let mut md5_hash = Md5::new(); let mut md5_hash = <Md5 as Digest>::new(); let stream = body.inspect_ok(|bytes| md5_hash.update(bytes.as_ref())); let mut file_writer = self.prepare_file_write(&file_path).await?; Loading Loading @@ -628,7 +628,7 @@ impl S3 for FileSystem { let _ = try_!(src_file.seek(io::SeekFrom::Start(start)).await); let body = StreamingBlob::wrap(bytes_stream(ReaderStream::with_capacity(src_file, 4096), content_length_usize)); let mut md5_hash = Md5::new(); let mut md5_hash = <Md5 as Digest>::new(); let stream = body.inspect_ok(|bytes| md5_hash.update(bytes.as_ref())); let mut file_writer = self.prepare_file_write(&dst_path).await?; Loading Loading @@ -680,8 +680,8 @@ impl S3 for FileSystem { let part = Part { last_modified: Some(last_modified), part_number, size, part_number: Some(part_number), size: Some(size), ..Default::default() }; parts.push(part); Loading Loading @@ -729,7 +729,9 @@ impl S3 for FileSystem { let mut cnt: i32 = 0; for part in multipart_upload.parts.into_iter().flatten() { let part_number = part.part_number; let part_number = part .part_number .ok_or_else(|| s3_error!(InvalidRequest, "missing part number"))?; cnt += 1; if part_number != cnt { return Err(s3_error!(InvalidRequest, "invalid part order")); Loading
crates/s3s/src/http/ser.rs +10 −10 Original line number Diff line number Diff line Loading @@ -13,16 +13,16 @@ use std::fmt::Write as _; use hyper::header::{IntoHeaderName, InvalidHeaderValue}; pub fn add_header<N, V>(res: &mut Response, name: N, value: V) -> S3Result where N: IntoHeaderName, V: TryIntoHeaderValue, V::Error: std::error::Error + Send + Sync + 'static, { let val = value.try_into_header_value().map_err(S3Error::internal_error)?; res.headers.insert(name, val); Ok(()) } // pub fn add_header<N, V>(res: &mut Response, name: N, value: V) -> S3Result // where // N: IntoHeaderName, // V: TryIntoHeaderValue, // V::Error: std::error::Error + Send + Sync + 'static, // { // let val = value.try_into_header_value().map_err(S3Error::internal_error)?; // res.headers.insert(name, val); // Ok(()) // } pub fn add_opt_header<N, V>(res: &mut Response, name: N, value: Option<V>) -> S3Result where Loading
crates/s3s/src/xml/tests.rs +4 −4 Original line number Diff line number Diff line Loading @@ -53,13 +53,13 @@ fn d001() { let parts = ans.parts.as_deref().unwrap(); assert_eq!(parts.len(), 3); assert_eq!(parts[0].part_number, 1); assert_eq!(parts[0].part_number, Some(1)); assert_eq!(parts[0].e_tag.as_deref(), Some("\"a54357aff0632cce46d942af68356b38\"")); assert_eq!(parts[1].part_number, 2); assert_eq!(parts[1].part_number, Some(2)); assert_eq!(parts[1].e_tag.as_deref(), Some("\"0c78aef83f66abc1fa1e8477f296d394\"")); assert_eq!(parts[2].part_number, 3); assert_eq!(parts[2].part_number, Some(3)); assert_eq!(parts[2].e_tag.as_deref(), Some("\"acbd18db4cc2f85cedef654fccc4a4d8\"")); } Loading Loading @@ -93,7 +93,7 @@ fn d002() { { let csv = ans.input_serialization.csv.as_ref().unwrap(); assert_eq!(csv.allow_quoted_record_delimiter, false); assert_eq!(csv.allow_quoted_record_delimiter, Some(false)); } } Loading