mirror of
https://github.com/minio/minio-rs.git
synced 2026-01-29 19:12:10 +08:00
Refactor request creation bits
This commit is contained in:
parent
334533cff1
commit
b63c820c66
58
src/minio.rs
58
src/minio.rs
@ -129,32 +129,40 @@ impl Client {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_bucket_location(&self, b: &str) -> impl Future<Item = Region, Error = Err> {
|
fn signed_req_future(
|
||||||
let mut qp = HashMap::new();
|
&self,
|
||||||
qp.insert("location".to_string(), None);
|
mut s3_req: S3Req,
|
||||||
let mut hmap = HeaderMap::new();
|
) -> impl Future<Item = Response<Body>, Error = Err> {
|
||||||
|
let hmap = &mut s3_req.headers;
|
||||||
|
self.add_host_header(hmap);
|
||||||
|
|
||||||
self.add_host_header(&mut hmap);
|
|
||||||
let body_hash_hdr = (
|
let body_hash_hdr = (
|
||||||
HeaderName::from_static("x-amz-content-sha256"),
|
HeaderName::from_static("x-amz-content-sha256"),
|
||||||
HeaderValue::from_static("UNSIGNED-PAYLOAD"),
|
HeaderValue::from_static("UNSIGNED-PAYLOAD"),
|
||||||
);
|
);
|
||||||
hmap.insert(body_hash_hdr.0.clone(), body_hash_hdr.1.clone());
|
hmap.insert(body_hash_hdr.0.clone(), body_hash_hdr.1.clone());
|
||||||
let s3_req = S3Req {
|
|
||||||
method: Method::GET,
|
|
||||||
bucket: Some(b.to_string()),
|
|
||||||
object: None,
|
|
||||||
headers: hmap,
|
|
||||||
query: qp,
|
|
||||||
body: Body::empty(),
|
|
||||||
ts: time::now_utc(),
|
|
||||||
};
|
|
||||||
|
|
||||||
let sign_hdrs = sign::sign_v4(&s3_req, &self);
|
let sign_hdrs = sign::sign_v4(&s3_req, &self);
|
||||||
println!("signout: {:?}", sign_hdrs);
|
println!("signout: {:?}", sign_hdrs);
|
||||||
let req_result = api::mk_request(&s3_req, &self, &sign_hdrs);
|
let req_result = api::mk_request(&s3_req, &self, &sign_hdrs);
|
||||||
let conn_client = self.conn_client.clone();
|
let conn_client = self.conn_client.clone();
|
||||||
run_req_future(req_result, conn_client).and_then(|resp| {
|
run_req_future(req_result, conn_client)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_bucket_location(&self, b: &str) -> impl Future<Item = Region, Error = Err> {
|
||||||
|
let mut qp = HashMap::new();
|
||||||
|
qp.insert("location".to_string(), None);
|
||||||
|
|
||||||
|
let s3_req = S3Req {
|
||||||
|
method: Method::GET,
|
||||||
|
bucket: Some(b.to_string()),
|
||||||
|
object: None,
|
||||||
|
headers: HeaderMap::new(),
|
||||||
|
query: qp,
|
||||||
|
body: Body::empty(),
|
||||||
|
ts: time::now_utc(),
|
||||||
|
};
|
||||||
|
self.signed_req_future(s3_req).and_then(|resp| {
|
||||||
// Read the whole body for bucket location response.
|
// Read the whole body for bucket location response.
|
||||||
resp.into_body()
|
resp.into_body()
|
||||||
.concat2()
|
.concat2()
|
||||||
@ -165,30 +173,16 @@ impl Client {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn delete_bucket(&self, b: &str) -> impl Future<Item = (), Error = Err> {
|
pub fn delete_bucket(&self, b: &str) -> impl Future<Item = (), Error = Err> {
|
||||||
let qp = HashMap::new();
|
|
||||||
let mut hmap = HeaderMap::new();
|
|
||||||
|
|
||||||
self.add_host_header(&mut hmap);
|
|
||||||
let body_hash_hdr = (
|
|
||||||
HeaderName::from_static("x-amz-content-sha256"),
|
|
||||||
HeaderValue::from_static("UNSIGNED-PAYLOAD"),
|
|
||||||
);
|
|
||||||
hmap.insert(body_hash_hdr.0.clone(), body_hash_hdr.1.clone());
|
|
||||||
let s3_req = S3Req {
|
let s3_req = S3Req {
|
||||||
method: Method::DELETE,
|
method: Method::DELETE,
|
||||||
bucket: Some(b.to_string()),
|
bucket: Some(b.to_string()),
|
||||||
object: None,
|
object: None,
|
||||||
headers: hmap,
|
headers: HeaderMap::new(),
|
||||||
query: qp,
|
query: HashMap::new(),
|
||||||
body: Body::empty(),
|
body: Body::empty(),
|
||||||
ts: time::now_utc(),
|
ts: time::now_utc(),
|
||||||
};
|
};
|
||||||
|
self.signed_req_future(s3_req).and_then(|_| Ok(()))
|
||||||
let sign_hdrs = sign::sign_v4(&s3_req, &self);
|
|
||||||
println!("signout: {:?}", sign_hdrs);
|
|
||||||
let req_result = api::mk_request(&s3_req, &self, &sign_hdrs);
|
|
||||||
let conn_client = self.conn_client.clone();
|
|
||||||
run_req_future(req_result, conn_client).and_then(|_| Ok(()))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -28,6 +28,5 @@ pub enum Err {
|
|||||||
FailStatusCodeErr(hyper::StatusCode, Bytes),
|
FailStatusCodeErr(hyper::StatusCode, Bytes),
|
||||||
Utf8DecodingErr(string::FromUtf8Error),
|
Utf8DecodingErr(string::FromUtf8Error),
|
||||||
XmlParseErr(roxmltree::Error),
|
XmlParseErr(roxmltree::Error),
|
||||||
UnexpectedEOF(String),
|
|
||||||
RawSvcErr(hyper::StatusCode, Response<Body>),
|
RawSvcErr(hyper::StatusCode, Response<Body>),
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user