wechat 0.7.15 → 0.7.16
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
- data/CHANGELOG.md +6 -0
- data/README-CN.md +21 -11
- data/README.md +17 -7
- data/bin/wechat +56 -38
- data/lib/wechat/api.rb +28 -0
- data/lib/wechat/controller_api.rb +3 -1
- data/lib/wechat/http_client.rb +1 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 23916edc0bd81f54751cecf9e3936e7c9c0e3d66
|
4
|
+
data.tar.gz: 7948b1899e0926c4f7c7c1da2e18b3b7ea63e52e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 529950c0422c7ec2e9c20ee8de79bf879528e94d47a61074f2d82bf05ead6305137824304ad38c334bd79bbae9b05ec9f7e0fdca7535b82ebec97502dd6369f9
|
7
|
+
data.tar.gz: 999bda64d6631f8f221d3b4d5e1a6e625bbb3e23adaffe4037856dfce0bc774709731a6289c50e5d307e9c1d8240bc8e2b2974ada59a70687fe09bf9ea572794
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## v0.7.16 (released at 7/27/2016)
|
4
|
+
|
5
|
+
* FIX: consider '' in params as equal with nil, in ControllerApi#wechat_public_oauth2, by @snow #135
|
6
|
+
* New tag API for public account, by @pynixwang #127
|
7
|
+
* fix SSLv3 error by use TLSv1_client, by @IvanChou #133
|
8
|
+
|
3
9
|
## v0.7.15 (released at 7/03/2016)
|
4
10
|
|
5
11
|
* RSpec testing case on Rails 5 now.
|
data/README-CN.md
CHANGED
@@ -23,25 +23,25 @@ WeChat gem 可以帮助开发者方便地在Rails环境中集成微信[公众平
|
|
23
23
|
|
24
24
|
## 安装
|
25
25
|
|
26
|
-
|
26
|
+
使用 `gem install`
|
27
27
|
|
28
28
|
```
|
29
29
|
gem install "wechat"
|
30
30
|
```
|
31
31
|
|
32
|
-
|
32
|
+
或者添加下面这行到 `Gemfile`:
|
33
33
|
|
34
34
|
```
|
35
35
|
gem 'wechat'
|
36
36
|
```
|
37
37
|
|
38
|
-
|
38
|
+
运行下面这行代码来安装:
|
39
39
|
|
40
40
|
```console
|
41
41
|
bundle install
|
42
42
|
```
|
43
43
|
|
44
|
-
|
44
|
+
运行下面这行代码来生成必要文件:
|
45
45
|
|
46
46
|
```console
|
47
47
|
rails generate wechat:install
|
@@ -266,7 +266,7 @@ Wechat commands:
|
|
266
266
|
wechat custom_text [OPENID, TEXT_MESSAGE] # 发送文字客服消息
|
267
267
|
wechat custom_video [OPENID, VIDEO_PATH] # 发送视频客服消息
|
268
268
|
wechat custom_voice [OPENID, VOICE_PATH] # 发送语音客服消息
|
269
|
-
wechat customservice_getonlinekflist # 获取在线客服接待信息
|
269
|
+
wechat customservice_getonlinekflist # 获取在线客服接待信息
|
270
270
|
wechat group_create [GROUP_NAME] # 创建分组
|
271
271
|
wechat group_delete [GROUP_ID] # 删除分组
|
272
272
|
wechat group_update [GROUP_ID, NEW_GROUP_NAME] # 修改分组名
|
@@ -280,18 +280,25 @@ Wechat commands:
|
|
280
280
|
wechat media_create [MEDIA_TYPE, PATH] # 媒体上传
|
281
281
|
wechat media_uploadimg [IMAGE_PATH] # 上传图文消息内的图片
|
282
282
|
wechat menu # 当前菜单
|
283
|
-
wechat menu_addconditional [CONDITIONAL_MENU_YAML_PATH] # 创建个性化菜单
|
283
|
+
wechat menu_addconditional [CONDITIONAL_MENU_YAML_PATH] # 创建个性化菜单
|
284
284
|
wechat menu_create [MENU_YAML_PATH] # 创建菜单
|
285
|
-
wechat menu_delconditional [MENU_ID] # 删除个性化菜单
|
285
|
+
wechat menu_delconditional [MENU_ID] # 删除个性化菜单
|
286
286
|
wechat menu_delete # 删除菜单
|
287
|
-
wechat menu_trymatch [USER_ID] # 测试个性化菜单匹配结果
|
287
|
+
wechat menu_trymatch [USER_ID] # 测试个性化菜单匹配结果
|
288
288
|
wechat qrcode_create_limit_scene [SCENE_ID_OR_STR] # 请求永久二维码
|
289
289
|
wechat qrcode_create_scene [SCENE_ID, EXPIRE_SECONDS] # 请求临时二维码
|
290
290
|
wechat qrcode_download [TICKET, QR_CODE_PIC_PATH] # 通过ticket下载二维码
|
291
291
|
wechat short_url [LONG_URL] # 长链接转短链接
|
292
|
+
wechat tag [TAGID] # 获取标签下粉丝列表
|
293
|
+
wechat tag_add_user [TAG_ID, OPEN_IDS] # 批量为用户打标签
|
294
|
+
wechat tag_create [TAGNAME, TAG_ID] # 创建标签
|
295
|
+
wechat tag_del_user [TAG_ID, OPEN_IDS] # 批量为用户取消标签
|
296
|
+
wechat tag_delete [TAG_ID] # 删除标签
|
297
|
+
wechat tag_update [TAG_ID, TAGNAME] # 更新标签名字
|
298
|
+
wechat tags # 获取所有标签
|
292
299
|
wechat template_message [OPENID, TEMPLATE_YAML_PATH] # 模板消息接口
|
293
300
|
wechat user [OPEN_ID] # 获取用户基本信息
|
294
|
-
wechat user_batchget [OPEN_ID_LIST] # 批量获取用户基本信息
|
301
|
+
wechat user_batchget [OPEN_ID_LIST] # 批量获取用户基本信息
|
295
302
|
wechat user_change_group [OPEN_ID, TO_GROUP_ID] # 移动用户分组
|
296
303
|
wechat user_group [OPEN_ID] # 查询用户所在分组
|
297
304
|
wechat user_update_remark [OPEN_ID, REMARK] # 设置备注名
|
@@ -330,9 +337,12 @@ Wechat commands:
|
|
330
337
|
wechat media_create [MEDIA_TYPE, PATH] # 媒体上传
|
331
338
|
wechat media_uploadimg [IMAGE_PATH] # 上传图文消息内的图片
|
332
339
|
wechat menu # 当前菜单
|
340
|
+
wechat menu_addconditional [CONDITIONAL_MENU_YAML_PATH] # 创建个性化菜单
|
333
341
|
wechat menu_create [MENU_YAML_PATH] # 创建菜单
|
342
|
+
wechat menu_delconditional [MENU_ID] # 删除个性化菜单
|
334
343
|
wechat menu_delete # 删除菜单
|
335
|
-
wechat
|
344
|
+
wechat menu_trymatch [USER_ID] # 测试个性化菜单匹配结果
|
345
|
+
wechat message_send [OPENID, TEXT_MESSAGE] # 发送文字消息
|
336
346
|
wechat qrcode_download [TICKET, QR_CODE_PIC_PATH] # 通过ticket下载二维码
|
337
347
|
wechat tag [TAG_ID] # 获取标签成员
|
338
348
|
wechat tag_add_department [TAG_ID, PARTY_IDS] # 增加标签部门
|
@@ -342,7 +352,7 @@ Wechat commands:
|
|
342
352
|
wechat tag_del_user [TAG_ID, USER_IDS] # 删除标签成员
|
343
353
|
wechat tag_delete [TAG_ID] # 删除标签
|
344
354
|
wechat tag_update [TAG_ID, TAGNAME] # 更新标签名字
|
345
|
-
wechat tags #
|
355
|
+
wechat tags # 获取所有标签
|
346
356
|
wechat template_message [OPENID, TEMPLATE_YAML_PATH] # 模板消息接口
|
347
357
|
wechat upload_replaceparty [BATCH_PARTY_CSV_PATH] # 上传文件方式全量覆盖部门
|
348
358
|
wechat upload_replaceuser [BATCH_USER_CSV_PATH] # 上传文件方式全量覆盖成员
|
data/README.md
CHANGED
@@ -282,7 +282,7 @@ Wechat commands:
|
|
282
282
|
wechat custom_text [OPENID, TEXT_MESSAGE] # 发送文字客服消息
|
283
283
|
wechat custom_video [OPENID, VIDEO_PATH] # 发送视频客服消息
|
284
284
|
wechat custom_voice [OPENID, VOICE_PATH] # 发送语音客服消息
|
285
|
-
wechat customservice_getonlinekflist # 获取在线客服接待信息
|
285
|
+
wechat customservice_getonlinekflist # 获取在线客服接待信息
|
286
286
|
wechat group_create [GROUP_NAME] # 创建分组
|
287
287
|
wechat group_delete [GROUP_ID] # 删除分组
|
288
288
|
wechat group_update [GROUP_ID, NEW_GROUP_NAME] # 修改分组名
|
@@ -296,18 +296,25 @@ Wechat commands:
|
|
296
296
|
wechat media_create [MEDIA_TYPE, PATH] # 媒体上传
|
297
297
|
wechat media_uploadimg [IMAGE_PATH] # 上传图文消息内的图片
|
298
298
|
wechat menu # 当前菜单
|
299
|
-
wechat menu_addconditional [CONDITIONAL_MENU_YAML_PATH] # 创建个性化菜单
|
299
|
+
wechat menu_addconditional [CONDITIONAL_MENU_YAML_PATH] # 创建个性化菜单
|
300
300
|
wechat menu_create [MENU_YAML_PATH] # 创建菜单
|
301
|
-
wechat menu_delconditional [MENU_ID] # 删除个性化菜单
|
301
|
+
wechat menu_delconditional [MENU_ID] # 删除个性化菜单
|
302
302
|
wechat menu_delete # 删除菜单
|
303
|
-
wechat menu_trymatch [USER_ID] # 测试个性化菜单匹配结果
|
303
|
+
wechat menu_trymatch [USER_ID] # 测试个性化菜单匹配结果
|
304
304
|
wechat qrcode_create_limit_scene [SCENE_ID_OR_STR] # 请求永久二维码
|
305
305
|
wechat qrcode_create_scene [SCENE_ID, EXPIRE_SECONDS] # 请求临时二维码
|
306
306
|
wechat qrcode_download [TICKET, QR_CODE_PIC_PATH] # 通过ticket下载二维码
|
307
307
|
wechat short_url [LONG_URL] # 长链接转短链接
|
308
|
+
wechat tag [TAGID] # 获取标签下粉丝列表
|
309
|
+
wechat tag_add_user [TAG_ID, OPEN_IDS] # 批量为用户打标签
|
310
|
+
wechat tag_create [TAGNAME, TAG_ID] # 创建标签
|
311
|
+
wechat tag_del_user [TAG_ID, OPEN_IDS] # 批量为用户取消标签
|
312
|
+
wechat tag_delete [TAG_ID] # 删除标签
|
313
|
+
wechat tag_update [TAG_ID, TAGNAME] # 更新标签名字
|
314
|
+
wechat tags # 获取所有标签
|
308
315
|
wechat template_message [OPENID, TEMPLATE_YAML_PATH] # 模板消息接口
|
309
316
|
wechat user [OPEN_ID] # 获取用户基本信息
|
310
|
-
wechat user_batchget [OPEN_ID_LIST] # 批量获取用户基本信息
|
317
|
+
wechat user_batchget [OPEN_ID_LIST] # 批量获取用户基本信息
|
311
318
|
wechat user_change_group [OPEN_ID, TO_GROUP_ID] # 移动用户分组
|
312
319
|
wechat user_group [OPEN_ID] # 查询用户所在分组
|
313
320
|
wechat user_update_remark [OPEN_ID, REMARK] # 设置备注名
|
@@ -346,9 +353,12 @@ Wechat commands:
|
|
346
353
|
wechat media_create [MEDIA_TYPE, PATH] # 媒体上传
|
347
354
|
wechat media_uploadimg [IMAGE_PATH] # 上传图文消息内的图片
|
348
355
|
wechat menu # 当前菜单
|
356
|
+
wechat menu_addconditional [CONDITIONAL_MENU_YAML_PATH] # 创建个性化菜单
|
349
357
|
wechat menu_create [MENU_YAML_PATH] # 创建菜单
|
358
|
+
wechat menu_delconditional [MENU_ID] # 删除个性化菜单
|
350
359
|
wechat menu_delete # 删除菜单
|
351
|
-
wechat
|
360
|
+
wechat menu_trymatch [USER_ID] # 测试个性化菜单匹配结果
|
361
|
+
wechat message_send [OPENID, TEXT_MESSAGE] # 发送文字消息
|
352
362
|
wechat qrcode_download [TICKET, QR_CODE_PIC_PATH] # 通过ticket下载二维码
|
353
363
|
wechat tag [TAG_ID] # 获取标签成员
|
354
364
|
wechat tag_add_department [TAG_ID, PARTY_IDS] # 增加标签部门
|
@@ -358,7 +368,7 @@ Wechat commands:
|
|
358
368
|
wechat tag_del_user [TAG_ID, USER_IDS] # 删除标签成员
|
359
369
|
wechat tag_delete [TAG_ID] # 删除标签
|
360
370
|
wechat tag_update [TAG_ID, TAGNAME] # 更新标签名字
|
361
|
-
wechat tags #
|
371
|
+
wechat tags # 获取所有标签
|
362
372
|
wechat template_message [OPENID, TEMPLATE_YAML_PATH] # 模板消息接口
|
363
373
|
wechat upload_replaceparty [BATCH_PARTY_CSV_PATH] # 上传文件方式全量覆盖部门
|
364
374
|
wechat upload_replaceuser [BATCH_USER_CSV_PATH] # 上传文件方式全量覆盖成员
|
data/bin/wechat
CHANGED
@@ -38,7 +38,9 @@ class App < Thor
|
|
38
38
|
puts 'File downloaded'
|
39
39
|
end
|
40
40
|
|
41
|
-
|
41
|
+
in_corp_api_cmd = Wechat::ApiLoader.with(options).is_a?(Wechat::CorpApi)
|
42
|
+
|
43
|
+
if in_corp_api_cmd
|
42
44
|
desc 'department_create [NAME, PARENT_ID]', '创建部门'
|
43
45
|
method_option :parentid, aliases: '-p', desc: '父亲部门id。根部门id为1'
|
44
46
|
def department_create(name)
|
@@ -114,53 +116,16 @@ class App < Thor
|
|
114
116
|
puts wechat_api.invite_user(userid)
|
115
117
|
end
|
116
118
|
|
117
|
-
desc 'tag_create [TAGNAME, TAG_ID]', '创建标签'
|
118
|
-
method_option :tagid, aliases: '-id', desc: '整型,指定此参数时新增的标签会生成对应的标签id,不指定时则以目前最大的id自增'
|
119
|
-
def tag_create(name)
|
120
|
-
api_opts = options.slice(:tagid)
|
121
|
-
puts wechat_api.tag_create(name, api_opts[:tagid])
|
122
|
-
end
|
123
|
-
|
124
|
-
desc 'tag_update [TAG_ID, TAGNAME]', '更新标签名字'
|
125
|
-
def tag_update(tagid, tagname)
|
126
|
-
puts wechat_api.tag_update(tagid, tagname)
|
127
|
-
end
|
128
|
-
|
129
|
-
desc 'tag_delete [TAG_ID]', '删除标签'
|
130
|
-
def tag_delete(tagid)
|
131
|
-
puts wechat_api.tag_delete(tagid)
|
132
|
-
end
|
133
|
-
|
134
|
-
desc 'tag [TAG_ID]', '获取标签成员'
|
135
|
-
def tag(tagid)
|
136
|
-
puts wechat_api.tag(tagid)
|
137
|
-
end
|
138
|
-
|
139
|
-
desc 'tag_add_user [TAG_ID, USER_IDS]', '增加标签成员'
|
140
|
-
def tag_add_user(tagid, userids)
|
141
|
-
puts wechat_api.tag_add_user(tagid, userids.split(','))
|
142
|
-
end
|
143
|
-
|
144
119
|
desc 'tag_add_department [TAG_ID, PARTY_IDS]', '增加标签部门'
|
145
120
|
def tag_add_department(tagid, partyids)
|
146
121
|
puts wechat_api.tag_add_user(tagid, nil, partyids.split(','))
|
147
122
|
end
|
148
123
|
|
149
|
-
desc 'tag_del_user [TAG_ID, USER_IDS]', '删除标签成员'
|
150
|
-
def tag_del_user(tagid, userids)
|
151
|
-
puts wechat_api.tag_del_user(tagid, userids.split(','))
|
152
|
-
end
|
153
|
-
|
154
124
|
desc 'tag_del_department [TAG_ID, PARTY_IDS]', '删除标签部门'
|
155
125
|
def tag_del_department(tagid, partyids)
|
156
126
|
puts wechat_api.tag_del_user(tagid, nil, partyids.split(','))
|
157
127
|
end
|
158
128
|
|
159
|
-
desc 'tags', '获取标签列表'
|
160
|
-
def tags
|
161
|
-
puts wechat_api.tags
|
162
|
-
end
|
163
|
-
|
164
129
|
desc 'batch_job_result [JOB_ID]', '获取异步任务结果'
|
165
130
|
def batch_job_result(job_id)
|
166
131
|
puts wechat_api.batch_job_result(job_id)
|
@@ -441,6 +406,59 @@ class App < Thor
|
|
441
406
|
template = YAML.load(File.read(template_yaml_path))
|
442
407
|
puts wechat_api.template_message_send Wechat::Message.to(openid).template(template['template'])
|
443
408
|
end
|
409
|
+
|
410
|
+
desc 'tags', '获取所有标签'
|
411
|
+
def tags
|
412
|
+
puts wechat_api.tags
|
413
|
+
end
|
414
|
+
|
415
|
+
desc 'tag_create [TAGNAME, TAG_ID]', '创建标签'
|
416
|
+
method_option :tagid, aliases: '-id', desc: '整型,指定此参数时新增的标签会生成对应的标签id,不指定时则以目前最大的id自增' if in_corp_api_cmd
|
417
|
+
def tag_create(tag_name)
|
418
|
+
if in_corp_api_cmd
|
419
|
+
api_opts = options.slice(:tagid)
|
420
|
+
puts wechat_api.tag_create(tag_name, api_opts[:tagid])
|
421
|
+
else
|
422
|
+
puts wechat_api.tag_create(tag_name)
|
423
|
+
end
|
424
|
+
end
|
425
|
+
|
426
|
+
desc 'tag_update [TAG_ID, TAGNAME]', '更新标签名字'
|
427
|
+
def tag_update(tagid, tagname)
|
428
|
+
puts wechat_api.tag_update(tagid, tagname)
|
429
|
+
end
|
430
|
+
|
431
|
+
desc 'tag_delete [TAG_ID]', '删除标签'
|
432
|
+
def tag_delete(tagid)
|
433
|
+
puts wechat_api.tag_delete(tagid)
|
434
|
+
end
|
435
|
+
|
436
|
+
if in_corp_api_cmd
|
437
|
+
desc 'tag_add_user [TAG_ID, USER_IDS]', '增加标签成员'
|
438
|
+
else
|
439
|
+
desc 'tag_add_user [TAG_ID, OPEN_IDS]', '批量为用户打标签'
|
440
|
+
end
|
441
|
+
def tag_add_user(tagid, open_or_user_ids)
|
442
|
+
puts wechat_api.tag_add_user(tagid, open_or_user_ids.split(','))
|
443
|
+
end
|
444
|
+
|
445
|
+
if in_corp_api_cmd
|
446
|
+
desc 'tag_del_user [TAG_ID, USER_IDS]', '删除标签成员'
|
447
|
+
else
|
448
|
+
desc 'tag_del_user [TAG_ID, OPEN_IDS]', '批量为用户取消标签'
|
449
|
+
end
|
450
|
+
def tag_del_user(tagid, open_or_user_ids)
|
451
|
+
puts wechat_api.tag_del_user(tagid, open_or_user_ids.split(','))
|
452
|
+
end
|
453
|
+
|
454
|
+
if in_corp_api_cmd
|
455
|
+
desc 'tag [TAG_ID]', '获取标签成员'
|
456
|
+
else
|
457
|
+
desc 'tag [TAGID]', '获取标签下粉丝列表'
|
458
|
+
end
|
459
|
+
def tag(tagid)
|
460
|
+
puts wechat_api.tag tagid
|
461
|
+
end
|
444
462
|
end
|
445
463
|
|
446
464
|
App.start
|
data/lib/wechat/api.rb
CHANGED
@@ -133,6 +133,34 @@ module Wechat
|
|
133
133
|
get 'customservice/getonlinekflist'
|
134
134
|
end
|
135
135
|
|
136
|
+
def tags
|
137
|
+
get 'tags/get'
|
138
|
+
end
|
139
|
+
|
140
|
+
def tag_create(tag_name)
|
141
|
+
post 'tags/create', JSON.generate(tag: { name: tag_name })
|
142
|
+
end
|
143
|
+
|
144
|
+
def tag_update(tagid, new_tag_name)
|
145
|
+
post 'tags/update', JSON.generate(tag: { id: tagid, name: new_tag_name })
|
146
|
+
end
|
147
|
+
|
148
|
+
def tag_delete(tagid)
|
149
|
+
post 'tags/delete', JSON.generate(tag: { id: tagid })
|
150
|
+
end
|
151
|
+
|
152
|
+
def tag_add_user(tagid, openids)
|
153
|
+
post 'tags/members/batchtagging', JSON.generate(openid_list: openids, tagid: tagid)
|
154
|
+
end
|
155
|
+
|
156
|
+
def tag_del_user(tagid, openids)
|
157
|
+
post 'tags/members/batchuntagging', JSON.generate(openid_list: openids, tagid: tagid)
|
158
|
+
end
|
159
|
+
|
160
|
+
def tag(tagid, next_openid = '')
|
161
|
+
post 'user/tag/get', JSON.generate(tagid: tagid, next_openid: next_openid)
|
162
|
+
end
|
163
|
+
|
136
164
|
OAUTH2_BASE = 'https://api.weixin.qq.com/sns/'.freeze
|
137
165
|
|
138
166
|
def web_access_token(code)
|
@@ -34,7 +34,9 @@ module Wechat
|
|
34
34
|
def wechat_public_oauth2(oauth2_url)
|
35
35
|
if cookies.signed_or_encrypted[:we_openid].blank? && params[:code].blank?
|
36
36
|
redirect_to oauth2_url
|
37
|
-
elsif cookies.signed_or_encrypted[:we_openid].blank? &&
|
37
|
+
elsif cookies.signed_or_encrypted[:we_openid].blank? &&
|
38
|
+
params[:code].present? &&
|
39
|
+
params[:state].to_s == wechat.jsapi_ticket.oauth2_state.to_s # params[:state] maybe nil and wechat.jsapi_ticket.oauth2_state may be nil
|
38
40
|
access_info = wechat.web_access_token(params[:code])
|
39
41
|
cookies.signed_or_encrypted[:we_openid] = { value: access_info['openid'], expires: self.class.oauth2_cookie_duration.from_now }
|
40
42
|
yield access_info['openid'], access_info
|
data/lib/wechat/http_client.rb
CHANGED
@@ -8,6 +8,7 @@ module Wechat
|
|
8
8
|
@base = base
|
9
9
|
HTTP.timeout(:global, write: timeout, connect: timeout, read: timeout)
|
10
10
|
@ssl_context = OpenSSL::SSL::SSLContext.new
|
11
|
+
@ssl_context.ssl_version = :TLSv1_client
|
11
12
|
@ssl_context.verify_mode = OpenSSL::SSL::VERIFY_NONE if skip_verify_ssl
|
12
13
|
end
|
13
14
|
|
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.7.
|
4
|
+
version: 0.7.16
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Skinnyworm
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-07-
|
12
|
+
date: 2016-07-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|