Commit 7f8be8a1 authored by Nugine's avatar Nugine
Browse files

refactor(s3s/protocol): define http types

parent 9ccf2f90
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
use crate::body::{s3s_body_into_sdk_body, sdk_body_into_s3s_body};

use s3s::S3Result;
use s3s::service::S3Service;

use std::ops::Not;
@@ -14,7 +13,6 @@ use aws_smithy_runtime_api::client::result::ConnectorError;

use hyper::header::HOST;
use hyper::http;
use hyper::{Request, Response};

#[derive(Debug)]
pub struct Client(S3Service);
@@ -55,7 +53,7 @@ impl HttpConnector for Connector {
    }
}

fn convert_input(req: AwsHttpRequest) -> Result<Request<s3s::Body>, ConnectorError> {
fn convert_input(req: AwsHttpRequest) -> Result<s3s::HttpRequest, ConnectorError> {
    let mut req = req.try_into_http1x().map_err(on_err)?;

    if req.headers().contains_key(HOST).not() {
@@ -66,10 +64,13 @@ fn convert_input(req: AwsHttpRequest) -> Result<Request<s3s::Body>, ConnectorErr
    Ok(req.map(sdk_body_into_s3s_body))
}

fn convert_output(result: S3Result<Response<s3s::Body>>) -> Result<AwsHttpResponse, ConnectorError> {
fn convert_output(result: Result<s3s::HttpResponse, s3s::HttpError>) -> Result<AwsHttpResponse, ConnectorError> {
    match result {
        Ok(res) => res.map(s3s_body_into_sdk_body).try_into().map_err(on_err),
        Err(e) => Err(on_err(e)),
        Err(e) => {
            let kind = aws_smithy_runtime_api::client::retries::ErrorKind::ServerError;
            Err(ConnectorError::other(e.into(), Some(kind)))
        }
    }
}

+2 −2
Original line number Diff line number Diff line
mod generated;
pub use self::generated::*;

use crate::http;
use crate::HttpResponse;
use crate::ops;
use crate::xml;
use std::borrow::Cow;
@@ -144,7 +144,7 @@ impl S3Error {
    /// # Errors
    ///
    /// Returns [`S3Error`] if it was not possible to serialize the error into XML.
    pub fn to_hyper_response(self) -> S3Result<hyper::Response<http::Body>> {
    pub fn to_http_response(self) -> S3Result<HttpResponse> {
        ops::serialize_error(self, false).map(Into::into)
    }
}
+3 −2
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@ use super::Body;
use super::Multipart;
use super::OrderedQs;

use crate::HttpRequest;
use crate::auth::Credentials;
use crate::path::S3Path;
use crate::stream::VecByteStream;
@@ -34,8 +35,8 @@ pub(crate) struct S3Extensions {
    pub service: Option<String>,
}

impl From<hyper::Request<Body>> for Request {
    fn from(req: hyper::Request<Body>) -> Self {
impl From<HttpRequest> for Request {
    fn from(req: HttpRequest) -> Self {
        let (parts, body) = req.into_parts();
        Self {
            method: parts.method,
+4 −2
Original line number Diff line number Diff line
use crate::HttpResponse;

use super::Body;

use hyper::HeaderMap;
@@ -13,9 +15,9 @@ pub struct Response {
    pub extensions: Extensions,
}

impl From<Response> for hyper::Response<Body> {
impl From<Response> for HttpResponse {
    fn from(res: Response) -> Self {
        let mut ans = hyper::Response::default();
        let mut ans = HttpResponse::default();
        *ans.status_mut() = res.status;
        *ans.headers_mut() = res.headers;
        *ans.body_mut() = res.body;
+3 −0
Original line number Diff line number Diff line
@@ -42,5 +42,8 @@ pub use self::http::Body;
pub use self::s3_op::S3Operation;
pub use self::s3_trait::S3;

pub use self::protocol::HttpError;
pub use self::protocol::HttpRequest;
pub use self::protocol::HttpResponse;
pub use self::protocol::S3Request;
pub use self::protocol::S3Response;
Loading