From b74ca545cb1ab519d01586134322186d46197978 Mon Sep 17 00:00:00 2001 From: Hatter Jiang Date: Sat, 21 Dec 2019 22:46:33 +0800 Subject: [PATCH] v0.1.0 -> v0.1.1 --- Cargo.toml | 2 +- README.md | 2 ++ src/lib.rs | 11 +++++++++-- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 53fae15..95e3126 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "dingtalk" -version = "0.1.0" +version = "0.1.1" authors = ["Hatter Jiang "] edition = "2018" description = "DingTalk Util" diff --git a/README.md b/README.md index c292a37..1795bbb 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,8 @@ pub fn main() -> Result<(), Box> { #### Changelog +* v0.1.1 + * Add `set_default_webhook_url`, default dingtalk webhook url * v0.1.0 * Add `DingTalk::send_link(...)`, send link message * v0.0.3 diff --git a/src/lib.rs b/src/lib.rs index b6c9492..700e28f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -35,6 +35,7 @@ const DEFAULT_DINGTALK_ROBOT_URL: &str = "https://oapi.dingtalk.com/robot/send?a /// dt.send_message(&DingTalkMessage::new_text("Hello World!").at_all())?; /// ``` pub struct DingTalk<'a> { + pub default_webhook_url: &'a str, pub access_token: &'a str, pub sec_token: &'a str, } @@ -140,11 +141,17 @@ impl <'a> DingTalk<'a> { /// `access_token` is access token, `sec_token` can be empty `""` pub fn new(access_token: &'a str, sec_token: &'a str) -> Self { DingTalk { + default_webhook_url: DEFAULT_DINGTALK_ROBOT_URL, access_token: access_token, sec_token: sec_token, } } + /// Set default webhook url + pub fn set_default_webhook_url(&mut self, default_webhook_url: &'a str) { + self.default_webhook_url = default_webhook_url; + } + /// Send DingTalk message pub fn send_message(&self, dingtalk_message: &DingTalkMessage) -> Result<(), Box> { let mut message_json = match dingtalk_message.message_type { @@ -216,7 +223,7 @@ impl <'a> DingTalk<'a> { /// Generate signed dingtalk webhook URL pub fn generate_signed_url(&self) -> String { let mut signed_url = String::with_capacity(1024); - signed_url.push_str(DEFAULT_DINGTALK_ROBOT_URL); + signed_url.push_str(self.default_webhook_url); signed_url.push_str(&urlencoding::encode(self.access_token)); if self.sec_token != "" { @@ -234,7 +241,7 @@ impl <'a> DingTalk<'a> { } } - +/// calc hma_sha256 digest fn calc_hmac_sha256(key: &[u8], message: &[u8]) -> MacResult { let mut hmac = Hmac::new(Sha256::new(), key); hmac.input(message);