dingtalk-cli 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +14 -3
- data/lib/DingTalk/command/action_card.rb +1 -1
- data/lib/DingTalk/command/feed_card.rb +1 -1
- data/lib/DingTalk/command/link.rb +2 -2
- data/lib/DingTalk/command/markdown.rb +2 -2
- data/lib/DingTalk/command/text.rb +2 -2
- data/lib/DingTalk/utils/http_helper.rb +14 -18
- data/lib/DingTalk/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b960d9621c524056cffedb31ee131e532843719c7e115c9a52e7ae661b7fdb75
|
4
|
+
data.tar.gz: 367bac3d8d3878b47cfcb5141fcc56af442a52b8ef9a1b7b117f0649d149bb45
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3424337d008f18df7ec5890c3657e31183655eb89d273efc3d1104580e9e8835e9f8232113ebbb33b0af8e39d292e749d07e6c1989301d3fb1e0eacb1814b342
|
7
|
+
data.tar.gz: 55a5a30e1d01022f3bc15bd45f3b85dec0b0fe27729fc4ba2088ca7c4d2185b1ae53ddd09c76d27d4e7405022640d63dff267b500444428a07359c78dfbf5042
|
data/README.md
CHANGED
@@ -40,9 +40,9 @@ Commands:
|
|
40
40
|
|
41
41
|
+ action-card 发送整体跳转ActionCard类型消息
|
42
42
|
+ feed-card 发送FeedCard类型消息
|
43
|
-
+ link 发送
|
44
|
-
+ markdown 发送
|
45
|
-
+ text 发送
|
43
|
+
+ link 发送Link类型消息
|
44
|
+
+ markdown 发送Markdown类型消息
|
45
|
+
+ text 发送Text类型消息
|
46
46
|
|
47
47
|
Options:
|
48
48
|
|
@@ -69,6 +69,17 @@ source ~/.bash_profile
|
|
69
69
|
```
|
70
70
|
|
71
71
|
> 说明:配置的优先级为:参数配置 > 临时环境变量配置 > 全局环境变量配置
|
72
|
+
## 功能列表
|
73
|
+
|
74
|
+
- [x] 发送消息类型:Text
|
75
|
+
- [x] 发送消息类型:Markdown
|
76
|
+
- [x] 发送消息类型:Link
|
77
|
+
- [x] 发送消息类型:FeedCard
|
78
|
+
- [x] 发送消息类型:ActionCard
|
79
|
+
- [x] 安全设置:自定义关键词
|
80
|
+
- [x] 安全设置:加签
|
81
|
+
- [x] 安全设置:IP地址(段)
|
82
|
+
|
72
83
|
## 开发
|
73
84
|
|
74
85
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
@@ -8,7 +8,7 @@ module DingTalk
|
|
8
8
|
self.summary = '发送FeedCard类型消息'
|
9
9
|
|
10
10
|
self.description = <<-DESC
|
11
|
-
发送
|
11
|
+
发送FeedCard类型消息,消息内容为`LINK Array JSON`,格式:`[{ "title": "xxx", "pic": "https://xxx.com/icon.png", "link": "https://xxx.com/" }]`
|
12
12
|
DESC
|
13
13
|
|
14
14
|
self.arguments = [
|
@@ -5,10 +5,10 @@ require_relative '../utils/http_helper'
|
|
5
5
|
module DingTalk
|
6
6
|
class Command
|
7
7
|
class Link < Command
|
8
|
-
self.summary = '发送
|
8
|
+
self.summary = '发送Link类型消息'
|
9
9
|
|
10
10
|
self.description = <<-DESC
|
11
|
-
发送
|
11
|
+
发送Link类型消息,消息内容为`CONTENT`
|
12
12
|
DESC
|
13
13
|
|
14
14
|
self.arguments = [
|
@@ -5,10 +5,10 @@ require_relative '../utils/http_helper'
|
|
5
5
|
module DingTalk
|
6
6
|
class Command
|
7
7
|
class Markdown < Command
|
8
|
-
self.summary = '发送
|
8
|
+
self.summary = '发送Markdown类型消息'
|
9
9
|
|
10
10
|
self.description = <<-DESC
|
11
|
-
发送
|
11
|
+
发送Markdown类型消息,消息内容为`CONTENT`
|
12
12
|
DESC
|
13
13
|
|
14
14
|
self.arguments = [
|
@@ -5,10 +5,10 @@ require_relative '../utils/http_helper'
|
|
5
5
|
module DingTalk
|
6
6
|
class Command
|
7
7
|
class Text < Command
|
8
|
-
self.summary = '发送
|
8
|
+
self.summary = '发送Text类型消息'
|
9
9
|
|
10
10
|
self.description = <<-DESC
|
11
|
-
发送
|
11
|
+
发送Text类型消息,消息内容为`CONTENT`
|
12
12
|
DESC
|
13
13
|
|
14
14
|
self.arguments = [
|
@@ -1,5 +1,9 @@
|
|
1
1
|
require 'faraday';
|
2
2
|
require 'faraday_middleware'
|
3
|
+
require 'uri'
|
4
|
+
require 'json'
|
5
|
+
require 'base64'
|
6
|
+
require 'openssl'
|
3
7
|
|
4
8
|
require_relative '../core/text'
|
5
9
|
require_relative '../core/link'
|
@@ -15,31 +19,23 @@ module DingTalk
|
|
15
19
|
access_token = token || ENV['DINGTALK_TOKEN']
|
16
20
|
access_secret = token || ENV['DINGTALK_SECRET']
|
17
21
|
return 'A message access token is required.' unless access_token
|
18
|
-
if access_secret then
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
# mac.init(new SecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA256"));
|
27
|
-
# byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8"));
|
28
|
-
# return URLEncoder.encode(new String(Base64.encodeBase64(signData)),"UTF-8");
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
22
|
+
if access_secret.nil? || access_secret.empty? then
|
23
|
+
uri = URI.parse("#{ DINGTALK_URL }?access_token=#{ access_token }")
|
24
|
+
else
|
25
|
+
timestamp = "#{(Time.now.to_f * 1000).to_i}"
|
26
|
+
content = "#{timestamp}\n#{access_secret}".encode("utf-8")
|
27
|
+
hash = OpenSSL::HMAC.digest('sha256', access_secret, content)
|
28
|
+
sign = Base64.strict_encode64(hash)
|
29
|
+
uri = URI.parse("#{ DINGTALK_URL }?access_token=#{ access_token }×tamp=#{ timestamp }&sign=#{ sign }")
|
33
30
|
end
|
34
|
-
url = "#{ DINGTALK_URL }?access_token=#{ access_token }"
|
35
31
|
http_client = Faraday.new() do |builder|
|
36
32
|
builder.request :url_encoded
|
37
33
|
builder.request :json
|
38
34
|
builder.response :logger
|
39
35
|
builder.adapter :net_http
|
40
36
|
end
|
41
|
-
res = http_client.post
|
42
|
-
res.body
|
37
|
+
res = http_client.post uri, params.to_json, 'Content-Type' => 'application/json'
|
38
|
+
JSON::pretty_generate(JSON(res.body))
|
43
39
|
end
|
44
40
|
|
45
41
|
def self.send_text(content, at_mobiles = [], is_at_all = false, token = nil, secret = nil)
|
data/lib/DingTalk/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dingtalk-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- 大龙侠
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-05-
|
11
|
+
date: 2020-05-19 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: 自定义钉钉群机器人 dingtalk-cli
|
14
14
|
email:
|