v0.1.0 -> v0.1.1

This commit is contained in:
2019-12-21 22:46:33 +08:00
parent 198839c0f2
commit b74ca545cb
3 changed files with 12 additions and 3 deletions

View File

@@ -1,6 +1,6 @@
[package] [package]
name = "dingtalk" name = "dingtalk"
version = "0.1.0" version = "0.1.1"
authors = ["Hatter Jiang <jht5945@gmail.com>"] authors = ["Hatter Jiang <jht5945@gmail.com>"]
edition = "2018" edition = "2018"
description = "DingTalk Util" description = "DingTalk Util"

View File

@@ -16,6 +16,8 @@ pub fn main() -> Result<(), Box<dyn std::error::Error>> {
#### Changelog #### Changelog
* v0.1.1
* Add `set_default_webhook_url`, default dingtalk webhook url
* v0.1.0 * v0.1.0
* Add `DingTalk::send_link(...)`, send link message * Add `DingTalk::send_link(...)`, send link message
* v0.0.3 * v0.0.3

View File

@@ -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())?; /// dt.send_message(&DingTalkMessage::new_text("Hello World!").at_all())?;
/// ``` /// ```
pub struct DingTalk<'a> { pub struct DingTalk<'a> {
pub default_webhook_url: &'a str,
pub access_token: &'a str, pub access_token: &'a str,
pub sec_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 `""` /// `access_token` is access token, `sec_token` can be empty `""`
pub fn new(access_token: &'a str, sec_token: &'a str) -> Self { pub fn new(access_token: &'a str, sec_token: &'a str) -> Self {
DingTalk { DingTalk {
default_webhook_url: DEFAULT_DINGTALK_ROBOT_URL,
access_token: access_token, access_token: access_token,
sec_token: sec_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 /// Send DingTalk message
pub fn send_message(&self, dingtalk_message: &DingTalkMessage) -> Result<(), Box<dyn std::error::Error>> { pub fn send_message(&self, dingtalk_message: &DingTalkMessage) -> Result<(), Box<dyn std::error::Error>> {
let mut message_json = match dingtalk_message.message_type { let mut message_json = match dingtalk_message.message_type {
@@ -216,7 +223,7 @@ impl <'a> DingTalk<'a> {
/// Generate signed dingtalk webhook URL /// Generate signed dingtalk webhook URL
pub fn generate_signed_url(&self) -> String { pub fn generate_signed_url(&self) -> String {
let mut signed_url = String::with_capacity(1024); 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)); signed_url.push_str(&urlencoding::encode(self.access_token));
if self.sec_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 { fn calc_hmac_sha256(key: &[u8], message: &[u8]) -> MacResult {
let mut hmac = Hmac::new(Sha256::new(), key); let mut hmac = Hmac::new(Sha256::new(), key);
hmac.input(message); hmac.input(message);