feishu-api 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 333130110a1c707a9e37a067af961e6608506ec4782d9fc691a9c7ff74885fd3
4
- data.tar.gz: 792a76ba9109ee4399cc37cbb80b0a930dd19da5de110435a4ff3944deede8d7
3
+ metadata.gz: 3f8a52a4760d626bfb49812f6abc798505af00b137102ab705b638001b2f0816
4
+ data.tar.gz: c00d49d6647fb9243370793576f3125a34c9ab1535d50587b81f7e5303a0455d
5
5
  SHA512:
6
- metadata.gz: 7090bd3836461e1f63fc4a541379ed236e0b8c6d318b3a29aca6d095625cc05e26ecef39339aa6da2514142bc6d6468e133c4aa46ec8e77e13023c054410aec7
7
- data.tar.gz: 27a2edd16300e1da1dea63eb707f19c01148ae63f5c39703a304a09db583505efa56130b92405faeb32ddaa67d9fde11ae9de2439c2bd5819abd928a8ca646be
6
+ metadata.gz: a22fed44aee1d6965bf5aaceba272aeaf4528ac65386e2735f90e862cd680620cafa4364bc15b95104467c457c5ba9a203ee4a0aca0d2cbf78ccba0e5ff83cd8
7
+ data.tar.gz: 3baaceeab565d0a44aa4451baa930a6ad3067b7bca83dcadc2c85dad31fb09c3ea0063ef616b0ca1725c127e9efbfff9d5af6bebaf0b1c55007745fa24af88d9
data/README.md CHANGED
@@ -1,5 +1,4 @@
1
- # FeishuApi [![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2Fatrox%2Fsync-dotenv%2Fbadge&label=build&logo=none)](https://actions-badge.atrox.dev/atrox/sync-dotenv/goto)
2
-
1
+ # FeishuApi
3
2
 
4
3
  FeishuApi is an integration of commonly used feishu open platform's APIs, easy to call.
5
4
 
@@ -22,7 +22,7 @@ module FeishuApi
22
22
  HTTParty.post(api(url),
23
23
  body: data.to_json,
24
24
  headers: { 'Content-Type' => 'application/json', 'Accept' => 'application/json' }.merge(headers),
25
- timeout: timeout,
25
+ timeout: ,
26
26
  verify: false)
27
27
  end
28
28
 
@@ -30,70 +30,70 @@ module FeishuApi
30
30
  HTTParty.post(api(url),
31
31
  body: data,
32
32
  headers: { Authorization: "Bearer #{tenant_access_token}" }.merge(headers),
33
- timeout: timeout)
33
+ timeout: )
34
34
  end
35
35
 
36
36
  def post_with_user_token(url, user_access_token, data, headers = {}, timeout = 30)
37
37
  HTTParty.post(api(url),
38
38
  body: data,
39
39
  headers: { Authorization: "Bearer #{user_access_token}" }.merge(headers),
40
- timeout: timeout)
40
+ timeout: )
41
41
  end
42
42
 
43
43
  def get_with_token(url, data = {}, headers = {}, timeout = 30)
44
44
  HTTParty.get(api(url),
45
45
  body: data,
46
46
  headers: { Authorization: "Bearer #{tenant_access_token}" }.merge(headers),
47
- timeout: timeout)
47
+ timeout: )
48
48
  end
49
49
 
50
50
  def get_with_user_token(url, user_access_token, data = {}, headers = {}, timeout = 30)
51
51
  HTTParty.get(api(url),
52
52
  body: data,
53
53
  headers: { Authorization: "Bearer #{user_access_token}" }.merge(headers),
54
- timeout: timeout)
54
+ timeout: )
55
55
  end
56
56
 
57
57
  def put_with_token(url, data = {}, headers = {}, timeout = 30)
58
58
  HTTParty.put(api(url),
59
59
  body: data,
60
60
  headers: { Authorization: "Bearer #{tenant_access_token}" }.merge(headers),
61
- timeout: timeout)
61
+ timeout: )
62
62
  end
63
63
 
64
64
  def put_with_user_token(url, user_access_token, data = {}, headers = {}, timeout = 30)
65
65
  HTTParty.put(api(url),
66
66
  body: data,
67
67
  headers: { Authorization: "Bearer #{user_access_token}" }.merge(headers),
68
- timeout: timeout)
68
+ timeout: )
69
69
  end
