feat: updates
This commit is contained in:
@@ -4,11 +4,11 @@ use std::time::SystemTime;
|
||||
|
||||
use rand::random;
|
||||
|
||||
use crate::util::BTreeMapAddKv;
|
||||
use crate::common_util::{join_slices, percent_encode};
|
||||
use crate::map_util::BTreeMapAddKv;
|
||||
use crate::sign_algorithm::SignAlgorithm;
|
||||
use crate::v4::access_key::{AccessKey, DerivedAccessKey};
|
||||
use crate::v4::common_util::{join_slices, percent_encode};
|
||||
use crate::v4::constant::{ALIYUN_V4, ALIYUN_V4_REQUEST, CONTENT_TYPE_APPLICATION_JSON, HEADER_ACCEPT, HEADER_AUTHORIZATION, HEADER_CONTENT_TYPE, HEADER_HOST, HEADER_USER_AGENT, HEADER_X_ACS_PREFIX, HEADER_X_ASC_ACCESS_KEY_ID, HEADER_X_ASC_ACTION, HEADER_X_ASC_CONTENT_SHA256, HEADER_X_ASC_CONTENT_SM3, HEADER_X_ASC_DATE, HEADER_X_ASC_SECURITY_TOKEN, HEADER_X_ASC_SIGNATURE_NONCE, HEADER_X_ASC_VERSION, REGION_CENTER};
|
||||
use crate::v4::sign_algorithm::SignAlgorithm;
|
||||
|
||||
const SEQ: AtomicU64 = AtomicU64::new(0);
|
||||
|
||||
@@ -27,18 +27,21 @@ struct Request {
|
||||
}
|
||||
|
||||
fn add_common_headers(header: &mut BTreeMap<String, String>, request: &Request) {
|
||||
let (ymd, date) = get_timestamp();
|
||||
|
||||
header.insert_kv(HEADER_HOST, "endpoint"); // TODO
|
||||
header.insert_kv(HEADER_X_ASC_VERSION, &request.version);
|
||||
header.insert_kv(HEADER_X_ASC_ACTION, &request.action);
|
||||
header.insert_kv(HEADER_USER_AGENT, &request.user_agent);
|
||||
header.insert_kv(HEADER_X_ASC_DATE, get_timestamp());
|
||||
header.insert_kv(HEADER_X_ASC_DATE, date);
|
||||
header.insert_kv(HEADER_X_ASC_SIGNATURE_NONCE, get_nonce());
|
||||
header.insert_kv(HEADER_ACCEPT, CONTENT_TYPE_APPLICATION_JSON);
|
||||
|
||||
// TODO BODY ...
|
||||
|
||||
// TODO signature ...
|
||||
match &request.sign_algorithm {
|
||||
// TODO ...
|
||||
SignAlgorithm::Sha1 => panic!("SHA1 in V4 is NOT supported!"),
|
||||
SignAlgorithm::Sha256 => {
|
||||
header.insert_kv(HEADER_X_ASC_CONTENT_SHA256, "");
|
||||
}
|
||||
@@ -111,7 +114,7 @@ fn get_authorization(sign_algorithm: &SignAlgorithm,
|
||||
let signed_headers_str = get_signed_headers(headers).iter().map(|(k, _)| k.as_str()).collect::<Vec<_>>().join(";");
|
||||
|
||||
let mut authorization = String::with_capacity(512);
|
||||
authorization.push_str(sign_algorithm.as_aliyun_name());
|
||||
authorization.push_str(sign_algorithm.as_aliyun_name_v4());
|
||||
authorization.push_str(" Credential=");
|
||||
authorization.push_str(&access_key.access_key_id);
|
||||
authorization.push('/');
|
||||
@@ -153,7 +156,7 @@ fn get_signature(sign_algorithm: &SignAlgorithm,
|
||||
string_to_sign.push_str(payload);
|
||||
|
||||
let string_to_sign_digest_hex = sign_algorithm.digest(string_to_sign.as_bytes());
|
||||
string_to_sign.push_str(sign_algorithm.as_aliyun_name());
|
||||
string_to_sign.push_str(sign_algorithm.as_aliyun_name_v4());
|
||||
string_to_sign.push('\n');
|
||||
string_to_sign.push_str(&string_to_sign_digest_hex);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user