aboutsummaryrefslogtreecommitdiff
path: root/src/api/http_util.rs
diff options
context:
space:
mode:
authorAlex Auvolat <alex@adnab.me>2020-07-07 17:15:53 +0200
committerAlex Auvolat <alex@adnab.me>2020-07-07 17:15:53 +0200
commitf22ecb60a8e1848de95e1bd3104b0ceec7058f0c (patch)
tree1e51db048f17295a070aae4025bfa16036a3c0fd /src/api/http_util.rs
parent3b0b11085e0501afcc16f6a75632a4d425146158 (diff)
downloadgarage-f22ecb60a8e1848de95e1bd3104b0ceec7058f0c.tar.gz
garage-f22ecb60a8e1848de95e1bd3104b0ceec7058f0c.zip
Update to Hyper 0.13.6 that accepts non-Sync streams in wrap_stream.
Simplifies code and makes it possible to publish on crates.io
Diffstat (limited to 'src/api/http_util.rs')
-rw-r--r--src/api/http_util.rs88
1 files changed, 0 insertions, 88 deletions
diff --git a/src/api/http_util.rs b/src/api/http_util.rs
deleted file mode 100644
index 8a8cf9d8..00000000
--- a/src/api/http_util.rs
+++ /dev/null
@@ -1,88 +0,0 @@
-use core::pin::Pin;
-use core::task::{Context, Poll};
-
-use futures::ready;
-use futures::stream::*;
-use hyper::body::{Bytes, HttpBody};
-
-use garage_util::error::Error;
-
-pub type BodyType = Box<dyn HttpBody<Data = Bytes, Error = Error> + Send + Unpin>;
-
-type StreamType = Pin<Box<dyn Stream<Item = Result<Bytes, Error>> + Send>>;
-
-pub struct StreamBody {
- stream: StreamType,
-}
-
-impl StreamBody {
- pub fn new(stream: StreamType) -> Self {
- Self { stream }
- }
-}
-
-impl HttpBody for StreamBody {
- type Data = Bytes;
- type Error = Error;
-
- fn poll_data(
- mut self: Pin<&mut Self>,
- cx: &mut Context,
- ) -> Poll<Option<Result<Bytes, Self::Error>>> {
- match ready!(self.stream.as_mut().poll_next(cx)) {
- Some(res) => Poll::Ready(Some(res)),
- None => Poll::Ready(None),
- }
- }
-
- fn poll_trailers(
- self: Pin<&mut Self>,
- _cx: &mut Context,
- ) -> Poll<Result<Option<hyper::HeaderMap<hyper::header::HeaderValue>>, Self::Error>> {
- Poll::Ready(Ok(None))
- }
-}
-
-pub struct BytesBody {
- bytes: Option<Bytes>,
-}
-
-impl BytesBody {
- pub fn new(bytes: Bytes) -> Self {
- Self { bytes: Some(bytes) }
- }
-}
-
-impl HttpBody for BytesBody {
- type Data = Bytes;
- type Error = Error;
-
- fn poll_data(
- mut self: Pin<&mut Self>,
- _cx: &mut Context,
- ) -> Poll<Option<Result<Bytes, Self::Error>>> {
- Poll::Ready(self.bytes.take().map(Ok))
- }
-
- fn poll_trailers(
- self: Pin<&mut Self>,
- _cx: &mut Context,
- ) -> Poll<Result<Option<hyper::HeaderMap<hyper::header::HeaderValue>>, Self::Error>> {
- Poll::Ready(Ok(None))
- }
-}
-
-impl From<String> for BytesBody {
- fn from(x: String) -> BytesBody {
- Self::new(Bytes::from(x))
- }
-}
-impl From<Vec<u8>> for BytesBody {
- fn from(x: Vec<u8>) -> BytesBody {
- Self::new(Bytes::from(x))
- }
-}
-
-pub fn empty_body() -> BodyType {
- Box::new(BytesBody::from(vec![]))
-}