wechat 0.6.4 → 0.6.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 66ecda4306d9d5a9fde71ae0477d99682fd443a0
4
- data.tar.gz: 13b71709c26cc139d1be233a0449741eb404adbc
3
+ metadata.gz: 9e173474b91515c5b98160ebcf2e88c307b7a0c7
4
+ data.tar.gz: 24e1eeb02200389eb39fe1aa89a0e6dd87cfeda8
5
5
  SHA512:
6
- metadata.gz: 85fb0b5a0745542d5c9e9ec09095125c393192da41335592c58561353c6e5d91cc7eeb112a61c2456ac68cda0768391ae33a65a98aa7f05292abd2cfad78a2fc
7
- data.tar.gz: 09d88487602a96a6bc1d9b3c7dad3a5f9199c1d8df1f40e96d7b5a5ec6692cc894b4fb071de20ac27a1df42f6536cb17fe691651a044c876c4c117bc80602f17
6
+ metadata.gz: deff7d137bfcf8e9ff9c9e5102fae2639289edb58c5a3d426d32190df1e1e860d83a9a9faec2e858cdb7258580408dd0d38824416735ea7ce22ae7fb0d0ea9fa
7
+ data.tar.gz: 88485947385312824105e5d4a1a444fb45b8ddfdb377d24283ef463d848c96e0c9dda87c1998f57dea91ca934c4fd70ff2f3f2826d1c35d9554279987842be5d
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.6.5 (released at 11/24/2015)
4
+
5
+ * Handle 48001 error if token is expire/not valid, close #71
6
+ * ApiLoader will do config reading and initialize the api instead of spreading the logic.
7
+
3
8
  ## v0.6.4 (released at 11/16/2015)
4
9
 
5
10
  * Command mode now display different command set based on enterprise/public account setting
data/bin/wechat CHANGED
@@ -249,6 +249,16 @@ class App < Thor
249
249
  def users
250
250
  puts wechat_api.users
251
251
  end
252
+
253
+ desc 'qrcode_create_scene [SCENE_ID, EXPIRE_SECONDS]', '请求临时二维码'
254
+ def qrcode_create_scene(scene_id, expire_seconds = 604800)
255
+ puts wechat_api.qrcode_create_scene(scene_id, expire_seconds)
256
+ end
257
+
258
+ desc 'qrcode_create_limit_scene [SCENE_ID_OR_STR]', '请求永久二维码'
259
+ def qrcode_create_limit_scene(scene_id_or_str)
260
+ puts wechat_api.qrcode_create_limit_scene(scene_id_or_str)
261
+ end
252
262
  end
253
263
 
254
264
  desc 'user [OPEN_ID]', '获取用户基本信息'
@@ -261,16 +271,6 @@ class App < Thor
261
271
  puts wechat_api.user_update_remark(openid, remark)
262
272
  end
263
273
 
264
- desc 'qrcode_create_scene [SCENE_ID, EXPIRE_SECONDS]', '请求临时二维码'
265
- def qrcode_create_scene(scene_id, expire_seconds = 604800)
266
- puts wechat_api.qrcode_create_scene(scene_id, expire_seconds)
267
- end
268
-
269
- desc 'qrcode_create_limit_scene [SCENE_ID_OR_STR]', '请求永久二维码'
270
- def qrcode_create_limit_scene(scene_id_or_str)
271
- puts wechat_api.qrcode_create_limit_scene(scene_id_or_str)
272
- end
273
-
274
274
  desc 'menu', '当前菜单'
275
275
  def menu
276
276
  puts wechat_api.menu
data/lib/wechat.rb CHANGED
@@ -17,17 +17,11 @@ module Wechat
17
17
  end
18
18
  end
19
19
 
20
- attr_reader :config
21
-
22
20
  def self.config
23
- @config ||= ApiLoader.loading_config
21
+ ApiLoader.config
24
22
  end
25
23
 
26
24
  def self.api
27
- if config.corpid.present?
28
- @api ||= CorpApi.new(config.corpid, config.corpsecret, config.access_token, config.agentid, config.skip_verify_ssl)
29
- else
30
- @api ||= Api.new(config.appid, config.secret, config.access_token, config.skip_verify_ssl, config.jsapi_ticket)
31
- end
25
+ ApiLoader.api
32
26
  end