70
70
 
71
71
  def delete_with_token(url, data = {}, headers = {}, timeout = 30)
72
72
  HTTParty.delete(api(url),
73
73
  body: data,
74
74
  headers: { Authorization: "Bearer #{tenant_access_token}" }.merge(headers),
75
- timeout: timeout)
75
+ timeout: )
76
76
  end
77
77
 
78
78
  def delete_with_user_token(url, user_access_token, data = {}, headers = {}, timeout = 30)
79
79
  HTTParty.delete(api(url),
80
80
  body: data,
81
81
  headers: { Authorization: "Bearer #{user_access_token}" }.merge(headers),
82
- timeout: timeout)
82
+ timeout: )
83
83
  end
84
84
 
85
85
  def patch_with_token(url, data = {}, headers = {}, timeout = 30)
86
86
  HTTParty.patch(api(url),
87
87
  body: data,
88
88
  headers: { Authorization: "Bearer #{tenant_access_token}" }.merge(headers),
89
- timeout: timeout)
89
+ timeout: )
90
90
  end
91
91
 
92
92
  def patch_with_user_token(url, user_access_token, data = {}, headers = {}, timeout = 30)
93
93
  HTTParty.patch(api(url),
94
94
  body: data,
95
95
  headers: { Authorization: "Bearer #{user_access_token}" }.merge(headers),
96
- timeout: timeout)
96
+ timeout: )
97
97
  end
98
98
 
99
99
  def tenant_access_token
@@ -128,7 +128,7 @@ module FeishuApi
128
128
  # 发送消息
129
129
  def send_message(receive_type, receive_id, msg_type, content)
130
130
  res = post_with_token("#{API_SEND_MESSAGES}?receive_id_type=#{receive_type}",
131
- { receive_id: receive_id, msg_type: msg_type, content: content })
131
+ { receive_id: , msg_type: , content: })
132
132
  # p res
133
133
  return nil if res.code != 200
134
134
 
@@ -142,7 +142,7 @@ module FeishuApi
142
142
 
143
143
  # 发文本消息到指定群聊
144
144
  def send_text_by_group(receive_id, text)
145
- send_message_by_group(receive_id, 'text', JSON.generate({ text: text }))
145
+ send_message_by_group(receive_id, 'text', JSON.generate({ text: }))
146
146
  end
147
147
 
148
148
  # 上传图片
@@ -171,7 +171,7 @@ module FeishuApi
171
171
 
172
172
  # 发文件消息到指定群聊
173
173
  def send_file_by_group(receive_id, file_key)
174
- send_message_by_group(receive_id, 'file', JSON.generate({ file_key: file_key }))
174
+ send_message_by_group(receive_id, 'file', JSON.generate({ file_key: }))
175
175
  end
176
176
 
177
177
  # 撤回消息
@@ -186,7 +186,7 @@ module FeishuApi
186
186
 
187
187
  # 发图片消息到指定群聊
188
188
  def send_image_by_group(receive_id, image_key)
189
- send_message_by_group(receive_id, 'image', JSON.generate({ image_key: image_key }))
189
+ send_message_by_group(receive_id, 'image', JSON.generate({ image_key: }))
190
190
  end
191
191
 
192
192
  # 回复消息
@@ -294,13 +294,13 @@ module FeishuApi
294
294
  # 将用户或机器人拉入群聊
295
295
  def add_group_member(chat_id, id_list)
296
296
  post_with_token("#{API_CHATS}/#{chat_id}/members",
297
- { id_list: id_list }.to_json, { 'Content-Type' => 'application/json', 'Accept' => 'application/json' })
297
+ { id_list: }.to_json, { 'Content-Type' => 'application/json', 'Accept' => 'application/json' })
298
298
  end
299
299
 
300
300
  # 将用户或机器人移出群聊
301
301
  def delete_group_member(chat_id, id_list)
302
302
  delete_with_token("#{API_CHATS}/#{chat_id}/members",
303
- { id_list: id_list }.to_json, { 'Content-Type' => 'application/json', 'Accept' => 'application/json' })
303
+ { id_list: }.to_json, { 'Content-Type' => 'application/json', 'Accept' => 'application/json' })
304
304
  end
305
305
 
306
306
  # 用户或机器人主动加入群聊
@@ -317,13 +317,13 @@ module FeishuApi
317
317
  # 指定群管理员
