Commit 9ccf2f90 authored by Nugine's avatar Nugine
Browse files

feat(s3s/service): make S3Service shared

parent 0f2f7a08
Loading
Loading
Loading
Loading
+8 −8
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::SharedS3Service;
use s3s::service::S3Service;

use std::ops::Not;

@@ -17,7 +17,7 @@ use hyper::http;
use hyper::{Request, Response};

#[derive(Debug)]
pub struct Client(SharedS3Service);
pub struct Client(S3Service);

impl HttpClient for Client {
    fn http_connector(&self, _: &HttpConnectorSettings, _: &RuntimeComponents) -> SharedHttpConnector {
@@ -25,17 +25,17 @@ impl HttpClient for Client {
    }
}

impl From<SharedS3Service> for Client {
    fn from(val: SharedS3Service) -> Self {
impl From<S3Service> for Client {
    fn from(val: S3Service) -> Self {
        Self(val)
    }
}

#[derive(Debug, Clone)]
pub struct Connector(SharedS3Service);
pub struct Connector(S3Service);

impl From<SharedS3Service> for Connector {
    fn from(val: SharedS3Service) -> Self {
impl From<S3Service> for Connector {
    fn from(val: S3Service) -> Self {
        Self(val)
    }
}
@@ -51,7 +51,7 @@ where
impl HttpConnector for Connector {
    fn call(&self, req: AwsHttpRequest) -> HttpConnectorFuture {
        let service = self.0.clone();
        HttpConnectorFuture::new_boxed(Box::pin(async move { convert_output(service.as_ref().call(convert_input(req)?).await) }))
        HttpConnectorFuture::new_boxed(Box::pin(async move { convert_output(service.call(convert_input(req)?).await) }))
    }
}

+1 −3
Original line number Diff line number Diff line
@@ -113,8 +113,6 @@ async fn run(opt: Opt) -> Result {
    let listener = TcpListener::bind((opt.host.as_str(), opt.port)).await?;
    let local_addr = listener.local_addr()?;

    let hyper_service = service.into_shared();

    let http_server = ConnBuilder::new(TokioExecutor::new());
    let graceful = hyper_util::server::graceful::GracefulShutdown::new();

@@ -138,7 +136,7 @@ async fn run(opt: Opt) -> Result {
            }
        };

        let conn = http_server.serve_connection(TokioIo::new(socket), hyper_service.clone());
        let conn = http_server.serve_connection(TokioIo::new(socket), service.clone());
        let conn = graceful.watch(conn.into_owned());
        tokio::spawn(async move {
            let _ = conn.await;
+1 −1
Original line number Diff line number Diff line
@@ -65,7 +65,7 @@ fn config() -> &'static SdkConfig {
        };

        // Convert to aws http client
        let client = s3s_aws::Client::from(service.into_shared());
        let client = s3s_aws::Client::from(service);

        // Setup aws sdk config
        SdkConfig::builder()
+1 −3
Original line number Diff line number Diff line
@@ -73,8 +73,6 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
    // Run server
    let listener = TcpListener::bind((opt.host.as_str(), opt.port)).await?;

    let hyper_service = service.into_shared();

    let http_server = ConnBuilder::new(TokioExecutor::new());
    let graceful = hyper_util::server::graceful::GracefulShutdown::new();

@@ -99,7 +97,7 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
            }
        };

        let conn = http_server.serve_connection(TokioIo::new(socket), hyper_service.clone());
        let conn = http_server.serve_connection(TokioIo::new(socket), service.clone());
        let conn = graceful.watch(conn.into_owned());
        tokio::spawn(async move {
            let _ = conn.await;
+1 −3
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@ rustdoc-args = ["--cfg", "docsrs"]

[features]
openssl = ["dep:openssl"]
tower = ["dep:tower"]

[target.'cfg(not(windows))'.dependencies]
openssl = { version = "0.10.72", optional = true }
@@ -56,7 +55,7 @@ sha2 = "=0.11.0-pre.5"
smallvec = "1.15.0"
thiserror = "2.0.12"
time = { version = "0.3.41", features = ["formatting", "parsing", "macros"] }
tower = { version = "0.5.2", optional = true } 
tower = { version = "0.5.2", default-features = false }
tracing = "0.1.41"
transform-stream = "0.3.1"
urlencoding = "2.1.3"
@@ -73,4 +72,3 @@ axum = "0.8.3"
serde_json = "1.0.140"
tokio = { version = "1.44.2", features = ["full"] }
tokio-util = { version = "0.7.14", features = ["io"] }
tower = "0.5.2"
Loading