fastlane-plugin-work_wechat 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: a9843c15f3662429dcf0837081ee12de51e0d095b5144890011a54839d351cd9
4
+ data.tar.gz: 6a26f5ab29d3577185e513384faaaec1f2b205694c6012227c8be63ab78679d8
5
+ SHA512:
6
+ metadata.gz: 34b20032663051d6a67bd4025b17bd4bd755aac28bf1a71c749d5378993bcb773d2530a2d39b6b9796be473a147e680f1304d0c48a3e72b702f1c50ba461480d
7
+ data.tar.gz: c636f82079e2aa7106634bfd1222e1c75fbf5c384cf3c4ad993e297feabd61ef0d13235f7a11281ce990ca09c41f132263e05649d7c266b36df6a5dcb76ce926
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2020 DevZhang <me@devorz.com>
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,52 @@
1
+ # work_wechat plugin
2
+
3
+ [![fastlane Plugin Badge](https://rawcdn.githack.com/fastlane/fastlane/master/fastlane/assets/plugin-badge.svg)](https://rubygems.org/gems/fastlane-plugin-work_wechat)
4
+
5
+ ## Getting Started
6
+
7
+ This project is a [_fastlane_](https://github.com/fastlane/fastlane) plugin. To get started with `fastlane-plugin-work_wechat`, add it to your project by running:
8
+
9
+ ```bash
10
+ fastlane add_plugin work_wechat
11
+ ```
12
+
13
+ ## About work_wechat
14
+
15
+ work wecaht webhook
16
+
17
+ **Note to author:** Add a more detailed description about this plugin here. If your plugin contains multiple actions, make sure to mention them here.
18
+
19
+ ## Example
20
+
21
+ Check out the [example `Fastfile`](fastlane/Fastfile) to see how to use this plugin. Try it by cloning the repo, running `fastlane install_plugins` and `bundle exec fastlane test`.
22
+
23
+ **Note to author:** Please set up a sample project to make it easy for users to explore what your plugin does. Provide everything that is necessary to try out the plugin in this project (including a sample Xcode/Android project if necessary)
24
+
25
+ ## Run tests for this plugin
26
+
27
+ To run both the tests, and code style validation, run
28
+
29
+ ```
30
+ rake
31
+ ```
32
+
33
+ To automatically fix many of the styling issues, use
34
+ ```
35
+ rubocop -a
36
+ ```
37
+
38
+ ## Issues and Feedback
39
+
40
+ For any other issues and feedback about this plugin, please submit it to this repository.
41
+
42
+ ## Troubleshooting
43
+
44
+ If you have trouble using plugins, check out the [Plugins Troubleshooting](https://docs.fastlane.tools/plugins/plugins-troubleshooting/) guide.
45
+
46
+ ## Using _fastlane_ Plugins
47
+
48
+ For more information about how the `fastlane` plugin system works, check out the [Plugins documentation](https://docs.fastlane.tools/plugins/create-plugin/).
49
+
50
+ ## About _fastlane_
51
+
52
+ _fastlane_ is the easiest way to automate beta deployments and releases for your iOS and Android apps. To learn more, check out [fastlane.tools](https://fastlane.tools).
@@ -0,0 +1,16 @@
1
+ require 'fastlane/plugin/work_wechat/version'
2
+
3
+ module Fastlane
4
+ module WorkWechat
5
+ # Return all .rb files inside the "actions" and "helper" directory
6
+ def self.all_classes
7
+ Dir[File.expand_path('**/{actions,helper}/*.rb', File.dirname(__FILE__))]
8
+ end
9
+ end
10
+ end
11
+
12
+ # By default we want to import all available actions and helpers
13
+ # A plugin can contain any number of actions and plugins
14
+ Fastlane::WorkWechat.all_classes.each do |current|
15
+ require current
16
+ end
@@ -0,0 +1,214 @@
1
+ require 'fastlane/action'
2
+ require_relative '../helper/work_wechat_helper'
3
+
4
+ module Fastlane
5
+ module Actions
6
+ class WorkWechatAction < Action
7
+ require 'net/http'
8
+ require 'net/https'
9
+ require 'json'
10
+
11
+ def self.run(params)
12
+ UI.message("The work_wechat plugin is working!")
13
+ webhook = params[:webhook_URL]
14
+ puts "webhook = #{webhook}"
15
+ url = URI(webhook)
16
+ http = Net::HTTP.new(url.host, url.port)
17
+ http.use_ssl = true if url.scheme == 'https'
18
+
19
+ headers = { 'Content-Type' => 'application/json' }
20
+ request = Net::HTTP::Post.new(url, headers)
21
+
22
+ if params[:markdown_content]
23
+ request.body = markdown_http_body(params)
24
+ elsif params[:image_base64]
25
+ request.body = image_http_body(params)
26
+ elsif params[:news_title]
27
+ request.body = news_http_body(params)
28
+ elsif params[:text_content]
29
+ request.body = text_http_body(params)
30
+ end
31
+ puts http.request(request).body
32
+ end
33
+
34
+ def self.text_http_body(params)
35
+ content = params[:text_content]
36
+ mentioned_list = params[:mentioned_list]
37
+ mentioned_mobile_list = params[:mentioned_mobile_list]
38
+
39
+ body = {}
40
+ body['msgtype'] = "text"
41
+
42
+ # 1、文本类型
43
+ # {
44
+ # "msgtype": "text",
45
+ # "text": {
46
+ # "content": "广州今日天气:29度,大部分多云,降雨概率:60%",
47
+ # "mentioned_list":["devzhang","@all"],
48
+ # "mentioned_mobile_list":["13800001111","@all"]
49
+ # }
50
+ # }
51
+
52
+ text = { 'content' => content }
53
+ text['mentioned_list'] = mentioned_list if mentioned_list
54
+ text['mentioned_mobile_list'] = mentioned_mobile_list if mentioned_mobile_list
55
+ body['text'] = text
56
+ body.to_json
57
+ end
58
+
59
+ def self.markdown_http_body(params)
60
+ markdown_content = params[:markdown_content]
61
+ body = {}
62
+ body['msgtype'] = "markdown"
63
+
64
+ # {
65
+ # "msgtype": "markdown",
66
+ # "markdown": {
67
+ # "content": "实时新增用户反馈<font color=\"warning\">132例</font>,请相关同事注意。\n
68
+ # >类型:<font color=\"comment\">用户反馈</font>
69
+ # >普通用户反馈:<font color=\"comment\">117例</font>
70
+ # >VIP用户反馈:<font color=\"comment\">15例</font>"
71
+ # }
72
+ # }
73
+
74
+ markdown = { 'content' => markdown_content }
75
+ body['markdown'] = markdown
76
+ body.to_json
77
+ end
78
+
79
+ def self.image_http_body(params)
80
+ image_base64 = params[:image_base64]
81
+ image_md5 = params[:image_md5]
82
+
83
+ body = {}
84
+ body['msgtype'] = "image"
85
+
86
+ # {
87
+ # "msgtype": "image",
88
+ # "image": {
89
+ # "base64": "DATA",
90
+ # "md5": "MD5"
91
+ # }
92
+ # }
93
+
94
+ image = { 'base64' => image_base64,'md5' => image_md5 }
95
+ body['image'] = image
96
+ body.to_json
97
+ end
98
+
99
+ def self.news_http_body(params)
100
+ news_title = params[:news_title]
101
+ news_description = params[:news_description]
102
+ news_url = params[:news_url]
103
+ news_picurl = params[:news_picurl]
104
+
105
+
106
+
107
+ body = {}
108
+ body['msgtype'] = "news"
109
+
110
+ # {
111
+ # "msgtype": "news",
112
+ # "news": {
113
+ # "articles" : [
114
+ # {
115
+ # "title" : "中秋节礼品领取",
116
+ # "description" : "今年中秋节公司有豪礼相送",
117
+ # "url" : "www.qq.com",
118
+ # "picurl" : "http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png"
119
+ # }
120
+ # ]
121
+ # }
122
+ # }
123
+ article = { 'title'=>news_title, 'url'=>news_url}
124
+ article['description'] = news_description if news_description
125
+ article['picurl'] = news_picurl if news_picurl
126
+ articles = [article]
127
+ body['news'] = {'articles'=>articles}
128
+ body.to_json
129
+ end
130
+
131
+ def self.description
132
+ "work wecaht webhook"
133
+ end
134
+
135
+ def self.authors
136
+ ["DevZhang"]
137
+ end
138
+
139
+ def self.return_value
140
+ # If your method provides a return value, you can describe here what it does
141
+ end
142
+
143
+ def self.details
144
+ # Optional:
145
+ "send message via work wechat server api"
146
+ end
147
+
148
+ def self.available_options
149
+ [
150
+ FastlaneCore::ConfigItem.new(key: :webhook_URL,
151
+ description: "机器人的webhook地址",
152
+ optional: false,
153
+ type: String),
154
+ FastlaneCore::ConfigItem.new(key: :text_content,
155
+ description: "文本内容,最长不超过2048个字节,必须是utf8编码",
156
+ optional: false,
157
+ type: String,
158
+ conflicting_options:[:markdown_content,:image_base64,:image_md5,:news_title,:news_description,:news_url,:news_picurl]),
159
+ FastlaneCore::ConfigItem.new(key: :text_mentioned_list,
160
+ description: "userid的列表,提醒群中的指定成员(@某个成员),@all表示提醒所有人,如果开发者获取不到userid,可以使用mentioned_mobile_list",
161
+ optional: true,
162
+ type: Array,
163
+ conflicting_options:[:markdown_content,:image_base64,:image_md5,:news_title,:news_description,:news_url,:news_picurl]),
164
+ FastlaneCore::ConfigItem.new(key: :text_mentioned_mobile_list,
165
+ description: "手机号列表,提醒手机号对应的群成员(@某个成员),@all表示提醒所有人",
166
+ optional: true,
167
+ type: Array,
168
+ conflicting_options:[:markdown_content,:image_base64,:image_md5,:news_title,:news_description,:news_url,:news_picurl]),
169
+ FastlaneCore::ConfigItem.new(key: :markdown_content,
170
+ description: "markdown内容,最长不超过4096个字节,必须是utf8编码",
171
+ optional: false,
172
+ type: String,
173
+ conflicting_options:[:text_content,:text_mentioned_list,:text_mentioned_mobile_list,:image_base64,:image_md5,:news_title,:news_description,:news_url,:news_url,:news_picurl]),
174
+ FastlaneCore::ConfigItem.new(key: :image_base64,
175
+ description: "图片内容的base64编码",
176
+ optional: false,
177
+ type: String,
178
+ conflicting_options:[:text_content,:text_mentioned_list,:text_mentioned_mobile_list,:markdown_content,:news_title,:news_description,:news_url,:news_url,:news_picurl]),
179
+ FastlaneCore::ConfigItem.new(key: :image_md5,
180
+ description: "图片内容(base64编码前)的md5值",
181
+ optional: false,
182
+ type: String,
183
+ conflicting_options:[:text_content,:text_mentioned_list,:text_mentioned_mobile_list,:markdown_content,:news_title,:news_description,:news_url,:news_url,:news_picurl]),
184
+ FastlaneCore::ConfigItem.new(key: :news_title,
185
+ description: "标题,不超过128个字节,超过会自动截断",
186
+ optional: false,
187
+ type: String,
188
+ conflicting_options:[:text_content,:text_mentioned_list,:text_mentioned_mobile_list,:markdown_content,:image_base64,:image_md5]),
189
+ FastlaneCore::ConfigItem.new(key: :news_description,
190
+ description: "描述,不超过512个字节,超过会自动截断",
191
+ optional: true,
192
+ type: String,
193
+ conflicting_options:[:text_content,:text_mentioned_list,:text_mentioned_mobile_list,:markdown_content,:image_base64,:image_md5]),
194
+ FastlaneCore::ConfigItem.new(key: :news_url,
195
+ description: "点击后跳转的链接。",
196
+ optional: false,
197
+ type: String,conflicting_options:[:text_content,:text_mentioned_list,:text_mentioned_mobile_list,:markdown_content,:image_base64,:image_md5]),
198
+ FastlaneCore::ConfigItem.new(key: :news_picurl,
199
+ description: "图文消息的图片链接,支持JPG、PNG格式,较好的效果为大图 1068*455,小图150*150。",
200
+ optional: true,
201
+ type: String,conflicting_options:[:text_content,:text_mentioned_list,:text_mentioned_mobile_list,:markdown_content,:image_base64,:image_md5])
202
+ ]
203
+ end
204
+
205
+ def self.is_supported?(platform)
206
+ # Adjust this if your plugin only works for a particular platform (iOS vs. Android, for example)
207
+ # See: https://docs.fastlane.tools/advanced/#control-configuration-by-lane-and-by-platform
208
+ #
209
+ # [:ios, :mac, :android].include?(platform)
210
+ true
211
+ end
212
+ end
213
+ end
214
+ end
@@ -0,0 +1,16 @@
1
+ require 'fastlane_core/ui/ui'
2
+
3
+ module Fastlane
4
+ UI = FastlaneCore::UI unless Fastlane.const_defined?("UI")
5
+
6
+ module Helper
7
+ class WorkWechatHelper
8
+ # class methods that you define here become available in your action
9
+ # as `Helper::WorkWechatHelper.your_method`
10
+ #
11
+ def self.show_message
12
+ UI.message("Hello from the work_wechat plugin helper!")
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,5 @@
1
+ module Fastlane
2
+ module WorkWechat
3
+ VERSION = "0.1.0"
4
+ end
5
+ end
metadata ADDED
@@ -0,0 +1,174 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fastlane-plugin-work_wechat
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - DevZhang
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-07-02 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: pry
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec_junit_formatter
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rubocop
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '='
88
+ - !ruby/object:Gem::Version
89
+ version: 0.49.1
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '='
95
+ - !ruby/object:Gem::Version
96
+ version: 0.49.1
97
+ - !ruby/object:Gem::Dependency
98
+ name: rubocop-require_tools
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: simplecov
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: fastlane
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: 2.149.1
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: 2.149.1
139
+ description:
140
+ email: me@devorz.com
141
+ executables: []
142
+ extensions: []
143
+ extra_rdoc_files: []
144
+ files:
145
+ - LICENSE
146
+ - README.md
147
+ - lib/fastlane/plugin/work_wechat.rb
148
+ - lib/fastlane/plugin/work_wechat/actions/work_wechat_action.rb
149
+ - lib/fastlane/plugin/work_wechat/helper/work_wechat_helper.rb
150
+ - lib/fastlane/plugin/work_wechat/version.rb
151
+ homepage: https://github.com/iDevOrz/fastlane-plugin-work_wechat
152
+ licenses:
153
+ - MIT
154
+ metadata: {}
155
+ post_install_message:
156
+ rdoc_options: []
157
+ require_paths:
158
+ - lib
159
+ required_ruby_version: !ruby/object:Gem::Requirement
160
+ requirements:
161
+ - - ">="
162
+ - !ruby/object:Gem::Version
163
+ version: '0'
164
+ required_rubygems_version: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - ">="
167
+ - !ruby/object:Gem::Version
168
+ version: '0'
169
+ requirements: []
170
+ rubygems_version: 3.0.3
171
+ signing_key:
172
+ specification_version: 4
173
+ summary: work wecaht webhook
174
+ test_files: []