Change Part::stream to reqwest::r#async::Chunk
This commit is contained in:
		
				
					committed by
					
						 Sean McArthur
						Sean McArthur
					
				
			
			
				
	
			
			
			
						parent
						
							8027a2894a
						
					
				
				
					commit
					81e0f1ff2a
				
			| @@ -165,6 +165,7 @@ impl Chunk { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| impl Buf for Chunk { | impl Buf for Chunk { | ||||||
|     fn bytes(&self) -> &[u8] { |     fn bytes(&self) -> &[u8] { | ||||||
|         self.inner.bytes() |         self.inner.bytes() | ||||||
| @@ -210,6 +211,36 @@ impl IntoIterator for Chunk { | |||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | impl From<Vec<u8>> for Chunk { | ||||||
|  |     fn from(v: Vec<u8>) -> Chunk { | ||||||
|  |         Chunk { inner: v.into() } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | impl From<&'static [u8]> for Chunk { | ||||||
|  |     fn from(slice: &'static [u8]) -> Chunk { | ||||||
|  |         Chunk { inner: slice.into() } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | impl From<String> for Chunk { | ||||||
|  |     fn from(s: String) -> Chunk { | ||||||
|  |         Chunk { inner: s.into() } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | impl From<&'static str> for Chunk { | ||||||
|  |     fn from(slice: &'static str) -> Chunk { | ||||||
|  |         Chunk { inner: slice.into() } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | impl From<Bytes> for Chunk { | ||||||
|  |     fn from(bytes: Bytes) -> Chunk { | ||||||
|  |         Chunk { inner: bytes.into() } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
| impl From<Chunk> for hyper::Chunk { | impl From<Chunk> for hyper::Chunk { | ||||||
|     fn from(val: Chunk) -> hyper::Chunk { |     fn from(val: Chunk) -> hyper::Chunk { | ||||||
|         val.inner |         val.inner | ||||||
|   | |||||||
| @@ -9,7 +9,7 @@ use http::HeaderMap; | |||||||
|  |  | ||||||
| use futures::Stream; | use futures::Stream; | ||||||
|  |  | ||||||
| use super::Body; | use super::{Body, Chunk}; | ||||||
|  |  | ||||||
| /// An async multipart/form-data request. | /// An async multipart/form-data request. | ||||||
| pub struct Form { | pub struct Form { | ||||||
| @@ -185,10 +185,10 @@ impl Part { | |||||||
|     pub fn stream<T>(value: T) -> Part |     pub fn stream<T>(value: T) -> Part | ||||||
|     where |     where | ||||||
|         T: Stream + Send + 'static, |         T: Stream + Send + 'static, | ||||||
|  |         T::Item: Into<Chunk>, | ||||||
|         T::Error: std::error::Error + Send + Sync, |         T::Error: std::error::Error + Send + Sync, | ||||||
|         hyper::Chunk: std::convert::From<T::Item>, |  | ||||||
|     { |     { | ||||||
|         Part::new(Body::wrap(hyper::Body::wrap_stream(value))) |         Part::new(Body::wrap(hyper::Body::wrap_stream(value.map(|chunk| chunk.into())))) | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     fn new(value: Body) -> Part { |     fn new(value: Body) -> Part { | ||||||
| @@ -477,13 +477,13 @@ mod tests { | |||||||
|     #[test] |     #[test] | ||||||
|     fn stream_to_end() { |     fn stream_to_end() { | ||||||
|         let mut form = Form::new() |         let mut form = Form::new() | ||||||
|             .part("reader1", Part::stream(futures::stream::once::<_, hyper::Error>(Ok(hyper::Chunk::from("part1".to_owned()))))) |             .part("reader1", Part::stream(futures::stream::once::<_, hyper::Error>(Ok(Chunk::from("part1".to_owned()))))) | ||||||
|             .part("key1", Part::text("value1")) |             .part("key1", Part::text("value1")) | ||||||
|             .part( |             .part( | ||||||
|                 "key2", |                 "key2", | ||||||
|                 Part::text("value2").mime(mime::IMAGE_BMP), |                 Part::text("value2").mime(mime::IMAGE_BMP), | ||||||
|             ) |             ) | ||||||
|             .part("reader2", Part::stream(futures::stream::once::<_, hyper::Error>(Ok(hyper::Chunk::from("part2".to_owned()))))) |             .part("reader2", Part::stream(futures::stream::once::<_, hyper::Error>(Ok(Chunk::from("part2".to_owned()))))) | ||||||
|             .part( |             .part( | ||||||
|                 "key3", |                 "key3", | ||||||
|                 Part::text("value3").file_name("filename"), |                 Part::text("value3").file_name("filename"), | ||||||
|   | |||||||
| @@ -14,7 +14,7 @@ use std::time::Duration; | |||||||
| use futures::{Future, Stream}; | use futures::{Future, Stream}; | ||||||
| use tokio::runtime::current_thread::Runtime; | use tokio::runtime::current_thread::Runtime; | ||||||
|  |  | ||||||
| use reqwest::r#async::Client; | use reqwest::r#async::{Chunk, Client}; | ||||||
| use reqwest::r#async::multipart::{Form, Part}; | use reqwest::r#async::multipart::{Form, Part}; | ||||||
|  |  | ||||||
| use bytes::Bytes; | use bytes::Bytes; | ||||||
| @@ -105,7 +105,7 @@ fn response_json() { | |||||||
| fn multipart() { | fn multipart() { | ||||||
|     let _ = env_logger::try_init(); |     let _ = env_logger::try_init(); | ||||||
|  |  | ||||||
|     let stream = futures::stream::once::<_, hyper::Error>(Ok(hyper::Chunk::from("part1 part2".to_owned()))); |     let stream = futures::stream::once::<_, hyper::Error>(Ok(Chunk::from("part1 part2".to_owned()))); | ||||||
|     let part = Part::stream(stream); |     let part = Part::stream(stream); | ||||||
|  |  | ||||||
|     let form = Form::new() |     let form = Form::new() | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user