From 780d14abf87956f02455ba1cd3f9e5280a8ef490 Mon Sep 17 00:00:00 2001 From: Xuanwo Date: Wed, 10 Apr 2024 22:32:02 +0800 Subject: [PATCH 1/2] fix(integrations/webdav): Fix read file API changes Signed-off-by: Xuanwo --- integrations/dav-server/src/file.rs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/integrations/dav-server/src/file.rs b/integrations/dav-server/src/file.rs index 008b35e3f835..4503c400fa44 100644 --- a/integrations/dav-server/src/file.rs +++ b/integrations/dav-server/src/file.rs @@ -18,7 +18,7 @@ use std::fmt; use std::io::SeekFrom; -use bytes::Bytes; +use bytes::{Bytes, BytesMut}; use dav_server::fs::DavFile; use dav_server::fs::DavMetaData; use dav_server::fs::FsFuture; @@ -34,6 +34,7 @@ pub struct WebdavFile { op: Operator, path: String, state: WebdavFileState, + pos: u64, } struct WebdavFileState { @@ -53,6 +54,7 @@ impl WebdavFile { op, path, state: WebdavFileState { reader, writer }, + pos: 0, } } } @@ -60,12 +62,14 @@ impl WebdavFile { impl DavFile for WebdavFile { fn read_bytes(&mut self, count: usize) -> FsFuture { async move { - self.state + let mut buf = BytesMut::with_capacity(count); + let n = self.state .reader - .read(count) + .read(&mut buf, self.pos, count) .await - .map(Bytes::from) - .map_err(convert_error) + .map_err(convert_error)?; + self.pos += n as u64; + Ok(buf.split().freeze()) } .boxed() } From 18883ac099cf2f9b5231f678bcd34ba614af4fe8 Mon Sep 17 00:00:00 2001 From: Xuanwo Date: Wed, 10 Apr 2024 22:38:12 +0800 Subject: [PATCH 2/2] Fix format Signed-off-by: Xuanwo --- integrations/dav-server/src/file.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/integrations/dav-server/src/file.rs b/integrations/dav-server/src/file.rs index 4503c400fa44..c5dc2090c078 100644 --- a/integrations/dav-server/src/file.rs +++ b/integrations/dav-server/src/file.rs @@ -63,7 +63,8 @@ impl DavFile for WebdavFile { fn read_bytes(&mut self, count: usize) -> FsFuture { async move { let mut buf = BytesMut::with_capacity(count); - let n = self.state + let n = self + .state .reader .read(&mut buf, self.pos, count) .await