wechat 0.7.15 → 0.7.16

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3dc56f21f48d36e92b661e701ef739bf57c0e19c
4
- data.tar.gz: a3e8fa2c4e22491607a006695992a544d54020d1
3
+ metadata.gz: 23916edc0bd81f54751cecf9e3936e7c9c0e3d66
4
+ data.tar.gz: 7948b1899e0926c4f7c7c1da2e18b3b7ea63e52e
5
5
  SHA512:
6
- metadata.gz: 2fa99da16ca5d3587970a1a81bcec0b301bea9c1bd1e29811bd992452deb0f9554382cf464056c5a7a88ab709dc406f8495734bdd829077bfebb594593b0dda1
7
- data.tar.gz: 15ce193b4dd2939f3d79e3d98e0666de9b6b451505ea376a801cefb76090ef108ad29ae6e258e65c6f3b6747ba36ff2dbe2a094b4a3e750d6af7fd94b4847c23
6
+ metadata.gz: 529950c0422c7ec2e9c20ee8de79bf879528e94d47a61074f2d82bf05ead6305137824304ad38c334bd79bbae9b05ec9f7e0fdca7535b82ebec97502dd6369f9
7
+ data.tar.gz: 999bda64d6631f8f221d3b4d5e1a6e625bbb3e23adaffe4037856dfce0bc774709731a6289c50e5d307e9c1d8240bc8e2b2974ada59a70687fe09bf9ea572794
@@ -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.
@@ -23,25 +23,25 @@ WeChat gem 可以帮助开发者方便地在Rails环境中集成微信[公众平
23
23
 
24
24
  ## 安装
25
25
 
26
- Using `gem install`
26
+ 使用 `gem install`
27
27
 
28
28
  ```
29
29
  gem install "wechat"
30
30
  ```
31
31
 
32
- Or add to your app's `Gemfile`:
32
+ 或者添加下面这行到 `Gemfile`:
33
33
 
34
34
  ```
35
35
  gem 'wechat'
36
36
  ```
37
37
 
38
- Run the following command to install it:
38
+ 运行下面这行代码来安装:
39
39
 
40
40
  ```console
41
41
  bundle install
42
42
  ```
43
43
 
44
- Run the generator:
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 message_send [USERID, TEXT_MESSAGE] # 发送文字消息
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 message_send [USERID, TEXT_MESSAGE] # 发送文字消息
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
- if Wechat::ApiLoader.with(options).is_a?(Wechat::CorpApi)
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
@@ -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? && params[:code].present? && params[:state] == wechat.jsapi_ticket.oauth2_state
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
@@ -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.15
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-03 00:00:00.000000000 Z
12
+ date: 2016-07-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport