From 2a164ccb9e30fe567bb0cad5bfaf9eecfaa5d923 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B4=9B=E6=A2=A7=E8=97=A4?= <2957035701@qq.com> Date: Thu, 6 Jun 2024 18:42:51 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=A8=20cargo=20clippy=20&=20fmt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/cdn/purge_urls_cache.rs | 40 +++++++++++++------ .../tencent-cloud-server/src/cloud_manager.rs | 24 +++++++++-- .../src/common_parameters.rs | 34 +++++++++------- .../tencent-cloud-server/src/config.rs | 2 - middle-server/tencent-cloud-server/src/lib.rs | 2 +- src/configs/tc_cloud_config.rs | 15 ++----- src/main.rs | 7 +++- 7 files changed, 76 insertions(+), 48 deletions(-) diff --git a/middle-server/tencent-cloud-server/src/cdn/purge_urls_cache.rs b/middle-server/tencent-cloud-server/src/cdn/purge_urls_cache.rs index 90ae8a35..d94b26f1 100644 --- a/middle-server/tencent-cloud-server/src/cdn/purge_urls_cache.rs +++ b/middle-server/tencent-cloud-server/src/cdn/purge_urls_cache.rs @@ -1,24 +1,38 @@ use serde::Serialize; -use crate::{cloud_manager::CloudManager, common_parameters::{self, CommonParameter, RequestContent, TcCloudResponse}, error::TcCloudError}; +use crate::{ + cloud_manager::CloudManager, + common_parameters::{CommonParameter, RequestContent, TcCloudResponse}, + error::TcCloudError, +}; #[derive(Debug, Clone, Serialize)] struct PurgeUrlsCache { - #[serde(rename="Urls")] - urls: Vec + #[serde(rename = "Urls")] + urls: Vec, } impl CloudManager { - pub async fn purge_urls_cache(&self, paths: Vec) -> Result { + pub async fn purge_urls_cache( + &self, paths: Vec, + ) -> Result { + let urls = paths + .into_iter() + .map(|path| format!("{}{}", self.cdn_base_url, path)) + .collect(); + let payload = PurgeUrlsCache { urls }; - let urls = paths.into_iter().map(|path| format!("{}{}", self.cdn_base_url, path)).collect(); - let payload = PurgeUrlsCache { - urls - }; - - let common_params = CommonParameter::builder().service("cdn".to_string()).version("2018-06-06".to_string()).action("PurgeUrlsCache".to_string()).build(); - let request = RequestContent::builder().payload(payload).content_type("application/json; charset=utf-8".to_string()).query("".to_string()).build(); + let common_params = CommonParameter::builder() + .service("cdn".to_string()) + .version("2018-06-06".to_string()) + .action("PurgeUrlsCache".to_string()) + .build(); + let request = RequestContent::builder() + .payload(payload) + .content_type("application/json; charset=utf-8".to_string()) + .query("".to_string()) + .build(); - Self::common_request(&self, &common_params, &request).await + Self::common_request(self, &common_params, &request).await } -} \ No newline at end of file +} diff --git a/middle-server/tencent-cloud-server/src/cloud_manager.rs b/middle-server/tencent-cloud-server/src/cloud_manager.rs index e49c219f..24d70167 100644 --- a/middle-server/tencent-cloud-server/src/cloud_manager.rs +++ b/middle-server/tencent-cloud-server/src/cloud_manager.rs @@ -12,8 +12,15 @@ pub struct PartCloudManagerState { } impl PartCloudManagerState { - pub(crate) fn new(id: Arc, key: Arc, cdn_base_url: Arc) -> Self { - Self { id, key, cdn_base_url } + pub(crate) fn new( + id: Arc, key: Arc, + cdn_base_url: Arc, + ) -> Self { + Self { + id, + key, + cdn_base_url, + } } } @@ -26,10 +33,19 @@ pub struct CloudManager { impl CloudManager { pub fn new_from_state( - PartCloudManagerState { id, key , cdn_base_url}: PartCloudManagerState, + PartCloudManagerState { + id, + key, + cdn_base_url, + }: PartCloudManagerState, client: RequestClient, ) -> Self { - Self { id, key, cdn_base_url, client } + Self { + id, + key, + cdn_base_url, + client, + } } } diff --git a/middle-server/tencent-cloud-server/src/common_parameters.rs b/middle-server/tencent-cloud-server/src/common_parameters.rs index e90afe73..cb5f769e 100644 --- a/middle-server/tencent-cloud-server/src/common_parameters.rs +++ b/middle-server/tencent-cloud-server/src/common_parameters.rs @@ -1,5 +1,3 @@ -use std::fmt::format; - use chrono::{DateTime, Utc}; use general_request_client::Method; use hmac::{digest::InvalidLength, Hmac, Mac}; @@ -9,8 +7,8 @@ use sha2::{Digest, Sha256}; use typed_builder::TypedBuilder; use crate::{ - cloud_manager::CloudManager, config::TencentConfigTrait, - error::TcCloudError, requester::TencentCloudRequester, + cloud_manager::CloudManager, error::TcCloudError, + requester::TencentCloudRequester, }; #[derive(Debug, Clone, TypedBuilder)] @@ -42,7 +40,7 @@ pub struct RequestContent { #[derive(Debug, Clone, TypedBuilder, Deserialize)] pub struct TcCloudResponse { #[serde(rename = "Response")] - pub response: ResponseInfo + pub response: ResponseInfo, } #[derive(Debug, Clone, TypedBuilder, Deserialize)] @@ -63,7 +61,6 @@ pub struct ErrorInfo { pub message: String, } - fn sha256hex(s: &str) -> String { let mut hasher = Sha256::new(); hasher.update(s.as_bytes()); @@ -82,7 +79,8 @@ fn hmacsha256(s: &str, key: &str) -> Result { impl CloudManager { /// 腾讯云签名函数,签名参考:https://cloud.tencent.com/document/api/228/30978 fn sign( - &self, common_params: &CommonParameter, request: &RequestContent, + &self, common_params: &CommonParameter, + request: &RequestContent, ) -> Result { let algorithm = String::from("TC3-HMAC-SHA256"); // URI 参数,API 3.0 固定为正斜杠(/)。 @@ -103,7 +101,7 @@ impl CloudManager { let canonical_request = format!( "{}\n{}\n{}\n{}\n{}\n{}", - request.method.to_string(), + request.method, canonical_uri, canonical_query, canonical_headers, @@ -145,15 +143,19 @@ impl CloudManager { /// 通用请求 pub(crate) async fn common_request( - &self, common_params: &CommonParameter, request: &RequestContent, + &self, common_params: &CommonParameter, + request: &RequestContent, ) -> Result { - let authorization = self.sign(&common_params, &request)?; - + let authorization = self.sign(common_params, request)?; + let mut payload_buffer = Vec::::new(); serde_json::to_writer(&mut payload_buffer, &request.payload)?; let requester = TencentCloudRequester::builder() - .url(format!("https://{}.tencentcloudapi.com", common_params.service)) + .url(format!( + "https://{}.tencentcloudapi.com", + common_params.service + )) .method(request.method.clone()) .query(request.query.clone()) .payload(payload_buffer) @@ -172,11 +174,13 @@ impl CloudManager { let payload = resp.bytes().await?; println!("{}", String::from_utf8_lossy(&payload)); - let resp = - serde_json::from_slice::(&payload)?; + let resp = serde_json::from_slice::(&payload)?; if let Some(error_info) = resp.response.error { - return Err(TcCloudError::TcCloud{code: error_info.code, msg: error_info.message}); + return Err(TcCloudError::TcCloud { + code: error_info.code, + msg: error_info.message, + }); } Ok(resp) diff --git a/middle-server/tencent-cloud-server/src/config.rs b/middle-server/tencent-cloud-server/src/config.rs index cc77170b..e16dbba1 100644 --- a/middle-server/tencent-cloud-server/src/config.rs +++ b/middle-server/tencent-cloud-server/src/config.rs @@ -1,5 +1,3 @@ -use general_request_client::Url; - pub trait TencentConfigTrait { fn get_secret_id(&self) -> &str; fn get_secret_key(&self) -> &str; diff --git a/middle-server/tencent-cloud-server/src/lib.rs b/middle-server/tencent-cloud-server/src/lib.rs index 131f4c3f..e90dad9e 100644 --- a/middle-server/tencent-cloud-server/src/lib.rs +++ b/middle-server/tencent-cloud-server/src/lib.rs @@ -1,5 +1,5 @@ -pub mod cdn; pub mod axum_starter; +pub mod cdn; pub mod cloud_manager; mod common_parameters; pub mod config; diff --git a/src/configs/tc_cloud_config.rs b/src/configs/tc_cloud_config.rs index 4c5014fd..6911b241 100644 --- a/src/configs/tc_cloud_config.rs +++ b/src/configs/tc_cloud_config.rs @@ -1,8 +1,5 @@ use serde::Deserialize; use tencent_cloud_server::config::TencentConfigTrait; -use url::Url; - - #[derive(Debug, Deserialize)] pub struct TcCloudConfig { @@ -17,15 +14,9 @@ pub struct Cdn { } impl TencentConfigTrait for TcCloudConfig { - fn get_secret_id(&self) -> &str { - &self.secret_id - } + fn get_secret_id(&self) -> &str { &self.secret_id } - fn get_secret_key(&self) -> &str { - &self.secret_key - } + fn get_secret_key(&self) -> &str { &self.secret_key } - fn get_cdn_base_url(&self) -> &str { - &self.cdn.url - } + fn get_cdn_base_url(&self) -> &str { &self.cdn.url } } diff --git a/src/main.rs b/src/main.rs index 017b1a24..3e229482 100644 --- a/src/main.rs +++ b/src/main.rs @@ -20,7 +20,12 @@ use bootstrap::{ }; use ceobe_qiniu_upload::QiniuUpload; use configs::{ - auth_config::AuthConfig, cors_config::CorsConfigImpl, mob_config::MobPushConfig, qiniu_secret::QiniuUploadConfig, qq_channel::QqChannelConfig, resp_result_config::RespResultConfig, schedule_notifier_config::ScheduleNotifierConfig, tc_cloud_config::TcCloudConfig, GlobalConfig, CONFIG_FILE_JSON, CONFIG_FILE_TOML, CONFIG_FILE_YAML + auth_config::AuthConfig, cors_config::CorsConfigImpl, + mob_config::MobPushConfig, qiniu_secret::QiniuUploadConfig, + qq_channel::QqChannelConfig, resp_result_config::RespResultConfig, + schedule_notifier_config::ScheduleNotifierConfig, + tc_cloud_config::TcCloudConfig, GlobalConfig, CONFIG_FILE_JSON, + CONFIG_FILE_TOML, CONFIG_FILE_YAML, }; use figment::providers::{Env, Format, Json, Toml, Yaml}; use general_request_client::axum_starter::RequestClientPrepare;