From 626f87f262dfa7b871e05b1fd248493b29c20541 Mon Sep 17 00:00:00 2001 From: Hatter Jiang Date: Sun, 5 Jan 2020 12:41:40 +0800 Subject: [PATCH] add put_file_content_bytes,get_file_content_bytes --- Cargo.toml | 2 +- src/lib.rs | 20 +++++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index e184ceb..ef8b56b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "oss" -version = "0.1.0" +version = "0.1.1" authors = ["Hatter Jiang "] edition = "2018" description = "Simple Alibaba Cloud OSS Client in Rust" diff --git a/src/lib.rs b/src/lib.rs index 27b2354..7733173 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -72,10 +72,28 @@ impl<'a> OSSClient<'a> { } } + pub fn get_file_content_bytes(&self, bucket_name: &str, key: &str) -> XResult>> { + let get_url = self.generate_signed_get_url(bucket_name, key, 30_u64); + let mut response = reqwest::get(&get_url)?; + match response.status().as_u16() { + 404_u16 => Ok(None), + 200_u16 => { + let mut buf: Vec = vec![]; + response.copy_to(&mut buf)?; + Ok(Some(buf)) + }, + _ => Err(new_box_ioerror(&format!("Error in read: {}/{}, returns: {:?}", bucket_name, key, response))), + } + } + pub fn put_file_content(&self, bucket_name: &str, key: &str, content: &str) -> XResult { + self.put_file_content_bytes(bucket_name, key, content.as_bytes().to_vec()) + } + + pub fn put_file_content_bytes(&self, bucket_name: &str, key: &str, content_bytes: Vec) -> XResult { let put_url = self.generate_signed_put_url(bucket_name, key, 30_u64); let client = reqwest::Client::new(); - Ok(client.put(&put_url).body(content.as_bytes().to_vec()).send()?) + Ok(client.put(&put_url).body(content_bytes).send()?) } pub fn generate_signed_put_url(&self, bucket_name: &str, key: &str, expire_in_seconds: u64) -> String {