diff --git a/src/main.rs b/src/main.rs index e7a11a9..0eb6735 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,38 @@ fn main() { println!("Hello, world!"); + + println!("{}", generate_oss_signed_url("", "", "", "", "", 1_u64, true)); } + +// https://help.aliyun.com/document_detail/31952.html +// Signature = urlencode(base64(hmac-sha1(AccessKeySecret, +// VERB + "\n" +// + CONTENT-MD5 + "\n" +// + CONTENT-TYPE + "\n" +// + EXPIRES + "\n" +// + CanonicalizedOSSHeaders +// + CanonicalizedResource))) +// https://git.hatter.ink/hatter/oss-backupd/wiki/Signed-OSS-URL +fn generate_oss_signed_url(endpoint: &str, access_key_id: &str, access_key_secret: &str, + bucket_name: &str, key: &str, expire_in_seconds: u64, is_http: bool) -> String { + let mut signed_url = String::new(); + signed_url.push_str(if is_http { + "http://" + } else { + "https://" + }); + signed_url.push_str(bucket_name); + signed_url.push_str("."); + signed_url.push_str(endpoint); + signed_url.push_str("/"); + signed_url.push_str(key); + + signed_url.push_str("?Expires="); + // TODO + signed_url.push_str("&OSSAccessKeyId="); + // TODO + signed_url.push_str("&Signature="); + // TODO + + signed_url +} \ No newline at end of file