318
318
  def add_group_managers(chat_id, manager_ids)
319
319
  post_with_token("#{API_CHATS}/#{chat_id}/managers/add_managers",
320
- { manager_ids: manager_ids }.to_json, { 'Content-Type' => 'application/json' })
320
+ { manager_ids: }.to_json, { 'Content-Type' => 'application/json' })
321
321
  end
322
322
 
323
323
  # 删除群管理员
324
324
  def delete_group_managers(chat_id, manager_ids)
325
325
  post_with_token("#{API_CHATS}/#{chat_id}/managers/delete_managers",
326
- { manager_ids: manager_ids }.to_json, { 'Content-Type' => 'application/json' })
326
+ { manager_ids: }.to_json, { 'Content-Type' => 'application/json' })
327
327
  end
328
328
 
329
329
  # 获取群成员列表
@@ -355,8 +355,15 @@ module FeishuApi
355
355
  end
356
356
 
357
357
  # 自定义机器人接口 发送消息
358
- def custom_robot_send(data, hook_id)
359
- post("#{API_CUSTOM_BOT_SEND}/#{hook_id}", data)
358
+ def custom_robot_send(data, hook_id, secret = '')
359
+ if secret != ''
360
+ timestamp = Time.now.to_i.to_s
361
+ string_to_sign = "#{timestamp}\n#{secret}"
362
+ hmac_code = OpenSSL::HMAC.digest('sha256', string_to_sign, "")
363
+ sign = Base64.encode64(hmac_code).strip
364
+ data = {timestamp: , sign: }.merge(data)
365
+ end
366
+ res = post("#{API_CUSTOM_BOT_SEND}/#{hook_id}", data)
360
367
  return nil if res.code != 200
361
368
 
362
369
  JSON.parse(res.body)
@@ -375,7 +382,7 @@ module FeishuApi
375
382
  {
376
383
  check_field: 1,
377
384
  check_mode: 1,
378
- check_list: check_list
385
+ check_list:
379
386
  }
380
387
  ]
381
388
  }
@@ -410,7 +417,7 @@ module FeishuApi
410
417
  {
411
418
  check_field: 1,
412
419
  check_mode: 1,
413
- check_list: check_list
420
+ check_list:
414
421
  }
415
422
  ]
416
423
  }
@@ -470,7 +477,7 @@ module FeishuApi
470
477
  [
471
478
  {
472
479
  tag: 'text',
473
- text: text
480
+ text:
474
481
  }
475
482
  ]
476
483
  ]
@@ -481,7 +488,7 @@ module FeishuApi
481
488
  end
482
489
 
483
490
  # 自定义机器人接口 发送卡片消息
484
- def custom_robot_send_card(title = '标题', theme = 'blue', elements = [], hook_id = '')
491
+ def custom_robot_send_card(title = '标题', theme = 'blue', elements = [], hook_id = '', secret = '')
485
492
  custom_robot_send({
486
493
  msg_type: 'interactive',
487
494
  card: {
@@ -495,9 +502,9 @@ module FeishuApi
495
502
  },
496
503
  template: theme
497
504
  },
498
- elements: elements
505
+ elements:
499
506
  }
500
- }, hook_id)
507
+ }, hook_id, secret)
501
508
  end
502
509
  end
503
510
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module FeishuApi
4
- VERSION = '0.2.0'
4
+ VERSION = '0.3.0'
5
5
  end
data/lib/feishu-api.rb CHANGED
@@ -5,6 +5,8 @@ require 'feishu-api/config'
5
5
  require 'feishu-api/api'
6
6
 
7
7
  require 'httparty'
8
+ require 'openssl'
9
+ require 'base64'
8
10
 
9
11
  module FeishuApi
10
12
  # Your code goes here...
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: feishu-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - msk
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-09-02 00:00:00.000000000 Z
11
+ date: 2023-05-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -43,7 +43,7 @@ homepage: https://github.com/ruilisi/feishu-api
43
43
  licenses:
44
44
  - MIT
45
45
  metadata:
46
- rubygems_mfa_required: 'false'
46
+ rubygems_mfa_required: 'true'
47
47
  homepage_uri: https://github.com/ruilisi/feishu-api
48
48
  source_code_uri: https://github.com/ruilisi/feishu-api.git
49
49
  changelog_uri: https://github.com/ruilisi/feishu-api/blob/master/CHANGELOG.md