wechat 0.17.1 → 0.17.3

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
  SHA256:
3
- metadata.gz: 0d792d78d777375dc558251f8977ee4897e0854cff6276e207e1337c8884d066
4
- data.tar.gz: d92848e26cd42299997cfa0c700b9c961bf0e89ad6b9992cc088905e5968eabc
3
+ metadata.gz: 497060e96871aaed2d484bf54a8f39701e67895add0fb2d456ad7722297db841
4
+ data.tar.gz: e7c029ef4bb8cf4018b81902999e54900df9f92dcfc9de1673f9a2b1514b48dc
5
5
  SHA512:
6
- metadata.gz: dccc900747140ca19c627856b39f7066bdf7ee9cbc34217780b942d703064b645c69a9ca855f0ea79d070a2886f940ba94f1c10230372732454ec3cc6b382ac1
7
- data.tar.gz: 968546dfcea050c3154179358eb93b24a1afdcffe8a46d5aea9af6cef1497f4a981b9028df84108c7677a180f53fc1687f2b6616613abaf203223ae01932cd1e
6
+ metadata.gz: bd6fa6017ade886d1e33de0971bfbea8abe4e05f8b01e15b91c256552bf9f6704a23c703ca3278867bfc65aed853adc1027d8841845d8d96eb9c1a14eb61d420
7
+ data.tar.gz: e786359f9835a52ddb6c7627115ffe1ea2151411c4c91374ae2343ef977a7eddb45d379c06b21ea10942dc583fe7666fbf710c52253d41c92e5ed1df6ba816af
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.17.3 (released at 2024-01-04)
4
+
5
+ * Add New CorpApi batch_get_by_user and follow_user_list. by @leepood #321
6
+ * Use JSON.parse handle response.body directly. by @leepood #322
7
+
8
+ ## v0.17.2 (released at 2023-12-30)
9
+
10
+ * Fix no need the message type restrictions. by @leepood #319
11
+
3
12
  ## v0.17.1 (released at 2023-07-28)
4
13
 
5
14
  * Add Record based token support. by @CoolDrinELiu #315
@@ -4,7 +4,7 @@
4
4
  # Feel free to inherit from other class like ActiveModel::Model
5
5
  class WechatSession < ActiveRecord::Base
6
6
  validates :openid, presence: true, uniqueness: true
7
- serialize :hash_store, Hash
7
+ serialize :hash_store, type: Hash
8
8
 
9
9
  # called by wechat gems when user request session
10
10
  def self.find_or_initialize_session(request_message)
@@ -74,14 +74,14 @@ module Wechat
74
74
  end
75
75
 
76
76
  if defined?(::Rails)
77
- configs.each do |_, cfg|
77
+ configs.each_value do |cfg|
78
78
  cfg[:access_token] ||= Rails.root.try(:join, 'tmp/access_token').try(:to_path)
79
79
  cfg[:jsapi_ticket] ||= Rails.root.try(:join, 'tmp/jsapi_ticket').try(:to_path)
80
80
  cfg[:qcloud_token] ||= Rails.root.try(:join, 'tmp/qcloud_token').try(:to_path)
81
81
  end
82
82
  end
83
83
 
84
- configs.each do |_, cfg|
84
+ configs.each_value do |cfg|
85
85
  cfg[:timeout] ||= 20
86
86
  cfg[:qcloud_token_lifespan] ||= 7200
87
87
  cfg[:have_session_class] ||= class_exists?('WechatSession')
@@ -124,7 +124,7 @@ module Wechat
124
124
  return config
125
125
  end
126
126
  end
127
- return resolve_config_file(home_config_file, nil) if File.exist?(home_config_file)
127
+ resolve_config_file(home_config_file, nil) if File.exist?(home_config_file)
128
128
  end
129
129
  end
130
130
 
@@ -18,6 +18,16 @@ module Wechat
18
18
  get 'externalcontact/get', params: { external_userid: external_userid, cursor: cursor }
19
19
  end
20
20
 
21
+ def follow_user_list
22
+ # https://developer.work.weixin.qq.com/document/path/92576
23
+ get 'externalcontact/get_follow_user_list'
24
+ end
25
+
26
+ def batch_get_by_user(userid_list, cursor: nil, limit: nil)
27
+ # https://developer.work.weixin.qq.com/document/path/93010
28
+ post 'externalcontact/batch/get_by_user', JSON.generate(userid_list: userid_list, cursor: cursor, limit: limit)
29
+ end
30
+
21
31
  def agent_list
22
32
  get 'agent/list'
23
33
  end
@@ -88,7 +88,7 @@ module Wechat
88
88
  %r{^voice/.*} => :file,
89
89
  %r{^text/html} => :xml,
90
90
  %r{^text/plain} => :probably_json
91
- }.each_with_object([]) { |match, memo| memo << match[1] if content_type =~ match[0] }.first || as_type || :text
91
+ }.each_with_object([]) { |match, memo| memo << match[1] if content_type.match?(match[0]) }.first || as_type || :text
92
92
 
93
93
  # try to parse response as json, fallback to user-specified format or text if failed
94
94
  if parse_as == :probably_json
