wework 1.1.7 → 1.1.8

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: 5374370b839d61bc5d60a159fe4b72d11dec40fea3a605f35894ab66e9515f5c
4
- data.tar.gz: 05624fed768fefe0fa1e858769b4f8e94d16d2524603b7041b28b01a565bcb2e
3
+ metadata.gz: 57af16b2481bed88541d3f155b87adf4dd26a8b28999bce6c5b20a3c2d2fcc23
4
+ data.tar.gz: 39176c04e1e0daf24538dd046d81b0b66e7b9da8d09c374cda4023122dbcb465
5
5
  SHA512:
6
- metadata.gz: 998c2d6ce9420260dfa0afcb1331dc75092471b82aad189cbc5e509d4ca68e0d383fb9a82634ba8130591d3a7814d15517b837b26a1cd28c7da7013aa5f6c49b
7
- data.tar.gz: 6c4058794c2c8026e1f6edd547cf44ddd2c29a2adef201589aeaf603b2200f371945bea5ba1d0e71aec6e8f3a5351057c0afda71a87292e9fb1dbf850e5047fa
6
+ metadata.gz: e2d714537b289270b8195517e14de67ba332f501c2082764de8f5e59f9663bbd26b87d737199116f827632d93b7bcd2f6c2cbd2b9bf77ce44d1b55bc1013acb1
7
+ data.tar.gz: 5d2ad8d2925e1b679b07823c90e056f43ef3c191b8417970af1b15880281ec58ad5973befc8d30d0ecaa4eddc0ee0a4db106feeeeef0a407109d25fe126c24a3
data/README.md CHANGED
@@ -108,17 +108,22 @@ $contact_api = Wework::Api::Contact.new(
108
108
  )
109
109
  ```
110
110
 
111
- ### 应用服务商接口 (单点登录)
111
+ ### 应用服务商接口
112
112
 
113
113
  初始化
114
114
 
115
115
  ``` ruby
116
116
  $provider_api = Wework::Api::Provider.new(
117
- corp_id: ENV['WEWORK_PROVIDER_CORPID'], # 应用服务商 CorpID
118
- secret: ENV['WEWORK_PROVIDER_SECRET'] # Secret
117
+ corp_id: ENV['WEWORK_PROVIDER_CORPID'], # 应用服务商 CorpID
118
+ secret: ENV['WEWORK_PROVIDER_SECRET'], # Secret
119
+ token: ENV['WEWORK_PROVIDER_TOKEN'],
120
+ encoding_aes_key: ENV['WEWORK_PROVIDER_ENCODING_AES_KEY']
119
121
  )
120
122
  ```
121
123
 
124
+ 回调接口消息加解密参考「第三方应用回调协议」
125
+
126
+
122
127
  ### 小程序 encryptedData 解密
123
128
 
124
129
  ```ruby
@@ -2,6 +2,15 @@ module Wework
2
2
  module Api
3
3
  class Provider < Base
4
4
  include Methods::Provider
5
+ include Wework::Cipher
6
+
7
+ attr_reader :encoding_aes_key, :token
8
+
9
+ def initialize(options={})
10
+ @token = options.delete(:token)
11
+ @encoding_aes_key = options.delete(:encoding_aes_key)
12
+ super(options)
13
+ end
5
14
 
6
15
  private
7
16
 
@@ -7,40 +7,16 @@ module Wework
7
7
  include Wework::Cipher
8
8
  include Methods::Service
9
9
 
10
- attr_reader :encoding_aes_key, :suite_id, :suite_secret, :suite_token
10
+ attr_reader :encoding_aes_key, :suite_id, :suite_secret, :suite_token, :token
11
11
 
12
12
  def initialize(options={})
13
13
  @suite_id = options.delete(:suite_id)
14
14
  @suite_secret = options.delete(:suite_secret)
15
- @suite_token = options.delete(:suite_token)
15
+ @token = @suite_token = options.delete(:suite_token)
16
16
  @encoding_aes_key = options.delete(:encoding_aes_key)
17
17
  super(options)
18
18
  end
19
19
 
20
- def msg_decrypt message
21
- unpack(decrypt(Base64.decode64(message), encoding_aes_key))[0]
22
- end
23
-
24
- def msg_encrypt message
25
- Base64.strict_encode64(encrypt(pack(message, corp_id), encoding_aes_key))
26
- end
27
-
28
- def signature(timestamp, nonce, encrypt)
29
- array = [suite_token, timestamp, nonce]
30
- array << encrypt unless encrypt.nil?
31
- Digest::SHA1.hexdigest array.compact.collect(&:to_s).sort.join
32
- end
33
-
34
- def generate_xml(msg, timestamp, nonce)
35
- encrypt = msg_encrypt(msg)
36
- {
37
- Encrypt: encrypt,
38
- MsgSignature: signature(timestamp, nonce, encrypt),
39
- TimeStamp: timestamp,
40
- Nonce: nonce
41
- }.to_xml(root: 'xml', children: 'item', skip_instruct: true, skip_types: true)
42
- end
43
-
44
20
  def suite_ticket= ticket
45
21
  Wework.redis.set ticket_key, ticket
46
22
  end
data/lib/wework/cipher.rb CHANGED
@@ -54,6 +54,30 @@ module Wework
54
54
  [content, app_id]
55
55
  end
56
56
 
57
+ def msg_decrypt message
58
+ unpack(decrypt(Base64.decode64(message), encoding_aes_key))[0]
59
+ end
60
+
61
+ def msg_encrypt message
62
+ Base64.strict_encode64(encrypt(pack(message, corp_id), encoding_aes_key))
63
+ end
64
+
65
+ def signature(timestamp, nonce, encrypt)
66
+ array = [token, timestamp, nonce]
67
+ array << encrypt unless encrypt.nil?
68
+ Digest::SHA1.hexdigest array.compact.collect(&:to_s).sort.join
69
+ end
70
+
71
+ def generate_xml(msg, timestamp, nonce)
72
+ encrypt = msg_encrypt(msg)
73
+ {
74
+ Encrypt: encrypt,
75
+ MsgSignature: signature(timestamp, nonce, encrypt),
76
+ TimeStamp: timestamp,
77
+ Nonce: nonce
78
+ }.to_xml(root: 'xml', children: 'item', skip_instruct: true, skip_types: true)
79
+ end
80
+
57
81
  private
58
82
 
59
83
  def encode_padding(data)
@@ -1,3 +1,3 @@
1
1
  module Wework
2
- VERSION = '1.1.7'.freeze
2
+ VERSION = '1.1.8'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wework
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.7
4
+ version: 1.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - seandong