Remove disabled examples
This commit is contained in:
		| @@ -1,101 +0,0 @@ | |||||||
| #![deny(warnings)] |  | ||||||
| use std::io::{self, Cursor}; |  | ||||||
| use std::mem; |  | ||||||
| use std::path::Path; |  | ||||||
| use std::pin::Pin; |  | ||||||
| use std::task::{Context, Poll}; |  | ||||||
|  |  | ||||||
| use futures::{Stream, TryStreamExt}; |  | ||||||
| use reqwest::r#async::{Body, Client, Decoder}; |  | ||||||
| use tokio_fs::File; |  | ||||||
| use tokio::io::AsyncRead; |  | ||||||
|  |  | ||||||
| use failure::Fail; |  | ||||||
|  |  | ||||||
| #[derive(Debug, Fail)] |  | ||||||
| pub enum Error { |  | ||||||
|     #[fail(display = "Io Error")] |  | ||||||
|     Io(#[fail(cause)] std::io::Error), |  | ||||||
|     #[fail(display = "Reqwest error")] |  | ||||||
|     Reqwest(#[fail(cause)] reqwest::Error), |  | ||||||
| } |  | ||||||
|  |  | ||||||
| unsafe impl Send for Error {} |  | ||||||
| unsafe impl Sync for Error {} |  | ||||||
|  |  | ||||||
| struct AsyncReadWrapper<T> { |  | ||||||
|     inner: T, |  | ||||||
| } |  | ||||||
|  |  | ||||||
| impl<T> AsyncReadWrapper<T> { |  | ||||||
|     fn inner(self: Pin<&mut Self>) -> Pin<&mut T> { |  | ||||||
|         unsafe { |  | ||||||
|             Pin::map_unchecked_mut(self, |x| &mut x.inner) |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| impl<T> Stream for AsyncReadWrapper<T> |  | ||||||
|     where T: AsyncRead |  | ||||||
| { |  | ||||||
|     type Item = Result<hyper::Chunk, failure::Compat<Error>>; |  | ||||||
|     fn poll_next( |  | ||||||
|         mut self: Pin<&mut Self>, |  | ||||||
|         cx: &mut Context<'_>, |  | ||||||
|     ) -> Poll<Option<Self::Item>> { |  | ||||||
|         let mut buf = vec![]; |  | ||||||
|         loop { |  | ||||||
|             let mut read_buf = vec![]; |  | ||||||
|             match self.as_mut().inner().as_mut().poll_read(cx, &mut read_buf) { |  | ||||||
|                 Poll::Pending => { |  | ||||||
|                     if buf.is_empty() { |  | ||||||
|                         return Poll::Pending; |  | ||||||
|                     } else { |  | ||||||
|                         return Poll::Ready(Some(Ok(buf.into()))); |  | ||||||
|                     } |  | ||||||
|                 } |  | ||||||
|                 Poll::Ready(Err(e)) => { |  | ||||||
|                     return Poll::Ready(Some(Err(Error::Io(e).compat()))) |  | ||||||
|                 }, |  | ||||||
|                 Poll::Ready(Ok(n)) => { |  | ||||||
|                     buf.extend_from_slice(&read_buf[..n]); |  | ||||||
|                     if buf.is_empty() && n == 0 { |  | ||||||
|                         return Poll::Ready(None); |  | ||||||
|                     } else { |  | ||||||
|                         return Poll::Ready(Some(Ok(buf.into()))); |  | ||||||
|                     } |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| async fn post<P>(path: P) -> Result<(), Error> |  | ||||||
| where |  | ||||||
|     P: AsRef<Path> + Send + Unpin + 'static, |  | ||||||
| { |  | ||||||
|     let source = File::open(path) |  | ||||||
|         .await.map_err(Error::Io)?; |  | ||||||
|     let wrapper = AsyncReadWrapper { inner: source }; |  | ||||||
|     let mut res = Client::new() |  | ||||||
|         .post("https://httpbin.org/post") |  | ||||||
|         .body(Body::wrap_stream(wrapper)) |  | ||||||
|         .send() |  | ||||||
|         .await.map_err(Error::Reqwest)?; |  | ||||||
|  |  | ||||||
|     println!("{}", res.status()); |  | ||||||
|  |  | ||||||
|     let body = mem::replace(res.body_mut(), Decoder::empty()); |  | ||||||
|     let body: Result<_, _> = body.try_concat().await; |  | ||||||
|  |  | ||||||
|     let mut body = Cursor::new(body.map_err(Error::Reqwest)?); |  | ||||||
|     io::copy(&mut body, &mut io::stdout()).map_err(Error::Io)?; |  | ||||||
|  |  | ||||||
|     Ok(()) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| #[tokio::main] |  | ||||||
| async fn main() -> Result<(), Error> { |  | ||||||
|     let path = concat!(env!("CARGO_MANIFEST_DIR"), "/LICENSE-APACHE"); |  | ||||||
|     post(path).await |  | ||||||
| } |  | ||||||
		Reference in New Issue
	
	Block a user