wechat 0.11.0 → 0.11.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/CHANGELOG.md +7 -0
- data/README-CN.md +32 -19
- data/README.md +30 -15
- data/lib/generators/wechat/templates/config/initializers/wechat_redis_store.rb +2 -2
- data/lib/wechat/corp_api.rb +9 -0
- data/lib/wechat/message.rb +13 -5
- metadata +6 -6
- 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: 390ca71e91a479909b212f09bc2260abbbe17e1d0ac85475952721f3cf7e70d4
|
4
|
+
data.tar.gz: 48e3da1f67e2f6362908b3d0e47e01881bfd122aafcaa50066c64e2a63ad2801
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '0298c6dfc1d93e2723a5b4521150dc6f0d7753d7518db290297459a7db6d085ac0c175810a33cf8ea18b6f59c78862a4bb7b9a2d9366ca40978026449762959b'
|
7
|
+
data.tar.gz: 5e16496298bdd8495209e3542345e1faa9c5cc4f476b7d6a5452753fcd505db0ac3ee01cbc8c058effb004c776219701d9a7e9a643d1924ea597572c9a339063
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## v0.11.1 (released at 03/01/2019)
|
4
|
+
|
5
|
+
* Let Message support markdown, text included; allow textcard btntxt to be omitted by @hophacker #251
|
6
|
+
* Enterprise account add checkin api by @hophacker #254
|
7
|
+
* Suggest use secret to differentiate different acces_tokens and tickets in Enterprise account by @hophacker #255
|
8
|
+
|
9
|
+
|
3
10
|
## v0.11.0 (released at 01/22/2019)
|
4
11
|
|
5
12
|
* Support Ruby 2.6.0 official
|
data/README-CN.md
CHANGED
@@ -3,13 +3,13 @@ WeChat [![Gem Version](https://badge.fury.io/rb/wechat.svg)](https://rubygems.or
|
|
3
3
|
|
4
4
|
[![Join the chat](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/Eric-Guo/wechat?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
5
5
|
|
6
|
-
WeChat gem
|
6
|
+
WeChat gem帮助开发者方便地在Rails环境中集成[微信公众平台](https://mp.weixin.qq.com/)和[企业微信](https://qy.weixin.qq.com),包括功能:
|
7
7
|
|
8
|
-
-
|
9
|
-
- [
|
8
|
+
- 微信公众平台/企业微信[发送消息](http://qydev.weixin.qq.com/wiki/index.php?title=%E5%8F%91%E9%80%81%E6%B6%88%E6%81%AF)API(命令行和Web环境都可以使用)
|
9
|
+
- [接收消息](http://qydev.weixin.qq.com/wiki/index.php?title=%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%E4%B8%8E%E4%BA%8B%E4%BB%B6)(必须运行Web服务器)
|
10
10
|
- [微信JS-SDK](http://qydev.weixin.qq.com/wiki/index.php?title=%E5%BE%AE%E4%BF%A1JS%E6%8E%A5%E5%8F%A3) config接口注入权限验证
|
11
11
|
- OAuth 2.0认证机制
|
12
|
-
-
|
12
|
+
- 接收消息会话(session)记录机制(可选)
|
13
13
|
|
14
14
|
命令行工具`wechat`可以调用各种无需web环境的API。同时也提供了Rails Controller的responder DSL, 可以帮助开发者方便地在Rails应用中集成微信的消息处理,包括主动推送的和被动响应的消息。
|
15
15
|
|
@@ -107,7 +107,7 @@ access_token: "C:/Users/[user_name]/wechat_access_token"
|
|
107
107
|
#### Rails 全局配置
|
108
108
|
Rails应用程序中,需要将配置文件放在`config/wechat.yml`,可以为不同environment创建不同的配置。
|
109
109
|
|
110
|
-
|
110
|
+
微信公众平台配置示例:
|
111
111
|
|
112
112
|
```
|
113
113
|
default: &default
|
@@ -133,7 +133,7 @@ test:
|
|
133
133
|
<<: *default
|
134
134
|
```
|
135
135
|
|
136
|
-
|
136
|
+
微信公众平台可选安全模式(加密模式),通过添加如下配置可开启加密模式。
|
137
137
|
|
138
138
|
```
|
139
139
|
default: &default
|
@@ -141,7 +141,7 @@ default: &default
|
|
141
141
|
encoding_aes_key: "my_encoding_aes_key"
|
142
142
|
```
|
143
143
|
|
144
|
-
|
144
|
+
企业微信配置下必须使用加密模式,其中token和encoding_aes_key可以从企业号管理界面的应用中心->某个应用->模式选择,选择回调模式后获得。
|
145
145
|
|
146
146
|
```
|
147
147
|
default: &default
|
@@ -192,6 +192,19 @@ test:
|
|
192
192
|
# secret: "my_secret"
|
193
193
|
```
|
194
194
|
|
195
|
+
支持 微信公众平台/企业微信 多账号的注意点(例如,增加账号`wx2`):
|
196
|
+
|
197
|
+
* 配置文件可增加多个微信公众平台(企业微信)配置,用法类似Rails中`config/database.yml`多数据库配置的处理。`development`, `test`, `production`是默认账号的配置段,要想增加账号`wx2`,你需要增加配置段`wx2_development`, `wx2_test`, `wx2_production`。
|
198
|
+
|
199
|
+
* 声明账号`wx2`的`wechat_responder`:
|
200
|
+
```ruby
|
201
|
+
wechat_responder account: :wx2
|
202
|
+
```
|
203
|
+
|
204
|
+
* `Wechat.api(:wx2)` 表示使用账号`wx2`的Wechat api,而`Wechat.api`或`Wechat.api(:default)`则表示默认账号的wechat api。
|
205
|
+
|
206
|
+
* 在wechat命令行中,通过增加可选参数`-a, [--account=ACCOUNT]`来表示使用其他账号,例如`wechat users -a wx2`表示列举`wx2`这个账号的粉丝列表
|
207
|
+
|
195
208
|
进一步的多账号支持参见[PR 150](https://github.com/Eric-Guo/wechat/pull/150)。
|
196
209
|
|
197
210
|
#### 数据库微信账户配置
|
@@ -298,7 +311,7 @@ class CartController < ActionController::Base
|
|
298
311
|
end
|
299
312
|
```
|
300
313
|
|
301
|
-
|
314
|
+
企业微信可使用如下代码取得企业用户的相关信息。
|
302
315
|
|
303
316
|
```ruby
|
304
317
|
class WechatsController < ActionController::Base
|
@@ -326,9 +339,9 @@ wechat gems 内部不会检查权限。但因公众号类型不同,和微信
|
|
326
339
|
|
327
340
|
## 使用命令行
|
328
341
|
|
329
|
-
|
342
|
+
根据企业微信和微信公众平台配置不同,wechat提供了的命令行命令。
|
330
343
|
|
331
|
-
####
|
344
|
+
#### 微信公众平台命令行
|
332
345
|
|
333
346
|
```
|
334
347
|
$ wechat
|
@@ -385,11 +398,11 @@ Wechat Public Account commands:
|
|
385
398
|
wechat wxacode_download [WXA_CODE_PIC_PATH, PATH, WIDTH] # 下载小程序码
|
386
399
|
```
|
387
400
|
|
388
|
-
####
|
401
|
+
#### 企业微信命令行
|
389
402
|
```
|
390
403
|
$ wechat
|
391
404
|
Wechat Enterprise Account commands:
|
392
|
-
wechat agent [AGENT_ID] #
|
405
|
+
wechat agent [AGENT_ID] # 获取企业微信应用详情
|
393
406
|
wechat agent_list # 获取应用概况列表
|
394
407
|
wechat batch_job_result [JOB_ID] # 获取异步任务结果
|
395
408
|
wechat batch_replaceparty [BATCH_PARTY_CSV_MEDIA_ID] # 全量覆盖部门
|
@@ -595,7 +608,7 @@ wechat.template_message_send Wechat::Message.to(openid).template(template['templ
|
|
595
608
|
|
596
609
|
## wechat_api - Rails Controller Wechat API
|
597
610
|
|
598
|
-
虽然用户可以随时通过`Wechat.api`在任意代码中访问wechat的API功能,但是更推荐的做法是仅在controller中,通过引入`wechat_api`,使用`wechat`调用API
|
611
|
+
虽然用户可以随时通过`Wechat.api`在任意代码中访问wechat的API功能,但是更推荐的做法是仅在controller中,通过引入`wechat_api`,使用`wechat`调用API功能,不仅因为这样是支持多个微信公众平台账号的必然要求,而且也避免了在模型层内过多引入微信相关代码。
|
599
612
|
|
600
613
|
```ruby
|
601
614
|
class WechatReportsController < ApplicationController
|
@@ -650,12 +663,12 @@ class WechatsController < ActionController::Base
|
|
650
663
|
request.reply.text "User #{request[:FromUserName]} subscribe now"
|
651
664
|
end
|
652
665
|
|
653
|
-
#
|
666
|
+
# 公众平台收到未关注用户扫描qrscene_xxxxxx二维码时。注意此次扫描事件将不再引发上条的用户加关注事件
|
654
667
|
on :scan, with: 'qrscene_xxxxxx' do |request, ticket|
|
655
668
|
request.reply.text "Unsubscribe user #{request[:FromUserName]} Ticket #{ticket}"
|
656
669
|
end
|
657
670
|
|
658
|
-
#
|
671
|
+
# 公众平台收到已关注用户扫描创建二维码的scene_id事件时
|
659
672
|
on :scan, with: 'scene_id' do |request, ticket|
|
660
673
|
request.reply.text "Subscribe user #{request[:FromUserName]} Ticket #{ticket}"
|
661
674
|
end
|
@@ -667,12 +680,12 @@ class WechatsController < ActionController::Base
|
|
667
680
|
end
|
668
681
|
end
|
669
682
|
|
670
|
-
#
|
683
|
+
# 企业微信收到EventKey 为二维码扫描结果事件时
|
671
684
|
on :scan, with: 'BINDING_QR_CODE' do |request, scan_result, scan_type|
|
672
685
|
request.reply.text "User #{request[:FromUserName]} ScanResult #{scan_result} ScanType #{scan_type}"
|
673
686
|
end
|
674
687
|
|
675
|
-
#
|
688
|
+
# 企业微信收到EventKey 为CODE 39码扫描结果事件时
|
676
689
|
on :scan, with: 'BINDING_BARCODE' do |message, scan_result|
|
677
690
|
if scan_result.start_with? 'CODE_39,'
|
678
691
|
message.reply.text "User: #{message[:FromUserName]} scan barcode, result is #{scan_result.split(',')[1]}"
|
@@ -812,6 +825,6 @@ end
|
|
812
825
|
|
813
826
|
## 已知问题
|
814
827
|
|
815
|
-
*
|
816
|
-
*
|
828
|
+
* 企业微信接受菜单消息时,Wechat腾讯服务器无法解析部分域名,请使用IP绑定回调URL,用户的普通消息目前不受影响。
|
829
|
+
* 企业微信全量覆盖成员使用的csv通讯录格式,直接将下载的模板导入[是不工作的](http://qydev.weixin.qq.com/qa/index.php?qa=13978),必须使用Excel打开,然后另存为csv格式才会变成合法格式。
|
817
830
|
* 如果使用nginx+unicron部署方案,并且使用了https,必须设置`trusted_domain_fullname`为https,否则会导致JS-SDK签名失效。
|
data/README.md
CHANGED
@@ -5,28 +5,28 @@ WeChat [![Gem Version](https://badge.fury.io/rb/wechat.svg)](https://rubygems.or
|
|
5
5
|
|
6
6
|
[中文文档 Chinese document](/README-CN.md)
|
7
7
|
|
8
|
-
[Wechat](http://www.wechat.com/) is a
|
8
|
+
[Wechat](http://www.wechat.com/) is a Chinese multi-purpose messaging, social media and mobile payment app developed by Tencent. It was first released in 2011, and by 2018 it was one of the world's largest standalone mobile apps by monthly active users, with over 1 billion monthly active users (902 million daily active users). (According to [wiki](https://en.wikipedia.org/wiki/WeChat))
|
9
9
|
|
10
|
-
WeChat gem
|
10
|
+
WeChat gem helps Rails developers integrate [WeChat Official Accounts Platform](https://mp.weixin.qq.com/) and [Wechat Enterprise](https://qy.weixin.qq.com) easily, including features:
|
11
11
|
|
12
|
-
- [Sending message](http://qydev.weixin.qq.com/wiki/index.php?title=%E5%8F%91%E9%80%81%E6%B6%88%E6%81%AF) API(
|
13
|
-
- [Receiving message](http://qydev.weixin.qq.com/wiki/index.php?title=%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%E4%B8%8E%E4%BA%8B%E4%BB%B6)(
|
12
|
+
- [Sending message](http://qydev.weixin.qq.com/wiki/index.php?title=%E5%8F%91%E9%80%81%E6%B6%88%E6%81%AF) API(can be both accessed via console or rails server)
|
13
|
+
- [Receiving message](http://qydev.weixin.qq.com/wiki/index.php?title=%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%E4%B8%8E%E4%BA%8B%E4%BB%B6)(rails server is required to be running)
|
14
14
|
- [Wechat JS-SDK](http://qydev.weixin.qq.com/wiki/index.php?title=%E5%BE%AE%E4%BF%A1JS%E6%8E%A5%E5%8F%A3) config signature
|
15
15
|
- OAuth 2.0 authentication
|
16
16
|
- Record session when receiving message from user (Optional)
|
17
17
|
|
18
18
|
|
19
|
-
`wechat` command shares the same API in console, so you can
|
19
|
+
`wechat` command shares the same API in console, so you can interact with wechat server quickly without starting up web environment/code.
|
20
20
|
|
21
|
-
A responder DSL can be used in Rails controller,
|
21
|
+
A responder DSL can be used in Rails controller, which gives an event based interface to handle messages sent by end users.
|
22
22
|
|
23
|
-
Wechat
|
23
|
+
If Wechat OAuth 2.0 is required by your app, [omniauth-wechat-oauth2](https://github.com/skinnyworm/omniauth-wechat-oauth2) is recommended in order to apply [devise authentication](https://github.com/plataformatec/devise).
|
24
24
|
|
25
|
-
|
25
|
+
If tencent's [weui](https://github.com/weui/weui) UI style is adoped in your project, gem [weui-rails](https://github.com/Eric-Guo/weui-rails) is available for you.
|
26
26
|
|
27
|
-
For web page only wechat application, please use [`wechat_api`](#wechat_api---rails-controller-wechat-api), which only contains web
|
27
|
+
For web page only wechat application, please use [`wechat_api`](#wechat_api---rails-controller-wechat-api), which only contains web features, compared with traditional message type [`wechat_responder`](#wechat_responder---rails-responder-controller-dsl).
|
28
28
|
|
29
|
-
There is a more complete [wechat-starter](https://github.com/goofansu/wechat-starter) demo available, which
|
29
|
+
There is a more complete [wechat-starter](https://github.com/goofansu/wechat-starter) demo available, which futher includes the payment SDK feature.
|
30
30
|
|
31
31
|
## Installation
|
32
32
|
|
@@ -54,7 +54,7 @@ Run the generator:
|
|
54
54
|
rails generate wechat:install
|
55
55
|
```
|
56
56
|
|
57
|
-
`rails g wechat:install` will
|
57
|
+
`rails g wechat:install` will generate the initial `wechat.yml` configuration file, including an sample wechat controller and corresponding routes.
|
58
58
|
|
59
59
|
Enable session record:
|
60
60
|
|
@@ -63,7 +63,7 @@ rails g wechat:session
|
|
63
63
|
rake db:migrate
|
64
64
|
```
|
65
65
|
|
66
|
-
Enabling session will generate two files in Rails folder, you can add more columns to *wechat_session* table and add declaration to link to users table, it's also possible to store data directly in **hash_store**.
|
66
|
+
Enabling session will generate two files in Rails folder, you can add more columns to *wechat_session* table and add declaration to link to users table, it's also possible to store data directly in **hash_store**. If you are using PostgreSQL, using [hstore](http://guides.rubyonrails.org/active_record_postgresql.html#hstore)/json maybe better, but the best way is to add a dedicated column to record the data (the Rails way).
|
67
67
|
|
68
68
|
Using Redis to store wechat token and ticket:
|
69
69
|
|
@@ -71,7 +71,8 @@ Using Redis to store wechat token and ticket:
|
|
71
71
|
rails g wechat:redis_store
|
72
72
|
```
|
73
73
|
|
74
|
-
|
74
|
+
|
75
|
+
Redis storage supports Rails application running in multiple servers. It is recommended to use default file storage if there is only one single server. Besides that, `wechat` command won't read token/ticket stored in Redis.
|
75
76
|
|
76
77
|
Enable database wechat configurations:
|
77
78
|
|
@@ -94,7 +95,7 @@ How to setup appid/corpid and secret see below section.
|
|
94
95
|
|
95
96
|
#### Configure for command line
|
96
97
|
|
97
|
-
To use `wechat` command
|
98
|
+
To use standalone `wechat` command, you need to create configuration file `~/.wechat.yml` and include content below for public account. The `access_token` will be written to file `/var/tmp/wechat_access_token`.
|
98
99
|
|
99
100
|
```
|
100
101
|
appid: "my_appid"
|
@@ -205,7 +206,21 @@ test:
|
|
205
206
|
# secret: "my_secret"
|
206
207
|
```
|
207
208
|
|
208
|
-
|
209
|
+
Notes about supporting multiple accounts of `WeChat Official Accounts Platform` / `WeChat Enterprise` (for example, adding account `wx2`):
|
210
|
+
|
211
|
+
* Configuration for multiple accounts is similar to multi-database configuration in `config/database.yml`,
|
212
|
+
where `development`, `test`, `production` segments are the default configuration, one needs to add `wx2_development`, `wx2_test`, `wx2_production` in order to add additional account named `wx2`.
|
213
|
+
|
214
|
+
* Declaration of additional `wechat_responder`:
|
215
|
+
```ruby
|
216
|
+
wechat_responder account: :wx2
|
217
|
+
```
|
218
|
+
|
219
|
+
* Use `Wechat.api` or `Wechat.api(:default)` to represent the default wechat api. Use `Wechat.api(:wx2)` to call for wechat api of account `wx2`.
|
220
|
+
|
221
|
+
* When using `Wechat command line`, one can switch to another wechat account by adding optional parameters `-a ACCOUNT [--account=ACCOUNT]`.
|
222
|
+
|
223
|
+
For details about supporting multiple accounts, please check [PR 150](https://github.com/Eric-Guo/wechat/pull/150)
|
209
224
|
|
210
225
|
For wechat mini program, can specified by the item `type`:
|
211
226
|
|
@@ -17,7 +17,7 @@ module Wechat
|
|
17
17
|
private
|
18
18
|
|
19
19
|
def redis_key
|
20
|
-
"my_app_wechat_token_#{self.
|
20
|
+
"my_app_wechat_token_#{self.secret}"
|
21
21
|
end
|
22
22
|
end
|
23
23
|
end
|
@@ -35,7 +35,7 @@ module Wechat
|
|
35
35
|
private
|
36
36
|
|
37
37
|
def redis_key
|
38
|
-
"my_app_wechat_ticket_#{self.access_token.
|
38
|
+
"my_app_wechat_ticket_#{self.access_token.secret}"
|
39
39
|
end
|
40
40
|
end
|
41
41
|
end
|
data/lib/wechat/corp_api.rb
CHANGED
@@ -24,6 +24,15 @@ module Wechat
|
|
24
24
|
get 'agent/get', params: { agentid: agentid }
|
25
25
|
end
|
26
26
|
|
27
|
+
def checkin(useridlist, starttime = Time.now.beginning_of_day, endtime = Time.now.end_of_day, opencheckindatatype = 3)
|
28
|
+
post 'checkin/getcheckindata', JSON.generate(
|
29
|
+
opencheckindatatype: opencheckindatatype,
|
30
|
+
starttime: starttime.to_i,
|
31
|
+
endtime: endtime.to_i,
|
32
|
+
useridlist: useridlist
|
33
|
+
)
|
34
|
+
end
|
35
|
+
|
27
36
|
def user(userid)
|
28
37
|
get 'user/get', params: { userid: userid }
|
29
38
|
end
|
data/lib/wechat/message.rb
CHANGED
@@ -104,12 +104,19 @@ module Wechat
|
|
104
104
|
update(MsgType: 'text', Content: content)
|
105
105
|
end
|
106
106
|
|
107
|
-
def textcard(title, description, url, btntxt)
|
108
|
-
|
107
|
+
def textcard(title, description, url, btntxt = nil)
|
108
|
+
data = {
|
109
109
|
title: title,
|
110
110
|
description: description,
|
111
|
-
url: url
|
112
|
-
|
111
|
+
url: url
|
112
|
+
}
|
113
|
+
data[:btntxt] = btntxt if btntxt.present?
|
114
|
+
update(MsgType: 'textcard', TextCard: data)
|
115
|
+
end
|
116
|
+
|
117
|
+
def markdown(content)
|
118
|
+
update(MsgType: 'markdown', Markdown: {
|
119
|
+
content: content
|
113
120
|
})
|
114
121
|
end
|
115
122
|
|
@@ -197,6 +204,7 @@ module Wechat
|
|
197
204
|
|
198
205
|
TO_JSON_KEY_MAP = {
|
199
206
|
'TextCard' => 'textcard',
|
207
|
+
'Markdown' => 'markdown',
|
200
208
|
'ToUserName' => 'touser',
|
201
209
|
'ToWxName' => 'towxname',
|
202
210
|
'MediaId' => 'media_id',
|
@@ -208,7 +216,7 @@ module Wechat
|
|
208
216
|
'ShowCoverPic' => 'show_cover_pic'
|
209
217
|
}.freeze
|
210
218
|
|
211
|
-
TO_JSON_ALLOWED = %w[touser msgtype content image voice video file textcard
|
219
|
+
TO_JSON_ALLOWED = %w[touser msgtype content image voice video file textcard markdown
|
212
220
|
music news articles template agentid filter
|
213
221
|
send_ignore_reprint mpnews towxname].freeze
|
214
222
|
|
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.11.
|
4
|
+
version: 0.11.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Skinnyworm
|
@@ -35,7 +35,7 @@ cert_chain:
|
|
35
35
|
ivoox98/nhOs6bHcSFPsxXdxUihcCfCzj+zcaHNEqpvTI/36Bnl2XW6dUJNaFQDc
|
36
36
|
oWOyq5ZkxqnYrYXactjW0+vcPv6WHoHXmjv4dF7iFp8r0mvK
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date: 2019-01
|
38
|
+
date: 2019-03-01 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: activesupport
|
@@ -137,16 +137,16 @@ dependencies:
|
|
137
137
|
name: sqlite3
|
138
138
|
requirement: !ruby/object:Gem::Requirement
|
139
139
|
requirements:
|
140
|
-
- - "
|
140
|
+
- - "~>"
|
141
141
|
- !ruby/object:Gem::Version
|
142
|
-
version:
|
142
|
+
version: 1.3.13
|
143
143
|
type: :development
|
144
144
|
prerelease: false
|
145
145
|
version_requirements: !ruby/object:Gem::Requirement
|
146
146
|
requirements:
|
147
|
-
- - "
|
147
|
+
- - "~>"
|
148
148
|
- !ruby/object:Gem::Version
|
149
|
-
version:
|
149
|
+
version: 1.3.13
|
150
150
|
description: API, command and message handling for WeChat in Rails
|
151
151
|
email: eric.guocz@gmail.com
|
152
152
|
executables:
|
metadata.gz.sig
CHANGED
Binary file
|