feishu-rails 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: f2030f453ffa2e384f6d766656948f31f4d021c2cb96a6da5643115f09f8297f
4
+ data.tar.gz: 4eea7d97ec5ac0a7ea3b20669b64fa8af4e47bb2d2edbe96ea5a9ba87dc72d25
5
+ SHA512:
6
+ metadata.gz: b84e308a70eaf69998a4af529a128f036d9a1d643e63c1866e4c978f1d075ad247c779731b4b3b18d4dd7624fa944377cb1f7c3974c1063e53560529397c39ce
7
+ data.tar.gz: 8dbdee672500a5faf4987fdc41da32c13d2ab4b6afa5108d38b70af17087f9c07af946ea7f8ca8fa3c3db860a4c164e20b41cc8394c1a1dc4f239df6f6a98e40
data/README.md ADDED
@@ -0,0 +1,28 @@
1
+ # Feishu
2
+ Short description and motivation.
3
+
4
+ ## Usage
5
+ How to use my plugin.
6
+
7
+ ## Installation
8
+ Add this line to your application's Gemfile:
9
+
10
+ ```ruby
11
+ gem "feishu"
12
+ ```
13
+
14
+ And then execute:
15
+ ```bash
16
+ $ bundle
17
+ ```
18
+
19
+ Or install it yourself as:
20
+ ```bash
21
+ $ gem install feishu
22
+ ```
23
+
24
+ ## Contributing
25
+ Contribution directions go here.
26
+
27
+ ## License
28
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
data/Rakefile ADDED
@@ -0,0 +1,3 @@
1
+ require "bundler/setup"
2
+
3
+ require "bundler/gem_tasks"
@@ -0,0 +1,11 @@
1
+ module Feishu
2
+ class Config
3
+ class << self
4
+ attr_accessor :app_id, :app_secret, :encrypt_key
5
+
6
+ def configure
7
+ yield self
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,126 @@
1
+ module Feishu
2
+ class << self
3
+ # 定义常用的 URL
4
+ AUTH_URL = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal/"
5
+ USER_INFO = "https://open.feishu.cn/open-apis/contact/v1/user/batch_get"
6
+ GROUP_LIST = "https://open.feishu.cn/open-apis/chat/v4/list"
7
+ GROUP_INFO = "https://open.feishu.cn/open-apis/chat/v4/info"
8
+ SEND_TEXT = "https://open.feishu.cn/open-apis/message/v4/send/"
9
+ IMAGE_URL = "https://open.feishu.cn/open-apis/im/v1/images"
10
+ MESSAGE_URL = "https://open.feishu.cn/open-apis/im/v1/messages"
11
+
12
+ # 获取飞书 TOKEN 并缓存
13
+ def access_token
14
+ Rails.cache.fetch("feishu_token", expires_in: 2.hours) do
15
+ app_id = "cli_a2b7a1fa17b8d00c"
16
+ app_secret = "9FIkmECaknhRryyWCH2bngErcbbvQg4G"
17
+ res = HTTP.post(AUTH_URL, json: { app_id: app_id, app_secret: app_secret })
18
+ # res = HTTP.post(AUTH_URL, json: { app_id: Config.app_id, app_secret: Config.app_secret })
19
+ JSON.parse(res.body.readpartial)["tenant_access_token"]
20
+ end
21
+ end
22
+
23
+ # 认证成功后,后续请求都携带 TOKEN
24
+ def request
25
+ HTTP.headers(Authorization: "Bearer #{access_token}")
26
+ end
27
+
28
+ def batch_user_info(open_ids)
29
+ res = request.get(USER_INFO, params: { open_ids: open_ids })
30
+ users = JSON.parse(res.body.readpartial)
31
+
32
+ users["data"]
33
+ end
34
+
35
+ # 获取机器人所在的群列表
36
+ def group_list(page_size = 200, page = nil)
37
+ # 请求后端
38
+ res = request.get(GROUP_LIST, params: { page_size: page_size, page_token: page })
39
+ # 序列化
40
+ group_content = JSON.parse(res.body.readpartial)
41
+
42
+ group_content["data"]
43
+ end
44
+
45
+ # 获取群信息
46
+ def group_info(chat_id)
47
+ # 请求后端
48
+ res = request.get(GROUP_INFO, params: { chat_id: chat_id })
49
+ # 序列化
50
+ group_users_content = JSON.parse(res.body.readpartial)
51
+
52
+ group_users_content["data"]["members"]
53
+ end
54
+
55
+ # 获取群成员信息
56
+ # def member_list(chat_id)
57
+ # res = request.get("https://open.feishu.cn/open-apis/chat/v4/members", :params => {:chat_id=> chat_id})
58
+ # group_users_content = JSON.parse(res.body.readpartial)
59
+
60
+ # member_ids = group_users_content["data"]
61
+ # end
62
+
63
+ def upload_image(image_path)
64
+ # 读取图片
65
+ data = HTTP::FormData::File.new image_path
66
+
67
+ # 请求后端
68
+ res = request.post(IMAGE_URL, form: { image_type: "message", image: data })
69
+ ret = JSON.parse res.body.readpartial
70
+ # 返回上传后的序列号
71
+ ret["data"]["image_key"]
72
+ end
73
+
74
+ # 发送文本消息
75
+ def send_text(open_id, text)
76
+ # 请求后端
77
+ res = request.post(SEND_TEXT, json: { open_id: open_id, msg_type: "text", content: { text: text } })
78
+ # 序列化
79
+ JSON.parse(res.body.readpartial)
80
+ end
81
+
82
+ # 使用推荐的消息接口
83
+ def send_message(receive_type, receive_id, msg_type, content)
84
+ # 请求后端
85
+ res = request.post(MESSAGE_URL, params: { receive_id_type: receive_type }, json: { receive_id: receive_id, msg_type: msg_type, content: content })
86
+ # 序列化
87
+ JSON.parse(res.body.readpartial)
88
+ end
89
+
90
+ # def send_alert(chat_id)
91
+ # data = {
92
+ # "chat_id": chat_id,
93
+ # "msg_type": "post",
94
+ # "content": {
95
+ # "post": {
96
+ # "zh_cn": {
97
+ # "title": title,
98
+ # "content": [
99
+ # [
100
+ # {
101
+ # "tag": "text",
102
+ # "un_escape": True,
103
+ # "text": content
104
+ # },
105
+ # {
106
+ # "tag": "at",
107
+ # "user_id": self.user_id
108
+ #
109
+ # },
110
+ # ],
111
+ # [
112
+ # {
113
+ # "tag": "img",
114
+ # "image_key": self.image_key,
115
+ # "width": 1000,
116
+ # "height": 600
117
+ # }
118
+ # ]
119
+ # ]
120
+ # }
121
+ # }
122
+ # }
123
+ # }
124
+ # end
125
+ end
126
+ end
@@ -0,0 +1,3 @@
1
+ module Feishu
2
+ VERSION = "0.1.1"
3
+ end
@@ -0,0 +1,11 @@
1
+ require "feishu/version"
2
+ require "feishu/config"
3
+ require "feishu/connector"
4
+
5
+ module Feishu
6
+ class << self
7
+ def configure(&block)
8
+ Config.configure(&block)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :feishu do
3
+ # # Task goes here
4
+ # end
metadata ADDED
@@ -0,0 +1,66 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: feishu-rails
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - WENWU.YAN
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-03-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: use faraday send alerts to feishu robot
28
+ email:
29
+ - careline@foxmail.com
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - README.md
35
+ - Rakefile
36
+ - lib/feishu-rails.rb
37
+ - lib/feishu/config.rb
38
+ - lib/feishu/connector.rb
39
+ - lib/feishu/version.rb
40
+ - lib/tasks/feishu_tasks.rake
41
+ homepage: https://github.com/ciscolive/feishu-rails
42
+ licenses: []
43
+ metadata:
44
+ homepage_uri: https://github.com/ciscolive/feishu-rails
45
+ source_code_uri: https://github.com/ciscolive/feishu-rails
46
+ changelog_uri: https://github.com/ciscolive/feishu-rails/blob/main/README.md
47
+ post_install_message:
48
+ rdoc_options: []
49
+ require_paths:
50
+ - lib
51
+ required_ruby_version: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ required_rubygems_version: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ requirements: []
62
+ rubygems_version: 3.3.3
63
+ signing_key:
64
+ specification_version: 4
65
+ summary: 主要实现对接飞书机器人
66
+ test_files: []