@@ -111,7 +111,7 @@ module Wechat
111
111
  data = file
112
112
 
113
113
  when :json
114
- data = JSON.parse response.body.to_s.gsub(/[\u0000-\u001f]+/, '')
114
+ data = JSON.parse response.body
115
115
  when :xml
116
116
  data = Hash.from_xml(response.body.to_s)
117
117
  else
@@ -236,7 +236,7 @@ module Wechat
236
236
  keep_camel_case_key = message_hash[:MsgType] == 'template'
237
237
  json_hash = deep_recursive(message_hash) do |key, value|
238
238
  key = key.to_s
239
- [(TO_JSON_KEY_MAP[key] || (keep_camel_case_key ? key : key.downcase)), value]
239
+ [TO_JSON_KEY_MAP[key] || (keep_camel_case_key ? key : key.downcase), value]
240
240
  end
241
241
  json_hash = json_hash.transform_keys(&:downcase).select { |k, _v| TO_JSON_ALLOWED.include? k }
242
242
 
@@ -19,8 +19,6 @@ module Wechat
19
19
  attr_accessor :account_from_request
20
20
 
21
21
  def on(message_type, with: nil, respond: nil, &block)
22
- raise 'Unknow message type' unless %i[text image voice video shortvideo link event click view scan batch_job location label_location fallback].include?(message_type)
23
-
24
22
  config = respond.nil? ? {} : { respond: respond }
25
23
  config[:proc] = block if block_given?
26
24
 
data/lib/wechat.rb CHANGED
@@ -19,7 +19,7 @@ module Wechat
19
19
 
20
20
  def initialize(errcode, errmsg)
21
21
  @error_code = errcode
22
- super "#{errmsg}(#{error_code})"
22
+ super("#{errmsg}(#{error_code})")
23
23
  end
24
24
  end
25
25
 
data.tar.gz.sig CHANGED
Binary file
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.17.1
4
+ version: 0.17.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Skinnyworm
@@ -13,30 +13,30 @@ cert_chain:
13
13
  -----BEGIN CERTIFICATE-----
14
14
  MIIEeDCCAuCgAwIBAgIBATANBgkqhkiG9w0BAQsFADBBMRMwEQYDVQQDDAplcmlj
15
15
  Lmd1b2N6MRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJk/IsZAEZFgNj
16
- b20wHhcNMjIxMjA5MDcyMTE1WhcNMjMxMjA5MDcyMTE1WjBBMRMwEQYDVQQDDApl
16
+ b20wHhcNMjMxMjMwMDgzMDQ1WhcNMjQxMjI5MDgzMDQ1WjBBMRMwEQYDVQQDDApl
17
17
  cmljLmd1b2N6MRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJk/IsZAEZ