33
27
  end
@@ -1,7 +1,16 @@
1
1
  module Wechat
2
- class ApiLoader
2
+ module ApiLoader
3
+ def self.api
4
+ c = ApiLoader.config
5
+ if c.corpid.present?
6
+ @api ||= CorpApi.new(c.corpid, c.corpsecret, c.access_token, c.agentid, c.skip_verify_ssl)
7
+ else
8
+ @api ||= Api.new(c.appid, c.secret, c.access_token, c.skip_verify_ssl, c.jsapi_ticket)
9
+ end
10
+ end
11
+
3
12
  def self.with(options)
4
- c = loading_config
13
+ c = config
5
14
 
6
15
  token_file = options[:toke_file] || c.access_token || '/var/tmp/wechat_access_token'
7
16
 
@@ -18,35 +27,44 @@ HELP
18
27
  end
19
28
  end
20
29
 
21
- def self.loading_config
30
+ @config = nil
31
+
32
+ def self.config
33
+ return @config unless @config.nil?
34
+ @config ||= loading_config!
35
+ end
36
+
37
+ private
38
+
39
+ def self.loading_config!
40
+ config ||= config_from_file || config_from_environment
41
+
42
+ if defined?(::Rails)
43
+ config[:access_token] ||= Rails.root.join('tmp/access_token').to_s
44
+ config[:jsapi_ticket] ||= Rails.root.join('tmp/jsapi_ticket').to_s
45
+ end
46
+ config.symbolize_keys!
47
+ @config = OpenStruct.new(config)
48
+ end
49
+
50
+ def self.config_from_file
22
51
  if defined?(::Rails)
23
52
  config_file = Rails.root.join('config/wechat.yml')
24
- config = YAML.load(ERB.new(File.read(config_file)).result)[Rails.env] if File.exist?(config_file)
53
+ return YAML.load(ERB.new(File.read(config_file)).result)[Rails.env] if File.exist?(config_file)
25
54
  else
26
55
  rails_config_file = File.join(Dir.getwd, 'config/wechat.yml')
27
56
  home_config_file = File.join(Dir.home, '.wechat.yml')
28
-
29
57
  if File.exist?(rails_config_file)
30
58
  config = YAML.load(ERB.new(File.read(rails_config_file)).result)['default']
31
59
  if config.present? && (config['appid'] || config['corpid'])
32
60
  puts 'Using rails project config/wechat.yml default setting...'
33
- else
34
- config = {}
61
+ return config
35
62
  end
36
63
  end
37
-
38
- if config.blank? && File.exist?(home_config_file)
39
- config = YAML.load ERB.new(File.read(home_config_file)).result
64
+ if File.exist?(home_config_file)
65
+ return YAML.load ERB.new(File.read(home_config_file)).result
40
66
  end
41
67
  end
42
-
43
- config ||= config_from_environment
44
- if defined?(::Rails)
45
- config[:access_token] ||= Rails.root.join('tmp/access_token').to_s
46
- config[:jsapi_ticket] ||= Rails.root.join('tmp/jsapi_ticket').to_s
47
- end
48
- config.symbolize_keys!
49
- OpenStruct.new(config)
50
68
  end
51
69
 
52
70
  def self.config_from_environment
data/lib/wechat/client.rb CHANGED
@@ -45,7 +45,8 @@ module Wechat
45
45
  # 42001: access_token超时
46
46
  # 40014: 不合法的access_token
47
47
  # 40001, invalid credential, access_token is invalid or not latest hint
48
- when 42001, 40014, 40001
48
+ # 48001, api unauthorized hint, for qrcode creation # 71
49
+ when 42001, 40014, 40001, 48001
49
50
  fail AccessTokenExpiredError
50
51
  else
51
52
  fail ResponseError.new(data['errcode'], data['errmsg'])
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.6.4
4
+ version: 0.6.5
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: 2015-11-15 00:00:00.000000000 Z
12
+ date: 2015-11-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport