Skip to content

Commit 92d4453

Browse files
committed
Body from tokio::fs::File
1 parent bd4e0c6 commit 92d4453

File tree

2 files changed

+14
-5
lines changed

2 files changed

+14
-5
lines changed

Cargo.toml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,11 @@ blocking = ["futures-util/io", "tokio/rt-multi-thread", "tokio/sync"]
4646

4747
cookies = ["cookie_crate", "cookie_store", "time"]
4848

49-
gzip = ["async-compression", "async-compression/gzip", "tokio-util"]
49+
gzip = ["async-compression", "async-compression/gzip"]
5050

51-
brotli = ["async-compression", "async-compression/brotli", "tokio-util"]
51+
brotli = ["async-compression", "async-compression/brotli"]
5252

53-
deflate = ["async-compression", "async-compression/zlib", "tokio-util"]
53+
deflate = ["async-compression", "async-compression/zlib"]
5454

5555
json = ["serde_json"]
5656

@@ -100,7 +100,8 @@ lazy_static = "1.4"
100100
log = "0.4"
101101
mime = "0.3.16"
102102
percent-encoding = "2.1"
103-
tokio = { version = "1.0", default-features = false, features = ["net", "time"] }
103+
tokio = { version = "1.0", default-features = false, features = ["net", "time", "fs"] }
104+
tokio-util = { version = "0.6.0", default-features = false, features = ["codec", "io"] }
104105
pin-project-lite = "0.2.0"
105106
ipnet = "2.3"
106107

@@ -125,7 +126,6 @@ time = { version = "0.2.11", optional = true }
125126

126127
## compression
127128
async-compression = { version = "0.3.7", default-features = false, features = ["tokio"], optional = true }
128-
tokio-util = { version = "0.6.0", default-features = false, features = ["codec", "io"], optional = true }
129129

130130
## socks
131131
tokio-socks = { version = "0.5.1", optional = true }

src/async_impl/body.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ use bytes::Bytes;
77
use futures_core::Stream;
88
use http_body::Body as HttpBody;
99
use pin_project_lite::pin_project;
10+
use tokio::fs::File;
1011
use tokio::time::Sleep;
12+
use tokio_util::io::ReaderStream;
1113

1214
/// An asynchronous request body.
1315
pub struct Body {
@@ -208,6 +210,13 @@ impl From<&'static str> for Body {
208210
}
209211
}
210212

213+
impl From<File> for Body {
214+
#[inline]
215+
fn from(file: File) -> Body {
216+
Body::stream(ReaderStream::new(file))
217+
}
218+
}
219+
211220
impl fmt::Debug for Body {
212221
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
213222
f.debug_struct("Body").finish()

0 commit comments

Comments
 (0)