18
- FgNjb20wggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC6jGarls5mU792
19
- leWot9tWKXnnvVnj1oUPea8M77PpHcYMVmjUTkjgsrKiOFNv2nAjUIDrUaLJvuKi
20
- 95zZYLIT3uWqI9QvSSDr+rs4HyIDcXuWWB89GpKN5WgyCVel6V9X5PN0C5hIiz8T
21
- ThW7ZqkS8mTmHm2micL8/lmnelpxj9EjCin7xOCvebB9pdA7Y0kXMLbnRq4QK2lB
22
- O2YRbLvYKWOQfO/sqLlwFsNWMNkj5ZROIqmKRvOHQdchox2RfBNsWRZ7XH8tTW1L
23
- cqx95dI2qC6Xg+IHjN4Wc6n+Ak1KENlVjI4mGcuk+34d1S9gaZT8vW/cYcL30Nbg
24
- AAUQvS4AQ8gmAkk1+oNs+725QLBprbnSN5PJr9VQiDteNHHkY5ugjndeAByOGy8h
25
- /TgV4tBZQ0IT37ZRDcP4dayFMm2DVjS4uU7RUXLgc8sdOGeMmsFwdz9QrBPGeKsV
26
- 4+dXjrzzUvwRX4K21mx4ZSP9eSOscOEuzRIRTnab0GniDhkkHc8CAwEAAaN7MHkw
27
- CQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFPGkToJNhoEfhsOYqnTH
28
- MZDYyjQtMB8GA1UdEQQYMBaBFGVyaWMuZ3VvY3pAZ21haWwuY29tMB8GA1UdEgQY
29
- MBaBFGVyaWMuZ3VvY3pAZ21haWwuY29tMA0GCSqGSIb3DQEBCwUAA4IBgQCdTl5T
30
- qfcrbo4KdgZM84ZbeiUIXcRy/chbfQfPZ/qPp7qKARLxRJINmaqt/bP+RrlQypEe
31
- 1EIYhbxLGo1TvpbRFuADUhZjGZ8Vaa+bgPfj8Dxa71ow5dF9nrqidddV7qjmk57F
32
- klOrOl+99Ryx01OAdlxGZqz/VrHrzbhQNtiUl2BYnosZLddYPTzuhNLe72eIypkY
33
- synsOqoXRuegCtO4sSGSvRV79/GyN0jqtptpa61MaxgYG13+P8QwXeTo2Ro86ZAJ
34
- h+KBs65p0MiFHl6zc2oany9Pk0kqs50TDKOCT7ZdSxz5xes0SvTi3mmX3XemjQhm
35
- qNb+5zsj4Kn5auKYA7GupfLYKS/dYt4EIfNKhSEHgkVFdVPxSAQ73UAWsndINTTA
36
- HjK18j09PoL9vWMUtyez2xpxlRDA+bEkF74AEVwMYozjP8VNM1ERTG+8kROuQjGV
37
- aWhGk3yVuHjmlBvfDpPqmux3ulWXnvHulcYiPxETh/m3PUfIKMTHydjAz88=
18
+ FgNjb20wggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDvLvsV0dygCIpJ
19
+ fi58762MvuxkFod1TEHkx2kmGbdazIrnS5uR1/H3dw+TY8tPp0/AdD4LYw2JOJy/
20
+ 2T9LUAO5HRBFRVfQEBqpEiIix8TK1uu62Ba9DKBng0y+2hpcdMnQE7xgri8QN1QA
21
+ xg9z7P7tRCCI/x8IEFI+2DNTVZqI20a3OniliWiGc+GE9/H7uYR3VvFxQyCrPGsR
22
+ 09Hp0FvjYQbkNoRznhNd+IqXs9t9AkaUqhuAzPMQYA3YVil8VWUJGVCaIYT6itUy
23
+ M7fIMjwZkUHLZJfikqzJB2n4R91huTb3BfEUMjJ2gonuVUjsmgrpk5kzKIkr3Z49
24
+ K/3PW6lt6sCKeBxqKUq7KGejND0QhH85Jn/RBJf5iLc8YX8IvjonsF+mDahnhQcH
25
+ qFavtYkmcTwCr6EjrsY5kR/XgxKfyB5r8QYkqhrGI84w9RhI9crmLEW0wC8ByZj0
26
+ m5D5wn/0b91hNmoqvkQyH2H5UCB9lo1CljRCb2/YefMg+s9iyrcCAwEAAaN7MHkw
27
+ CQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFJ38163LBZjvmEfRWTXp
28
+ ZjFNx8ndMB8GA1UdEQQYMBaBFGVyaWMuZ3VvY3pAZ21haWwuY29tMB8GA1UdEgQY
29
+ MBaBFGVyaWMuZ3VvY3pAZ21haWwuY29tMA0GCSqGSIb3DQEBCwUAA4IBgQDin3tk
30
+ EDZowoDU06C8CLFfnGX3PYT43c+dJi52L3mAEDilLirmoq/H8xbq9bxyCpofJj/b
31
+ Wyn+Ada+OjWvSRTdRHHd/w2MPNTiTaRhKi5w1xbLxJndjIKDsAWYIYX5vdryfjBJ
32
+ UngqW5Imxx4jzWCpvFAA1XfV2J/WD3IKRBhSECCslzTEBYwcJaj0UHmYJofMOJEh
33
+ f5Fsu5w3dXOBtmUzN9G2dgssmY8ldEtuSkj8USjsW1aWAEmfnDpQH1YSnA2uLo7d
34
+ 9cDmklPUoOO15i9Yjv+rYoWAqHFzPBUxUnuy/lIJSFTR0bD9b2+JuCSRvY95glad
35
+ lNKyXpZe/w2kofm5cSyoSF3TxeHKn29tQl8zgo2mwtuz042QSVcIw+5Q5wcmZpXL
36
+ uxhUIIN2A+qeUxOIoO9VfGAX5Q+cQ4J+EpKkDovIHaG0tJdNoA9EABD8yMMHgWgw
37
+ q9fk/nu08SjME28EsSxW0oLUQq1vHNKWUyZuHtihd0yBYGRJH7xdZivkUOs=
38
38
  -----END CERTIFICATE-----
39
- date: 2023-07-28 00:00:00.000000000 Z
39
+ date: 2024-01-04 00:00:00.000000000 Z
40
40
  dependencies:
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: activesupport
@@ -257,8 +257,8 @@ licenses:
257
257
  metadata:
258
258
  bug_tracker_uri: https://github.com/Eric-Guo/wechat/issues
259
259
  changelog_uri: https://github.com/Eric-Guo/wechat/releases
260
- documentation_uri: https://github.com/Eric-Guo/wechat/tree/v0.17.1#readme
261
- source_code_uri: https://github.com/Eric-Guo/wechat/tree/v0.17.1
260
+ documentation_uri: https://github.com/Eric-Guo/wechat/tree/v0.17.3#readme
261
+ source_code_uri: https://github.com/Eric-Guo/wechat/tree/v0.17.3
262
262
  rubygems_mfa_required: 'true'
263
263
  post_install_message:
264
264
  rdoc_options: []
@@ -275,7 +275,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
275
275
  - !ruby/object:Gem::Version
276
276
  version: 3.1.6
277
277
  requirements: []
278
- rubygems_version: 3.4.17
278
+ rubygems_version: 3.5.3
279
279
  signing_key:
280
280
  specification_version: 4
281
281
  summary: DSL for wechat message handling and API
metadata.gz.sig CHANGED
Binary file