wechat 0.12.5 → 0.13.0
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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +4 -405
- data/README-CN.md +4 -1
- data/README.md +5 -2
- data/bin/wechat +0 -9
- data/lib/action_controller/wechat_responder.rb +3 -15
- data/lib/generators/wechat/config_generator.rb +1 -1
- data/lib/generators/wechat/session_generator.rb +1 -1
- data/lib/wechat/api.rb +0 -6
- data/lib/wechat/cipher.rb +1 -1
- data/lib/wechat/concern/common.rb +0 -4
- data/lib/wechat/controller_api.rb +2 -2
- data/lib/wechat/corp_api.rb +0 -5
- data/lib/wechat/helpers.rb +1 -2
- data/lib/wechat/http_client.rb +0 -3
- data/lib/wechat/mp_api.rb +0 -8
- data/lib/wechat/responder.rb +9 -41
- data/lib/wechat/ticket/corp_jsapi_ticket.rb +0 -2
- data/lib/wechat/ticket/public_jsapi_ticket.rb +0 -2
- data/lib/wechat/token/corp_access_token.rb +0 -2
- data/lib/wechat/token/public_access_token.rb +0 -2
- data/lib/wechat.rb +23 -11
- data.tar.gz.sig +1 -2
- metadata +51 -37
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 983ca9ebf1007ad2f68e079d7ed625c59a10e78198992abf84a5b9718592ff26
|
|
4
|
+
data.tar.gz: 976751bb11aba9a0fa30674a39eaef432eb39c177a315b396d95c458c0afde45
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: aeee17ba746530fbab18470172d83df90ff995ebdfa9ec92866361bbeacda03848e11a8ea278db6544ea57774513754b2dd914e7891154ca1344a03f8c5c4288
|
|
7
|
+
data.tar.gz: c22640b41f4d4d2d2cc01b7dd3568c76d6896f976d79f3d65c2ffb9dff975cb7ed6e0463b62b1f2991b6ec80494f96e263a3d330ee5661446dec7a075e063fc7
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG.md
CHANGED
|
@@ -1,409 +1,8 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## v0.
|
|
3
|
+
## v0.13.0 (released at 3/3/2021)
|
|
4
4
|
|
|
5
|
-
*
|
|
5
|
+
* Support zeitwerk only and Rails 6+ only.
|
|
6
|
+
* Support Ruby 2.6+ only.
|
|
6
7
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
* New material_add_news API, by @zlei1 #300
|
|
10
|
-
* Support open_tag, by @xiajian2019 #299
|
|
11
|
-
|
|
12
|
-
## v0.12.3 (released at 3/15/2021)
|
|
13
|
-
|
|
14
|
-
* Fix MpApi initialize bug, by @hardywu #296
|
|
15
|
-
|
|
16
|
-
## v0.12.2 (released at 3/3/2021)
|
|
17
|
-
|
|
18
|
-
* New convert_to_userid API
|
|
19
|
-
|
|
20
|
-
## v0.12.1 (released at 28/12/2020)
|
|
21
|
-
|
|
22
|
-
* Support Ruby 3.0.
|
|
23
|
-
* Qcloud_token support.
|
|
24
|
-
* CRUD of tencent cloud DB for miniapp
|
|
25
|
-
* TCB storage API support.
|
|
26
|
-
* Set default branch to *main*.
|
|
27
|
-
|
|
28
|
-
## v0.11.11 (released at 09/13/2020)
|
|
29
|
-
|
|
30
|
-
* FIX: fix_load_controller_wechat not support MP type, by @Msms-NJ #281
|
|
31
|
-
|
|
32
|
-
## v0.11.10 (released at 09/02/2020)
|
|
33
|
-
|
|
34
|
-
* ADD: Wechat::MpApi.wxa_msg_sec_check.
|
|
35
|
-
|
|
36
|
-
## v0.11.9 (released at 04/29/2020)
|
|
37
|
-
|
|
38
|
-
* CHG: upgrade ssl_version to 1.2 by @paicha #276
|
|
39
|
-
|
|
40
|
-
## v0.11.8 (released at 03/09/2020)
|
|
41
|
-
|
|
42
|
-
* ADD: Wechat::CorpApi.news_message_send
|
|
43
|
-
* FIX: Wechat API Change material/get_material. reported by @0000sir #275
|
|
44
|
-
|
|
45
|
-
## v0.11.7 (released at 11/15/2019)
|
|
46
|
-
|
|
47
|
-
* ADD: Wechat::MpApi.subscribe_message_send. by @paicha #271
|
|
48
|
-
* FIX: FrozenError: can't modify frozen String. by @paicha #272
|
|
49
|
-
* New translatecontent support.
|
|
50
|
-
|
|
51
|
-
## v0.11.6 (released at 09/02/2019)
|
|
52
|
-
|
|
53
|
-
* Fix private method `next_migration_number` introduced at #267, by @zpdsky #270
|
|
54
|
-
* Give more clear warning about missing Rails in console. by @emtfe #268
|
|
55
|
-
|
|
56
|
-
## v0.11.5 (released at 08/30/2019)
|
|
57
|
-
|
|
58
|
-
* Add rubocop check in CI by @hophacker #267
|
|
59
|
-
* Support Rails 6 and Windows at #266
|
|
60
|
-
|
|
61
|
-
## v0.11.4 (released at 08/15/2019)
|
|
62
|
-
|
|
63
|
-
* rails 6 redirect_to use allow_other_host: true by @Chen-George-Zhen #263
|
|
64
|
-
|
|
65
|
-
## v0.11.3 (released at 07/02/2019)
|
|
66
|
-
|
|
67
|
-
* New addvoicetorecofortext and queryrecoresultfortext support.
|
|
68
|
-
* improve existing class detect by @3014zhangshuo #261
|
|
69
|
-
* new wxa_get_wxacode_unlimit API for miniapp by @paicha #260
|
|
70
|
-
|
|
71
|
-
## v0.11.2 (released at 05/08/2019)
|
|
72
|
-
|
|
73
|
-
* bugfix short_url to shorturl in wechat console tool by @yuanxinyu #259
|
|
74
|
-
* allow a message to be sent to a party (department) by @hophacker #256
|
|
75
|
-
|
|
76
|
-
## v0.11.1 (released at 03/01/2019)
|
|
77
|
-
|
|
78
|
-
* Let Message support markdown, text included; allow textcard btntxt to be omitted by @hophacker #251
|
|
79
|
-
* Enterprise account add checkin api by @hophacker #254
|
|
80
|
-
* Suggest use secret to differentiate different acces_tokens and tickets in Enterprise account by @hophacker #255
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
## v0.11.0 (released at 01/22/2019)
|
|
84
|
-
|
|
85
|
-
* Support Ruby 2.6.0 official
|
|
86
|
-
* Bump http gem to 4.0
|
|
87
|
-
* New clear quota API by @3014zhangshuo #244
|
|
88
|
-
* Wechat::Message support textcard by @hophacker #249
|
|
89
|
-
* New getusersummary and getusercumulate API #247
|
|
90
|
-
|
|
91
|
-
## v0.10.3 (released at 10/07/2018)
|
|
92
|
-
|
|
93
|
-
* Fix new share problem in iOS by @killernova #242
|
|
94
|
-
|
|
95
|
-
## v0.10.2 (released at 8/27/2018)
|
|
96
|
-
|
|
97
|
-
* Fix incompatible with Rails 5.2.1 by @chloerei #239
|
|
98
|
-
|
|
99
|
-
## v0.10.1 (released at 7/1/2018)
|
|
100
|
-
|
|
101
|
-
* Allow custom_message_send using Hash as message, previous only allow Wechat::Message. by @zuoliang0 and @fogisland #234
|
|
102
|
-
|
|
103
|
-
## v0.10.0 (released at 5/31/2018)
|
|
104
|
-
|
|
105
|
-
* Support multi wechat account at wechat_responder. by @tuliren #223
|
|
106
|
-
* Support wechat mini program apis & signature check. by @oiahoon #225
|
|
107
|
-
* Support sent template message with miniprogram. by @falm #228
|
|
108
|
-
* Fix request_content could be nil. by @paicha #229
|
|
109
|
-
|
|
110
|
-
## v0.9.0 (released at 4/15/2018)
|
|
111
|
-
|
|
112
|
-
* Support multi wechat account dynamically loading from DB. by @tuliren #222
|
|
113
|
-
* user_create API for enterprise account. #206
|
|
114
|
-
* Will ignore template_message_send error 43004 by @insub #214
|
|
115
|
-
* using template with version if the migration version available by @killernova #220
|
|
116
|
-
* Remove Deprecation oauth2_url
|
|
117
|
-
* Remove Ruby 2.2 support, add Rails 5.2 and http v3 support
|
|
118
|
-
|
|
119
|
-
## v0.8.12 (released at 9/13/2017)
|
|
120
|
-
|
|
121
|
-
* Read oauth2_state from ticket store every time to avoid invalid oauth2_state by @xiewenwei #196
|
|
122
|
-
|
|
123
|
-
## v0.8.11 (released at 7/25/2017)
|
|
124
|
-
|
|
125
|
-
* oauth2 state code not refresh at the same time of jsapi tickets refresh bug, many thanks @xiewenwei #192
|
|
126
|
-
* Add string type scene support for qrcode_create_scene. by @libuchao #191
|
|
127
|
-
|
|
128
|
-
## v0.8.10 (released at 6/19/2017)
|
|
129
|
-
|
|
130
|
-
* fix material_delete correctly.
|
|
131
|
-
|
|
132
|
-
## v0.8.9 (released at 6/18/2017)
|
|
133
|
-
|
|
134
|
-
* wechat material_delete failed to work, thanks @Victorialice report #78
|
|
135
|
-
|
|
136
|
-
## v0.8.8 (released at 5/18/2017)
|
|
137
|
-
|
|
138
|
-
* Better support multiple account. by @xiewenwei #187
|
|
139
|
-
* Allow load figaro via RAILS_ENV. by @goofansu #186
|
|
140
|
-
|
|
141
|
-
## v0.8.7 (released at 4/23/2017)
|
|
142
|
-
|
|
143
|
-
* Support new wxa_get_wxacode API for miniapp.
|
|
144
|
-
* Add InvalidCredentialError, support audio/amr, voice/speex as file and text/plain as json. by @acenqiu #184
|
|
145
|
-
|
|
146
|
-
## v0.8.6 (released at 3/17/2017)
|
|
147
|
-
|
|
148
|
-
* Support Rails 5.1 officially.
|
|
149
|
-
* make sure the formfile can be created outside. by @mechiland #181
|
|
150
|
-
|
|
151
|
-
## v0.8.5 (released at 3/14/2017)
|
|
152
|
-
|
|
153
|
-
* Support mass send API #176
|
|
154
|
-
* Support new media_hq API
|
|
155
|
-
* Support new createwxaqrcode API for miniapp
|
|
156
|
-
* Fix wechat_responder not proper injected in rails 5 API #165
|
|
157
|
-
* parse response support XML return, by @zhangbin #167
|
|
158
|
-
* WeChat only allow 8 article per one news, by @kikyous #175
|
|
159
|
-
* Store token at cookies, by @jstdoit #174
|
|
160
|
-
|
|
161
|
-
## v0.8.4 (released at 1/12/2017)
|
|
162
|
-
|
|
163
|
-
* Support Ruby 2.4.0
|
|
164
|
-
* Add support of Enterprise RedPacket API, by @zhangbin #169
|
|
165
|
-
|
|
166
|
-
## v0.8.3 (released at 11/26/2016)
|
|
167
|
-
|
|
168
|
-
* Fix wechat template key has camelCase problem, by @RyanChenDji #159
|
|
169
|
-
* Fix long time of oauth2_state bug for wechat_oauth2 methods, by @IvanChou #162
|
|
170
|
-
|
|
171
|
-
## v0.8.2 (released at 11/2/2016)
|
|
172
|
-
|
|
173
|
-
* Bug which if not using multi-account but using web login.
|
|
174
|
-
|
|
175
|
-
## v0.8.1 (released at 11/2/2016)
|
|
176
|
-
|
|
177
|
-
* After allow sub controller using wechat_api, it's possible not initialise at first time. by @IvanChou #155
|
|
178
|
-
* Support web application login scope snsapi_login.
|
|
179
|
-
* Add unionid support for public account.
|
|
180
|
-
* Remove OpenId in Enterprise OAuth2 as it's not supported by Tecent.
|
|
181
|
-
|
|
182
|
-
## v0.8.0 (released at 10/24/2016)
|
|
183
|
-
|
|
184
|
-
* Complete support multi-wechat public account. by @xiewenwei #150
|
|
185
|
-
* Support loading configure value from Figaro if application.yml exist.
|
|
186
|
-
|
|
187
|
-
## v0.7.20 (released at 8/29/2016)
|
|
188
|
-
|
|
189
|
-
* Apply opt and config together when loading controller_wechat, to simplify wechat_responder params. by @bzhang443 #147
|
|
190
|
-
|
|
191
|
-
## v0.7.19 (released at 8/25/2016)
|
|
192
|
-
|
|
193
|
-
* Enterprise account now custom_image/voice/file works now. by @zymiboxpay #145
|
|
194
|
-
* Fix timeout setting no effective since introduct HTTP. found by @hsluo #74
|
|
195
|
-
|
|
196
|
-
## v0.7.18 (released at 8/21/2016)
|
|
197
|
-
|
|
198
|
-
* Support label_location message, similar to location event, but sent by user with Label. #144
|
|
199
|
-
* Add gem signature as additional security methods.
|
|
200
|
-
|
|
201
|
-
## v0.7.17 (released at 8/18/2016)
|
|
202
|
-
|
|
203
|
-
* Allow declare wechat_api at ApplicationController, but using wechat at sub controller. #104
|
|
204
|
-
|
|
205
|
-
## v0.7.16 (released at 7/27/2016)
|
|
206
|
-
|
|
207
|
-
* FIX: consider '' in params as equal with nil, in ControllerApi#wechat_public_oauth2, by @snow #135
|
|
208
|
-
* New tag API for public account, by @pynixwang #127
|
|
209
|
-
* fix SSLv3 error by use TLSv1_client, by @IvanChou #133
|
|
210
|
-
|
|
211
|
-
## v0.7.15 (released at 7/03/2016)
|
|
212
|
-
|
|
213
|
-
* RSpec testing case on Rails 5 now.
|
|
214
|
-
* Resolve Rails 5 ActionController::Parameters issue.
|
|
215
|
-
|
|
216
|
-
## v0.7.14 (released at 5/29/2016)
|
|
217
|
-
|
|
218
|
-
* Fix when access_token failed lead ticket can not refresh problem.
|
|
219
|
-
* Default duration should be 1 hours instead of 0 seconds for wechat_oauth2.
|
|
220
|
-
* New shorturl allowing convert from long URL to short.
|
|
221
|
-
|
|
222
|
-
## v0.7.13 (released at 5/14/2016)
|
|
223
|
-
|
|
224
|
-
* Wechat.config.oauth2_cookie_duration need convert to secondes, found by @gabrieltong #111
|
|
225
|
-
|
|
226
|
-
## v0.7.12 (released at 5/12/2016)
|
|
227
|
-
|
|
228
|
-
* Fix web_userinfo wrong URL, found by @gabrieltong #110
|
|
229
|
-
|
|
230
|
-
## v0.7.11 (released at 4/18/2016)
|
|
231
|
-
|
|
232
|
-
* To cover wrong release 0.7.10, nothing change
|
|
233
|
-
|
|
234
|
-
## v0.7.10 (released at 4/18/2016) (yanked)
|
|
235
|
-
|
|
236
|
-
## v0.7.9 (released at 4/12/2016)
|
|
237
|
-
|
|
238
|
-
* wechat_oauth2 support public account now.
|
|
239
|
-
* Refresh and store state on jsapi ticket, using it on oauth2_url to more secure.
|
|
240
|
-
* Remove extra sending payload in message template send json
|
|
241
|
-
* Allow setting oauth2_cookie_duration in config
|
|
242
|
-
|
|
243
|
-
## v0.7.8 (released at 3/31/2016)
|
|
244
|
-
|
|
245
|
-
* New wechat_api, similar to wechat_responder, but without messange handle DSL, support web page only wechat application
|
|
246
|
-
* New media_uploadimg API.
|
|
247
|
-
* New file type of Message.
|
|
248
|
-
* Improved multi account support per different controller.
|
|
249
|
-
|
|
250
|
-
## v0.7.7 (released at 3/18/2016)
|
|
251
|
-
|
|
252
|
-
* New wechat_oauth2, only support enterprise account still.
|
|
253
|
-
* fix 'skip_before_action :verify_authenticity_token' bug for v5.0.0.beta3 by @vkill #97
|
|
254
|
-
* Support Rails 3.2 again after support Rails 5.0, by @guange2015 #96
|
|
255
|
-
|
|
256
|
-
## v0.7.6 (released at 3/05/2016)
|
|
257
|
-
|
|
258
|
-
* Support wechat public account conditional menu. #95
|
|
259
|
-
|
|
260
|
-
## v0.7.5 (released at 2/21/2016)
|
|
261
|
-
|
|
262
|
-
* New wechat_config_js to simplify the Wechat jsapi config.
|
|
263
|
-
* Support sent shortvideo.
|
|
264
|
-
|
|
265
|
-
## v0.7.4 (released at 1/23/2016)
|
|
266
|
-
|
|
267
|
-
* Add Redis store token/ticket support, close #76, #60
|
|
268
|
-
* Rails 5 support without deprecate warning or other not necessory call. #82
|
|
269
|
-
|
|
270
|
-
## v0.7.3 (released at 1/19/2016)
|
|
271
|
-
|
|
272
|
-
* Allow transfer_customer_service to specific account.
|
|
273
|
-
* New customservice_getonlinekflist API.
|
|
274
|
-
* session support class WechatSession no need table_exists? methods exist.
|
|
275
|
-
|
|
276
|
-
## v0.7.2 (released at 1/18/2016)
|
|
277
|
-
|
|
278
|
-
* Optional session support by @zfben #81, #88, #91
|
|
279
|
-
* Replace after_wechat_response with Rails Nofications facility, by @zfben, original issue is #79
|
|
280
|
-
* New user_batchget API. #89
|
|
281
|
-
* Support Rails 3.2 again after support Rails 5.0. by @guange2015 #87
|
|
282
|
-
* Fetch setting from RAILS_ENV first, then fetch default. by @kikyous #85
|
|
283
|
-
* Warning not support on :scan with regular expression, reason see #84
|
|
284
|
-
|
|
285
|
-
## v0.7.1 (released at 1/11/2016)
|
|
286
|
-
|
|
287
|
-
* Fix after using http, upload file function break. #78
|
|
288
|
-
* Add callback function after_wechat_response support. by @zfben #79
|
|
289
|
-
* Should using department_id instead of departmentid at enterprise api: user_simplelist/user_list.
|
|
290
|
-
|
|
291
|
-
## v0.7.0 (released at 1/1/2016)
|
|
292
|
-
|
|
293
|
-
* Using [http](https://github.com/httprb/http) instead of rest-client for performance reason. (not support upload file yet)
|
|
294
|
-
|
|
295
|
-
## v0.6.10 (released at 1/17/2016)
|
|
296
|
-
|
|
297
|
-
* Support Rails 3.2 again after support Rails 5.0. by @guange2015 #87
|
|
298
|
-
* Fetch setting from RAILS_ENV first, then fetch default. by @kikyous #85
|
|
299
|
-
* Warning not support on :scan with regular expression. by @kikyous #84
|
|
300
|
-
|
|
301
|
-
## v0.6.9 (released at 1/6/2016)
|
|
302
|
-
|
|
303
|
-
* Fix token refresh bug on multi worker. #76
|
|
304
|
-
* Rewrite the token relative code to add more storage support in future.
|
|
305
|
-
|
|
306
|
-
## v0.6.8 (released at 12/25/2015)
|
|
307
|
-
|
|
308
|
-
* Support Rails 5.0.0.beta1.
|
|
309
|
-
* English README available
|
|
310
|
-
* Fix oauth2_url calling error, fix #75
|
|
311
|
-
|
|
312
|
-
## v0.6.7 (released at 12/18/2015)
|
|
313
|
-
|
|
314
|
-
* Add timeout configuration option, close #74
|
|
315
|
-
* New getuserinfo and oauth2_url to support getting FromUserName from web page.
|
|
316
|
-
|
|
317
|
-
## v0.6.6 (released at 12/15/2015)
|
|
318
|
-
|
|
319
|
-
* Add jsapi_ticket support for Enterprise Account
|
|
320
|
-
* Default generated WechatsController < ActionController::Base, as many Rails application may having #authenticate_user or #set_current_user in ApplicationController, so easily affect the first time using experience.
|
|
321
|
-
* New syntax `on :view, with: 'VIEW_URL'` support.
|
|
322
|
-
* New command `upload_replaceparty` which combine three sub command to make uploading department easier.
|
|
323
|
-
* New command `upload_replaceuser` which combine three sub command to make uploading user easier.
|
|
324
|
-
|
|
325
|
-
## v0.6.5 (released at 11/24/2015)
|
|
326
|
-
|
|
327
|
-
* Handle 48001 error if token is expire/not valid, close #71
|
|
328
|
-
* ApiLoader will do config reading and initialize the api instead of spreading the logic.
|
|
329
|
-
|
|
330
|
-
## v0.6.4 (released at 11/16/2015)
|
|
331
|
-
|
|
332
|
-
* Command mode now display different command set based on enterprise/public account setting
|
|
333
|
-
* Move config logic in command/wechat to ApiLoader class
|
|
334
|
-
* Unsubscribe can only reply plain text 'success' #68
|
|
335
|
-
* Fix 404 qrcode download problem, by @huangxiangdan #69
|
|
336
|
-
|
|
337
|
-
## v0.6.3 (released at 11/14/2015)
|
|
338
|
-
|
|
339
|
-
* Official testing and support public encrypt mode, also fix one cipher bug, many thanks to @hlltc #67
|
|
340
|
-
* hlltc report public account FILE_BASE no longer needs, clean code #67
|
|
341
|
-
* Media command line reflect recent Tecent json schema change. #67
|
|
342
|
-
|
|
343
|
-
## v0.6.2 (released at 11/05/2015)
|
|
344
|
-
|
|
345
|
-
* Tecent report location API changed, so change wechat gems also. #64
|
|
346
|
-
|
|
347
|
-
## v0.6.1 (released at 10/20/2015)
|
|
348
|
-
|
|
349
|
-
* Handle 40001, invalid credential, access_token is invalid or not latest hint # 57
|
|
350
|
-
* Support at Rails 4.2.1 wechat can not run #58
|
|
351
|
-
|
|
352
|
-
## v0.6.0 (released at 10/08/2015)
|
|
353
|
-
|
|
354
|
-
### Scan and Batch job are BREAK CHANGE!
|
|
355
|
-
|
|
356
|
-
* Scan 2D barcode using new syntax `on :scan, with: 'BINDING_QR_CODE' ` instead of `on :event, with: 'BINDING_QR_CODE' ` in previous version #55
|
|
357
|
-
Which will fix can not using `on :event, with: "scan" ` problem
|
|
358
|
-
* Batch job using new syntax `on :batch_job, with: 'replace_user' `
|
|
359
|
-
instead of previous `on :event, with: 'replace_user' `.
|
|
360
|
-
* Click menu support new syntax `on :click, with: 'BOOK_LUNCH' `, but `on :event, with: 'BOOK_LUNCH' ` still supported. perfer `on :click` because it running faster and more nature expression.
|
|
361
|
-
* Wechat::Responder using Hash for new :client and :batch_job event, avoid time consuming Array match responder
|
|
362
|
-
* Fix refresh token not working problem under ruby 2.0.0 #54
|
|
363
|
-
* New department_update, user_batchdelete, convert_to_openid API
|
|
364
|
-
|
|
365
|
-
## v0.5.0 (released at 9/25/2015)
|
|
366
|
-
|
|
367
|
-
* Only relay on activesupport on run time, so will greatly improve wechat cli startup time
|
|
368
|
-
* Add rails generator support `rails g wechat:install`
|
|
369
|
-
* Add batch job support for enterprise account like batch create user/department, both API, callback responder and CLI
|
|
370
|
-
* Add material management API and CLI
|
|
371
|
-
* Add tag API and CLI for enterprise account
|
|
372
|
-
* Add QR code scene function for public account
|
|
373
|
-
|
|
374
|
-
## v0.4.2 (released at 9/7/2015)
|
|
375
|
-
|
|
376
|
-
* Fix wrong number of arguments at Wechat::Responder.on by using arity #47
|
|
377
|
-
* Fix can not access wechat method after using instance level context.
|
|
378
|
-
* Fix skip_verify_ssl parameter error.
|
|
379
|
-
|
|
380
|
-
## v0.4.1 (released at 9/6/2015)
|
|
381
|
-
|
|
382
|
-
* Limit news articles collection to 10, close #5
|
|
383
|
-
* Resolve the conflict with gem "responders" by @seamon #45
|
|
384
|
-
|
|
385
|
-
## v0.4.0 (released at 9/5/2015)
|
|
386
|
-
|
|
387
|
-
* Enable the verify SSL for enterprise mode by default, as security is more importent than speed, but still can switch off by configure
|
|
388
|
-
* Support scancode_push/scancode_waitmsg event.
|
|
389
|
-
* New API method can get wechat server IP list
|
|
390
|
-
* New API to query/create department/media/material
|
|
391
|
-
* Fix can not read token_file in mingw bug, which introduce at #43
|
|
392
|
-
|
|
393
|
-
## v0.3.0 (released at 8/30/2015)
|
|
394
|
-
|
|
395
|
-
* New user group management API
|
|
396
|
-
* Allow transfer to customer service on fallback. #42
|
|
397
|
-
* Read and write access_token properly using file locking, #43
|
|
398
|
-
|
|
399
|
-
## v0.2.0 (released at 8/27/2015)
|
|
400
|
-
|
|
401
|
-
* Add wechat enterprise account support
|
|
402
|
-
* Make responder execute in action context, by @lazing #15
|
|
403
|
-
* jsapi_ticket support, by @feitian124 #27
|
|
404
|
-
* Rename gems to wechat and ambitious to being #1 gems about development wechat. thanks Xiaoning transfer this gem name.
|
|
405
|
-
* Original gem `wechat-rails` author skinnyworm trasfer to Eric-Guo as maintainer
|
|
406
|
-
|
|
407
|
-
## v0.1.1
|
|
408
|
-
|
|
409
|
-
* Initial release from [wechat-rails](https://github.com/skinnyworm/wechat-rails).
|
|
8
|
+
Previous changelog see https://github.com/Eric-Guo/wechat/blob/master/CHANGELOG_OLD.md
|
data/README-CN.md
CHANGED
|
@@ -27,12 +27,16 @@ WeChat gem帮助开发者方便地在Rails环境中集成[微信公众平台](ht
|
|
|
27
27
|
|
|
28
28
|
```
|
|
29
29
|
gem install "wechat"
|
|
30
|
+
# 如果使用 Ruby 版本小于 2.6
|
|
31
|
+
# gem install wechat -v 0.12.2
|
|
30
32
|
```
|
|
31
33
|
|
|
32
34
|
或者添加下面这行到 `Gemfile`:
|
|
33
35
|
|
|
34
36
|
```
|
|
35
37
|
gem 'wechat'
|
|
38
|
+
# 如果使用 Rails 版本小于 6
|
|
39
|
+
# gem 'wechat', '~> 0.12.2'
|
|
36
40
|
```
|
|
37
41
|
|
|
38
42
|
运行下面这行代码来安装:
|
|
@@ -362,7 +366,6 @@ Wechat Public Account commands:
|
|
|
362
366
|
wechat groups # 查询所有分组
|
|
363
367
|
wechat material_get [MEDIA_ID, PATH] # 永久媒体下载
|
|
364
368
|
wechat material_add [MEDIA_TYPE, PATH] # 永久媒体上传
|
|
365
|
-
wechat material_add_news [MPNEWS_YAML_PATH] # 永久图文素材上传
|
|
366
369
|
wechat material_count # 获取永久素材总数
|
|
367
370
|
wechat material_delete [MEDIA_ID] # 删除永久素材
|
|
368
371
|
wechat material_list [TYPE, OFFSET, COUNT] # 获取永久素材列表
|
data/README.md
CHANGED
|
@@ -34,12 +34,16 @@ Use `gem install`
|
|
|
34
34
|
|
|
35
35
|
```
|
|
36
36
|
gem install "wechat"
|
|
37
|
+
# If your ruby version < 2.6
|
|
38
|
+
# gem install wechat -v 0.12.2
|
|
37
39
|
```
|
|
38
40
|
|
|
39
41
|
Or add it to your app's `Gemfile`:
|
|
40
42
|
|
|
41
43
|
```
|
|
42
44
|
gem 'wechat'
|
|
45
|
+
# If your rails version < 6.0
|
|
46
|
+
# gem 'wechat', '~> 0.12.2'
|
|
43
47
|
```
|
|
44
48
|
|
|
45
49
|
Run the following command to install it:
|
|
@@ -391,9 +395,8 @@ Wechat Public Account commands:
|
|
|
391
395
|
wechat group_delete [GROUP_ID] # 删除分组
|
|
392
396
|
wechat group_update [GROUP_ID, NEW_GROUP_NAME] # 修改分组名
|
|
393
397
|
wechat groups # 查询所有分组
|
|
394
|
-
wechat material_get [MEDIA_ID, PATH]
|
|
398
|
+
wechat material_get [MEDIA_ID, PATH] # 永久媒体下载
|
|
395
399
|
wechat material_add [MEDIA_TYPE, PATH] # 永久媒体上传
|
|
396
|
-
wechat material_add_news [MPNEWS_YAML_PATH] # 永久图文素材上传
|
|
397
400
|
wechat material_count # 获取永久素材总数
|
|
398
401
|
wechat material_delete [MEDIA_ID] # 删除永久素材
|
|
399
402
|
wechat material_list [TYPE, OFFSET, COUNT] # 获取永久素材列表
|
data/bin/wechat
CHANGED
|
@@ -6,13 +6,10 @@ $LOAD_PATH.unshift(lib) if File.directory?(lib) && !$LOAD_PATH.include?(lib)
|
|
|
6
6
|
require 'thor'
|
|
7
7
|
require 'wechat'
|
|
8
8
|
require 'json'
|
|
9
|
-
require 'active_support' # To support Rails 4.2.1, see #17936
|
|
10
|
-
require 'active_support/dependencies/autoload'
|
|
11
9
|
require 'active_support/core_ext'
|
|
12
10
|
require 'active_support/json'
|
|
13
11
|
require 'fileutils'
|
|
14
12
|
require 'yaml'
|
|
15
|
-
require 'wechat/api_loader'
|
|
16
13
|
require 'cgi'
|
|
17
14
|
|
|
18
15
|
class App < Thor
|
|
@@ -411,12 +408,6 @@ class App < Thor
|
|
|
411
408
|
puts wechat_api.material_add(type, path)
|
|
412
409
|
end
|
|
413
410
|
|
|
414
|
-
desc 'material_add_news [MPNEWS_YAML_PATH]', '永久图文素材上传'
|
|
415
|
-
def material_add_news(mpnews_yaml_path)
|
|
416
|
-
new = YAML.load(File.read(mpnews_yaml_path))
|
|
417
|
-
puts wechat_api.material_add_news(Wechat::Message.new(MsgType: 'mpnews').mpnews(new['articles']))
|
|
418
|
-
end
|
|
419
|
-
|
|
420
411
|
desc 'material_delete [MEDIA_ID]', '删除永久素材'
|
|
421
412
|
def material_delete(media_id)
|
|
422
413
|
puts wechat_api.material_delete(media_id)
|
|
@@ -45,18 +45,17 @@ module ActionController
|
|
|
45
45
|
|
|
46
46
|
access_token = opts[:access_token] || cfg.access_token
|
|
47
47
|
jsapi_ticket = opts[:jsapi_ticket] || cfg.jsapi_ticket
|
|
48
|
-
qcloud_env = opts[:qcloud_env] || cfg.qcloud_env
|
|
49
48
|
qcloud_token = opts[:qcloud_token] || cfg.qcloud_token
|
|
50
49
|
|
|
51
50
|
api_type = opts[:type] || cfg.type
|
|
52
51
|
secret = corpid.present? ? opts[:corpsecret] || cfg.corpsecret : opts[:secret] || cfg.secret
|
|
53
52
|
|
|
54
|
-
get_wechat_api(api_type, corpid, appid, secret, access_token, agentid, timeout, skip_verify_ssl, jsapi_ticket,
|
|
53
|
+
get_wechat_api(api_type, corpid, appid, secret, access_token, agentid, timeout, skip_verify_ssl, jsapi_ticket, qcloud_token, qcloud_token_lifespan)
|
|
55
54
|
end
|
|
56
55
|
|
|
57
|
-
def get_wechat_api(api_type, corpid, appid, secret, access_token, agentid, timeout, skip_verify_ssl, jsapi_ticket,
|
|
56
|
+
def get_wechat_api(api_type, corpid, appid, secret, access_token, agentid, timeout, skip_verify_ssl, jsapi_ticket, qcloud_token, qcloud_token_lifespan)
|
|
58
57
|
if api_type && api_type.to_sym == :mp
|
|
59
|
-
Wechat::MpApi.new(appid, secret, access_token, timeout, skip_verify_ssl, jsapi_ticket,
|
|
58
|
+
Wechat::MpApi.new(appid, secret, access_token, timeout, skip_verify_ssl, jsapi_ticket, qcloud_token, qcloud_token_lifespan)
|
|
60
59
|
elsif corpid.present?
|
|
61
60
|
Wechat::CorpApi.new(corpid, secret, access_token, agentid, timeout, skip_verify_ssl, jsapi_ticket)
|
|
62
61
|
else
|
|
@@ -64,15 +63,4 @@ module ActionController
|
|
|
64
63
|
end
|
|
65
64
|
end
|
|
66
65
|
end
|
|
67
|
-
|
|
68
|
-
if defined? Base
|
|
69
|
-
class << Base
|
|
70
|
-
include WechatResponder
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
if defined? API
|
|
74
|
-
class << API
|
|
75
|
-
include WechatResponder
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
66
|
end
|
data/lib/wechat/api.rb
CHANGED
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require 'wechat/api_base'
|
|
4
|
-
require 'wechat/http_client'
|
|
5
|
-
require 'wechat/token/public_access_token'
|
|
6
|
-
require 'wechat/ticket/public_jsapi_ticket'
|
|
7
|
-
require 'wechat/concern/common'
|
|
8
|
-
|
|
9
3
|
module Wechat
|
|
10
4
|
class Api < ApiBase
|
|
11
5
|
def initialize(appid, secret, token_file, timeout, skip_verify_ssl, jsapi_ticket_file)
|
data/lib/wechat/cipher.rb
CHANGED
|
@@ -152,10 +152,6 @@ module Wechat
|
|
|
152
152
|
post_file 'material/add_material', file, params: { type: type }
|
|
153
153
|
end
|
|
154
154
|
|
|
155
|
-
def material_add_news(mpnews_message)
|
|
156
|
-
post 'material/add_news', mpnews_message.to_json
|
|
157
|
-
end
|
|
158
|
-
|
|
159
155
|
def material_delete(media_id)
|
|
160
156
|
post 'material/del_material', JSON.generate(media_id: media_id)
|
|
161
157
|
end
|
|
@@ -58,7 +58,7 @@ module Wechat
|
|
|
58
58
|
cookies.signed_or_encrypted[:we_access_token] = { value: access_info['access_token'], expires: self.class.oauth2_cookie_duration.from_now }
|
|
59
59
|
yield access_info['openid'], access_info
|
|
60
60
|
else
|
|
61
|
-
|
|
61
|
+
redirect_to generate_oauth2_url(oauth2_params), allow_other_host: true
|
|
62
62
|
end
|
|
63
63
|
end
|
|
64
64
|
|
|
@@ -73,7 +73,7 @@ module Wechat
|
|
|
73
73
|
cookies.signed_or_encrypted[:we_deviceid] = { value: userinfo['DeviceId'], expires: self.class.oauth2_cookie_duration.from_now }
|
|
74
74
|
yield userinfo['UserId'], userinfo
|
|
75
75
|
else
|
|
76
|
-
|
|
76
|
+
redirect_to generate_oauth2_url(oauth2_params), allow_other_host: true
|
|
77
77
|
end
|
|
78
78
|
end
|
|
79
79
|
|
data/lib/wechat/corp_api.rb
CHANGED
data/lib/wechat/helpers.rb
CHANGED
|
@@ -34,8 +34,7 @@ module Wechat
|
|
|
34
34
|
timestamp: "#{js_hash[:timestamp]}",
|
|
35
35
|
nonceStr: "#{js_hash[:noncestr]}",
|
|
36
36
|
signature: "#{js_hash[:signature]}",
|
|
37
|
-
jsApiList: ['#{config_options[:api]
|
|
38
|
-
openTagList: ['#{config_options[:open_tags]&.join("','")}']
|
|
37
|
+
jsApiList: ['#{config_options[:api].join("','")}']
|
|
39
38
|
});
|
|
40
39
|
WECHAT_CONFIG_JS
|
|
41
40
|
javascript_tag config_js, type: 'application/javascript'
|
data/lib/wechat/http_client.rb
CHANGED
|
@@ -13,9 +13,6 @@ module Wechat
|
|
|
13
13
|
else
|
|
14
14
|
HTTP.timeout(:global, write: timeout, connect: timeout, read: timeout)
|
|
15
15
|
end
|
|
16
|
-
|
|
17
|
-
@httprb = @httprb.via(ENV['WECHAT_PROXY_URL'], ENV['WECHAT_PROXY_PORT'].to_i, ENV['WECHAT_PROXY_USERNAME'], ENV['WECHAT_PROXY_PASSWORD']) if ENV['WECHAT_PROXY_URL']
|
|
18
|
-
|
|
19
16
|
@ssl_context = OpenSSL::SSL::SSLContext.new
|
|
20
17
|
@ssl_context.ssl_version = 'TLSv1_2'
|
|
21
18
|
@ssl_context.verify_mode = OpenSSL::SSL::VERIFY_NONE if skip_verify_ssl
|
data/lib/wechat/mp_api.rb
CHANGED
|
@@ -1,13 +1,5 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require 'wechat/api_base'
|
|
4
|
-
require 'wechat/http_client'
|
|
5
|
-
require 'wechat/token/public_access_token'
|
|
6
|
-
require 'wechat/ticket/public_jsapi_ticket'
|
|
7
|
-
require 'wechat/qcloud/token'
|
|
8
|
-
require 'wechat/concern/common'
|
|
9
|
-
require 'wechat/concern/qcloud'
|
|
10
|
-
|
|
11
3
|
module Wechat
|
|
12
4
|
class MpApi < ApiBase
|
|
13
5
|
def initialize(appid, secret, token_file, timeout, skip_verify_ssl, jsapi_ticket_file, qcloud_env, qcloud_token_file, qcloud_token_lifespan)
|
data/lib/wechat/responder.rb
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
require 'English'
|
|
4
4
|
require 'rexml/document'
|
|
5
|
-
require 'wechat/signature'
|
|
6
5
|
|
|
7
6
|
module Wechat
|
|
8
7
|
module Responder
|
|
@@ -11,24 +10,9 @@ module Wechat
|
|
|
11
10
|
include Cipher
|
|
12
11
|
|
|
13
12
|
included do
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
skip_before_action :verify_authenticity_token
|
|
18
|
-
else
|
|
19
|
-
# Rails 5 API mode won't define verify_authenticity_token
|
|
20
|
-
# https://github.com/rails/rails/blob/v5.0.0.beta3/actionpack/lib/abstract_controller/callbacks.rb#L66
|
|
21
|
-
# https://github.com/rails/rails/blob/v5.0.0.beta3/activesupport/lib/active_support/callbacks.rb#L640
|
|
22
|
-
skip_before_action :verify_authenticity_token, raise: false
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
before_action :config_account, only: %i[show create]
|
|
26
|
-
before_action :verify_signature, only: %i[show create]
|
|
27
|
-
else
|
|
28
|
-
skip_before_filter :verify_authenticity_token
|
|
29
|
-
before_filter :config_account, only: %i[show create]
|
|
30
|
-
before_filter :verify_signature, only: %i[show create]
|
|
31
|
-
end
|
|
13
|
+
skip_before_action :verify_authenticity_token, raise: false
|
|
14
|
+
before_action :config_account, only: %i[show create]
|
|
15
|
+
before_action :verify_signature, only: %i[show create]
|
|
32
16
|
end
|
|
33
17
|
|
|
34
18
|
module ClassMethods
|
|
@@ -180,15 +164,9 @@ module Wechat
|
|
|
180
164
|
def show
|
|
181
165
|
if @we_corpid.present?
|
|
182
166
|
echostr, _corp_id = unpack(decrypt(Base64.decode64(params[:echostr]), @we_encoding_aes_key))
|
|
183
|
-
|
|
184
|
-
render plain: echostr
|
|
185
|
-
else
|
|
186
|
-
render text: echostr
|
|
187
|
-
end
|
|
188
|
-
elsif Rails::VERSION::MAJOR >= 4
|
|
189
|
-
render plain: params[:echostr]
|
|
167
|
+
render plain: echostr
|
|
190
168
|
else
|
|
191
|
-
render
|
|
169
|
+
render plain: params[:echostr]
|
|
192
170
|
end
|
|
193
171
|
end
|
|
194
172
|
|
|
@@ -197,11 +175,7 @@ module Wechat
|
|
|
197
175
|
response_msg = run_responder(request_msg)
|
|
198
176
|
|
|
199
177
|
if response_msg.respond_to? :to_xml
|
|
200
|
-
|
|
201
|
-
render plain: process_response(response_msg)
|
|
202
|
-
else
|
|
203
|
-
render text: process_response(response_msg)
|
|
204
|
-
end
|
|
178
|
+
render plain: process_response(response_msg)
|
|
205
179
|
else
|
|
206
180
|
head :ok, content_type: 'text/html'
|
|
207
181
|
end
|
|
@@ -248,15 +222,9 @@ module Wechat
|
|
|
248
222
|
end
|
|
249
223
|
|
|
250
224
|
data_hash = data.fetch('xml', {})
|
|
251
|
-
if
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
msg[:Event]&.downcase!
|
|
255
|
-
end
|
|
256
|
-
else
|
|
257
|
-
HashWithIndifferentAccess.new_from_hash_copying_default(data_hash).tap do |msg|
|
|
258
|
-
msg[:Event]&.downcase!
|
|
259
|
-
end
|
|
225
|
+
data_hash = data_hash.to_unsafe_hash if data_hash.instance_of?(ActionController::Parameters)
|
|
226
|
+
HashWithIndifferentAccess.new(data_hash).tap do |msg|
|
|
227
|
+
msg[:Event]&.downcase!
|
|
260
228
|
end
|
|
261
229
|
end
|
|
262
230
|
|
data/lib/wechat.rb
CHANGED
|
@@ -1,20 +1,14 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require 'zeitwerk'
|
|
4
|
+
loader = Zeitwerk::Loader.for_gem
|
|
5
|
+
loader.ignore("#{__dir__}/generators/**/*.rb")
|
|
6
|
+
loader.setup
|
|
7
|
+
|
|
3
8
|
require 'base64'
|
|
4
9
|
require 'openssl/cipher'
|
|
5
|
-
require 'wechat/api_loader'
|
|
6
|
-
require 'wechat/api'
|
|
7
|
-
require 'wechat/mp_api'
|
|
8
|
-
require 'wechat/corp_api'
|
|
9
|
-
require 'wechat/helpers'
|
|
10
|
-
require 'action_controller/wechat_responder'
|
|
11
10
|
|
|
12
11
|
module Wechat
|
|
13
|
-
autoload :Message, 'wechat/message'
|
|
14
|
-
autoload :Responder, 'wechat/responder'
|
|
15
|
-
autoload :Cipher, 'wechat/cipher'
|
|
16
|
-
autoload :ControllerApi, 'wechat/controller_api'
|
|
17
|
-
|
|
18
12
|
class AccessTokenExpiredError < StandardError; end
|
|
19
13
|
|
|
20
14
|
class InvalidCredentialError < StandardError; end
|
|
@@ -55,3 +49,21 @@ module Wechat
|
|
|
55
49
|
end
|
|
56
50
|
|
|
57
51
|
ActionView::Base.include Wechat::Helpers if defined? ActionView::Base
|
|
52
|
+
require 'action_controller/wechat_responder' # To make wechat_api and wechat_responder available
|
|
53
|
+
|
|
54
|
+
module ActionController
|
|
55
|
+
if defined? Base
|
|
56
|
+
ActiveSupport.on_load(:action_controller_base) do
|
|
57
|
+
class << Base
|
|
58
|
+
include WechatResponder
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
if defined? API
|
|
63
|
+
ActiveSupport.on_load(:action_controller_api) do
|
|
64
|
+
class << API
|
|
65
|
+
include WechatResponder
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
data.tar.gz.sig
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
��֟�z���fY�\�6��<{P�F��7Fb !���-���!���}?�KϹ���9VC���=�R����zY�
|
|
1
|
+
;�2"pV�ε�G�7W��7T������ץ'+%��x��!9��%�}[����sVl�:c>m�n>j1y���<*�L^�Qw��jť�_��xY��|�6��g�2�h]T$<s�����'���#'��u��*��=[�3�dP�D�H#�0�����23U�e&�r�������C[Z�Qh�ς=�B���\�q�[�dO�z� �c�QgsY��dac�4t¿l���*���.�µ�e0��땚-ٕ4\3�2�c�s�L�6�&�O]�?���!vA~<���4�^$�Ϸ�����4���o��̹����n߉����5͖����K'�ڎ/@������U�b��j�ғ#�/RL�Jvs҃&�F m'
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: wechat
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.13.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Skinnyworm
|
|
@@ -11,31 +11,31 @@ bindir: bin
|
|
|
11
11
|
cert_chain:
|
|
12
12
|
- |
|
|
13
13
|
-----BEGIN CERTIFICATE-----
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
14
|
+
MIIEQDCCAqigAwIBAgIBATANBgkqhkiG9w0BAQsFADAlMSMwIQYDVQQDDBplcmlj
|
|
15
|
+
Lmd1b2N6L0RDPWdtYWlsL0RDPWNvbTAeFw0yMDA5MDIwNDUzMjFaFw0yMTA5MDIw
|
|
16
|
+
NDUzMjFaMCUxIzAhBgNVBAMMGmVyaWMuZ3VvY3ovREM9Z21haWwvREM9Y29tMIIB
|
|
17
|
+
ojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAwSfWr5RlUBlv9OuNgmxjPwhU
|
|
18
|
+
7eoT/m7K5h0PzUaue+dtno4WqjodoCPHF6r9hh8Ys0h1VAPu3sobH2gNaL18M0CY
|
|
19
|
+
bmq+ik6LgH5tX2E6c2BmhMuURt2y1YvIwvx0dDOlEXll9J8ZVqGyo3Rm9AIblA3/
|
|
20
|
+
w/V5VJGCj3XY6iipNkHHDlSWSYeD2mNr0wJW8EAUFFcyRddpotxR9Es8JwUpXdj8
|
|
21
|
+
Bc5a/OWxKvzqLVlu76zYRYuZ41+3gWNxYF9OPnp55sNtsboGh5LJSdXZOs5+gMw9
|
|
22
|
+
gEW/KsP4GSMlqBT7SQEO5EH3qjp3aatHaMT8Fq9h3AnNESQMubMWtlPqEYyrYkli
|
|
23
|
+
wr8A8SGiX3rCkNG0cc4zVsagtXm4csbSeaIjLV57LA2sKngI4/kw55UYlloAtGPh
|
|
24
|
+
qNEqsPLbN/RkyS1zQjf14mQBpBt3SdxnT7YDSPIYiAPTtLuThcy3Flgh6cDX1RH7
|
|
25
|
+
FQPZJzQ7pSb/3Edj+VBaYhpo+y4ySLxx9DOLfm6lAgMBAAGjezB5MAkGA1UdEwQC
|
|
26
|
+
MAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBRWBfZurpq8AmvpfBq7eSA0ivhotDAf
|
|
27
|
+
BgNVHREEGDAWgRRlcmljLmd1b2N6QGdtYWlsLmNvbTAfBgNVHRIEGDAWgRRlcmlj
|
|
28
|
+
Lmd1b2N6QGdtYWlsLmNvbTANBgkqhkiG9w0BAQsFAAOCAYEAJ1tLpEqCXma9fFeU
|
|
29
|
+
l6N4tEDrwYVxdbkXgOScUZBsagNlEM9vvskygivKu8AV8ffdtsg9OAuhdfAjPjX+
|
|
30
|
+
GvGnmuoweHFTsIrOhNryqFDgvkufBczmFLOskjRuzt4NoBNgge8+xoNo+N9o/0jz
|
|
31
|
+
GZi69Dth2i92rffuEzyFbfA9xzkjL+uSqJRJVDP5UbIWGnQ99M4GfplJZWRkmoX9
|
|
32
|
+
5Ek/ZVhzEz6kdZuZErloYKqjWWvFHUFAYmJd3fqKpb468yTIaL4bl4aUl2+xLdyK
|
|
33
|
+
fPI/ZWGy2uNjffzbrhJ+Ti6qAdubkJoMIqrfbrFV1ew2Bxkp/93etXVNjAgHNmu1
|
|
34
|
+
o3VAf3sbhnj33jAri7JYx/1MhAcJXlvpKxX9QnYouxU/RgzBF7oqcT0dJ2jWUnAI
|
|
35
|
+
spvOK5/LPXWX6ZGc2SR8SH/s7ftYH2EkeM1VUbtemow08NdgCwJ4IG+fRQ9dcrJ+
|
|
36
|
+
L9TbpLHvVrCe1w8duMqNeUmqj+M1iC/5Zst2vIe14QcOTuAh
|
|
37
37
|
-----END CERTIFICATE-----
|
|
38
|
-
date:
|
|
38
|
+
date: 2021-03-03 00:00:00.000000000 Z
|
|
39
39
|
dependencies:
|
|
40
40
|
- !ruby/object:Gem::Dependency
|
|
41
41
|
name: activesupport
|
|
@@ -43,7 +43,7 @@ dependencies:
|
|
|
43
43
|
requirements:
|
|
44
44
|
- - ">="
|
|
45
45
|
- !ruby/object:Gem::Version
|
|
46
|
-
version: '
|
|
46
|
+
version: '6.0'
|
|
47
47
|
- - "<"
|
|
48
48
|
- !ruby/object:Gem::Version
|
|
49
49
|
version: '7'
|
|
@@ -53,7 +53,7 @@ dependencies:
|
|
|
53
53
|
requirements:
|
|
54
54
|
- - ">="
|
|
55
55
|
- !ruby/object:Gem::Version
|
|
56
|
-
version: '
|
|
56
|
+
version: '6.0'
|
|
57
57
|
- - "<"
|
|
58
58
|
- !ruby/object:Gem::Version
|
|
59
59
|
version: '7'
|
|
@@ -66,7 +66,7 @@ dependencies:
|
|
|
66
66
|
version: 1.0.4
|
|
67
67
|
- - "<"
|
|
68
68
|
- !ruby/object:Gem::Version
|
|
69
|
-
version: '
|
|
69
|
+
version: '5'
|
|
70
70
|
type: :runtime
|
|
71
71
|
prerelease: false
|
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -76,7 +76,7 @@ dependencies:
|
|
|
76
76
|
version: 1.0.4
|
|
77
77
|
- - "<"
|
|
78
78
|
- !ruby/object:Gem::Version
|
|
79
|
-
version: '
|
|
79
|
+
version: '5'
|
|
80
80
|
- !ruby/object:Gem::Dependency
|
|
81
81
|
name: nokogiri
|
|
82
82
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -119,48 +119,62 @@ dependencies:
|
|
|
119
119
|
- - ">="
|
|
120
120
|
- !ruby/object:Gem::Version
|
|
121
121
|
version: '0'
|
|
122
|
+
- !ruby/object:Gem::Dependency
|
|
123
|
+
name: zeitwerk
|
|
124
|
+
requirement: !ruby/object:Gem::Requirement
|
|
125
|
+
requirements:
|
|
126
|
+
- - "~>"
|
|
127
|
+
- !ruby/object:Gem::Version
|
|
128
|
+
version: '2.4'
|
|
129
|
+
type: :runtime
|
|
130
|
+
prerelease: false
|
|
131
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
132
|
+
requirements:
|
|
133
|
+
- - "~>"
|
|
134
|
+
- !ruby/object:Gem::Version
|
|
135
|
+
version: '2.4'
|
|
122
136
|
- !ruby/object:Gem::Dependency
|
|
123
137
|
name: rubocop
|
|
124
138
|
requirement: !ruby/object:Gem::Requirement
|
|
125
139
|
requirements:
|
|
126
140
|
- - "~>"
|
|
127
141
|
- !ruby/object:Gem::Version
|
|
128
|
-
version: '1.
|
|
142
|
+
version: '1.9'
|
|
129
143
|
type: :development
|
|
130
144
|
prerelease: false
|
|
131
145
|
version_requirements: !ruby/object:Gem::Requirement
|
|
132
146
|
requirements:
|
|
133
147
|
- - "~>"
|
|
134
148
|
- !ruby/object:Gem::Version
|
|
135
|
-
version: '1.
|
|
149
|
+
version: '1.9'
|
|
136
150
|
- !ruby/object:Gem::Dependency
|
|
137
151
|
name: rails
|
|
138
152
|
requirement: !ruby/object:Gem::Requirement
|
|
139
153
|
requirements:
|
|
140
154
|
- - ">="
|
|
141
155
|
- !ruby/object:Gem::Version
|
|
142
|
-
version: '
|
|
156
|
+
version: '6.0'
|
|
143
157
|
type: :development
|
|
144
158
|
prerelease: false
|
|
145
159
|
version_requirements: !ruby/object:Gem::Requirement
|
|
146
160
|
requirements:
|
|
147
161
|
- - ">="
|
|
148
162
|
- !ruby/object:Gem::Version
|
|
149
|
-
version: '
|
|
163
|
+
version: '6.0'
|
|
150
164
|
- !ruby/object:Gem::Dependency
|
|
151
165
|
name: rspec-rails
|
|
152
166
|
requirement: !ruby/object:Gem::Requirement
|
|
153
167
|
requirements:
|
|
154
168
|
- - "~>"
|
|
155
169
|
- !ruby/object:Gem::Version
|
|
156
|
-
version: '
|
|
170
|
+
version: '4.0'
|
|
157
171
|
type: :development
|
|
158
172
|
prerelease: false
|
|
159
173
|
version_requirements: !ruby/object:Gem::Requirement
|
|
160
174
|
requirements:
|
|
161
175
|
- - "~>"
|
|
162
176
|
- !ruby/object:Gem::Version
|
|
163
|
-
version: '
|
|
177
|
+
version: '4.0'
|
|
164
178
|
- !ruby/object:Gem::Dependency
|
|
165
179
|
name: sqlite3
|
|
166
180
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -237,14 +251,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
237
251
|
requirements:
|
|
238
252
|
- - ">="
|
|
239
253
|
- !ruby/object:Gem::Version
|
|
240
|
-
version: '2.
|
|
254
|
+
version: '2.6'
|
|
241
255
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
242
256
|
requirements:
|
|
243
257
|
- - ">="
|
|
244
258
|
- !ruby/object:Gem::Version
|
|
245
259
|
version: '0'
|
|
246
260
|
requirements: []
|
|
247
|
-
rubygems_version: 3.
|
|
261
|
+
rubygems_version: 3.2.12
|
|
248
262
|
signing_key:
|
|
249
263
|
specification_version: 4
|
|
250
264
|
summary: DSL for wechat message handling and API
|
metadata.gz.sig
CHANGED
|
Binary file
|