mirror of
https://git.asonix.dog/asonix/pict-rs
synced 2024-12-22 19:31:35 +00:00
Update rusty-s3 to 0.5.0
This commit is contained in:
parent
7bf71df57d
commit
0bf8b6a2a8
3 changed files with 15 additions and 33 deletions
22
Cargo.lock
generated
22
Cargo.lock
generated
|
@ -1552,9 +1552,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "num-traits"
|
name = "num-traits"
|
||||||
version = "0.2.16"
|
version = "0.2.17"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2"
|
checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"autocfg",
|
"autocfg",
|
||||||
]
|
]
|
||||||
|
@ -1862,7 +1862,7 @@ dependencies = [
|
||||||
"opentelemetry",
|
"opentelemetry",
|
||||||
"opentelemetry-otlp",
|
"opentelemetry-otlp",
|
||||||
"pin-project-lite",
|
"pin-project-lite",
|
||||||
"quick-xml 0.30.0",
|
"quick-xml",
|
||||||
"refinery",
|
"refinery",
|
||||||
"reqwest",
|
"reqwest",
|
||||||
"reqwest-middleware",
|
"reqwest-middleware",
|
||||||
|
@ -2065,16 +2065,6 @@ dependencies = [
|
||||||
"winapi",
|
"winapi",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "quick-xml"
|
|
||||||
version = "0.27.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "ffc053f057dd768a56f62cd7e434c42c831d296968997e9ac1f76ea7c2d14c41"
|
|
||||||
dependencies = [
|
|
||||||
"memchr",
|
|
||||||
"serde",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "quick-xml"
|
name = "quick-xml"
|
||||||
version = "0.30.0"
|
version = "0.30.0"
|
||||||
|
@ -2420,15 +2410,15 @@ checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rusty-s3"
|
name = "rusty-s3"
|
||||||
version = "0.4.1"
|
version = "0.5.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9c92776b0db0fea6d7cc3abb9d0d745814c71124471a3bfd84b1265a28c06130"
|
checksum = "31aa883f1b986a5249641e574ca0e11ac4fb9970b009c6fbb96fedaf4fa78db8"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"base64 0.21.4",
|
"base64 0.21.4",
|
||||||
"hmac",
|
"hmac",
|
||||||
"md-5",
|
"md-5",
|
||||||
"percent-encoding",
|
"percent-encoding",
|
||||||
"quick-xml 0.27.1",
|
"quick-xml",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"sha2",
|
"sha2",
|
||||||
|
|
|
@ -44,7 +44,7 @@ refinery = { version = "0.8.10", features = ["tokio-postgres", "postgres"] }
|
||||||
reqwest = { version = "0.11.18", default-features = false, features = ["json", "rustls-tls", "stream"] }
|
reqwest = { version = "0.11.18", default-features = false, features = ["json", "rustls-tls", "stream"] }
|
||||||
reqwest-middleware = "0.2.2"
|
reqwest-middleware = "0.2.2"
|
||||||
reqwest-tracing = { version = "0.4.5" }
|
reqwest-tracing = { version = "0.4.5" }
|
||||||
rusty-s3 = "0.4.1"
|
rusty-s3 = "0.5.0"
|
||||||
serde = { version = "1.0", features = ["derive"] }
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
serde-tuple-vec-map = "1.0.1"
|
serde-tuple-vec-map = "1.0.1"
|
||||||
serde_json = "1.0"
|
serde_json = "1.0"
|
||||||
|
|
|
@ -15,7 +15,10 @@ use base64::{prelude::BASE64_STANDARD, Engine};
|
||||||
use futures_core::Stream;
|
use futures_core::Stream;
|
||||||
use reqwest::{header::RANGE, Body, Response};
|
use reqwest::{header::RANGE, Body, Response};
|
||||||
use reqwest_middleware::{ClientWithMiddleware, RequestBuilder};
|
use reqwest_middleware::{ClientWithMiddleware, RequestBuilder};
|
||||||
use rusty_s3::{actions::S3Action, Bucket, BucketError, Credentials, UrlStyle};
|
use rusty_s3::{
|
||||||
|
actions::{CreateMultipartUpload, S3Action},
|
||||||
|
Bucket, BucketError, Credentials, UrlStyle,
|
||||||
|
};
|
||||||
use std::{string::FromUtf8Error, sync::Arc, time::Duration};
|
use std::{string::FromUtf8Error, sync::Arc, time::Duration};
|
||||||
use storage_path_generator::{Generator, Path};
|
use storage_path_generator::{Generator, Path};
|
||||||
use streem::IntoStreamer;
|
use streem::IntoStreamer;
|
||||||
|
@ -122,16 +125,6 @@ pub(crate) struct ObjectStoreConfig {
|
||||||
public_endpoint: Option<Url>,
|
public_endpoint: Option<Url>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(serde::Deserialize, Debug)]
|
|
||||||
struct InitiateMultipartUploadResponse {
|
|
||||||
#[serde(rename = "Bucket")]
|
|
||||||
_bucket: String,
|
|
||||||
#[serde(rename = "Key")]
|
|
||||||
_key: String,
|
|
||||||
#[serde(rename = "UploadId")]
|
|
||||||
upload_id: String,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl ObjectStoreConfig {
|
impl ObjectStoreConfig {
|
||||||
pub(crate) fn build(self, client: ClientWithMiddleware) -> ObjectStore {
|
pub(crate) fn build(self, client: ClientWithMiddleware) -> ObjectStore {
|
||||||
ObjectStore {
|
ObjectStore {
|
||||||
|
@ -255,10 +248,9 @@ impl Store for ObjectStore {
|
||||||
return Err(status_error(response).await);
|
return Err(status_error(response).await);
|
||||||
}
|
}
|
||||||
|
|
||||||
let body = response.bytes().await.map_err(ObjectError::Request)?;
|
let body = response.text().await.map_err(ObjectError::Request)?;
|
||||||
let body: InitiateMultipartUploadResponse =
|
let body = CreateMultipartUpload::parse_response(&body).map_err(ObjectError::Xml)?;
|
||||||
quick_xml::de::from_reader(&*body).map_err(ObjectError::from)?;
|
let upload_id = body.upload_id();
|
||||||
let upload_id = &body.upload_id;
|
|
||||||
|
|
||||||
// hack-ish: use async block as Result boundary
|
// hack-ish: use async block as Result boundary
|
||||||
let res = async {
|
let res = async {
|
||||||
|
@ -280,7 +272,7 @@ impl Store for ObjectStore {
|
||||||
let this = self.clone();
|
let this = self.clone();
|
||||||
|
|
||||||
let object_id2 = object_id.clone();
|
let object_id2 = object_id.clone();
|
||||||
let upload_id2 = upload_id.clone();
|
let upload_id2 = upload_id.to_string();
|
||||||
let handle = crate::sync::spawn(
|
let handle = crate::sync::spawn(
|
||||||
async move {
|
async move {
|
||||||
let response = this
|
let response = this
|
||||||
|
|
Loading…
Reference in a new issue