aliyun-cloudpush 0.1.0 → 0.2.0

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: 445f13f3637f1f66845f3bfc0e7a22895f083546
4
- data.tar.gz: fc864093550ab09d1433682226caa652a7077b99
3
+ metadata.gz: 4698262d9211119c9f349b8f9c4a7a1e36fbcf32
4
+ data.tar.gz: b25b15dd8ea479d96743653df6f06e1179cbb5ad
5
5
  SHA512:
6
- metadata.gz: 660f8b7dc155244806e595e93b5fadc06be0fd2d397a03f1930228e0427bf70ead3b50ab16ce3f94a3349e68c885c4a4c3e27385162ffde62839385138c01a38
7
- data.tar.gz: fa8437ab636230d35e859ca8269af7657ff5f63feb954be2f459e0d7251b32d1a980c0f4080a1ed3a64c1f4598975506aa2c3c39baf7d6595dfc0f6f97f962d9
6
+ metadata.gz: 6dd443b836b3ab50fc3eb73cbdd94e726ae159fbe8ef1b5a637080fb572a368f6b227aab49c2c026f7dedcbdfb8525966d56579b3b492b47427960a218fa8c48
7
+ data.tar.gz: 837f8a3c5383dd79540131d4773ffc0217e0e8b2e6bfeddf5b30471f97c1b94828293095521d3662cb0cda452bdd484a43a793bfe913b1afe930d36b85146826
data/README.md CHANGED
@@ -22,7 +22,19 @@ Or install it yourself as:
22
22
 
23
23
  ## Usage
24
24
 
25
- TODO: Write usage instructions here
25
+ ```ruby
26
+ push_client = Aliyun::Cloudpush::Client.new('app_key', 'access_key_id', 'acess_key_secret')
27
+ push_client.push('acccount_id', 'title', 'conttent')
28
+
29
+
30
+ # Or use global config
31
+ Aliyun::Cloudpush.configure do |config|
32
+ config.app_key = 'app_key'
33
+ config.access_key_id = 'access_key_id'
34
+ config.access_key_secret = 'acess_key_secret'
35
+ end
36
+ Aliyun::Cloudpush.default_client.push('acccount_id', 'title', 'conttent')
37
+ ```
26
38
 
27
39
  ## Development
28
40
 
@@ -1,6 +1,6 @@
1
1
  require "aliyun/cloudpush/version"
2
- require "aliyun/cloudpush/config"
3
2
  require "aliyun/cloudpush/client"
3
+ require "aliyun/cloudpush/config"
4
4
 
5
5
  module Aliyun
6
6
  module Cloudpush
@@ -7,14 +7,21 @@ require 'rest-client'
7
7
  module Aliyun
8
8
  module Cloudpush
9
9
  class Client
10
+ attr_reader :app_key, :access_key_id, :access_key_secret
10
11
 
11
- def push(employee_id, title, body)
12
+ def initialize(app_key, access_key_id, access_key_secret)
13
+ @access_key_id = access_key_id
14
+ @access_key_secret = access_key_secret
15
+ @app_key = app_key
16
+ end
17
+
18
+ def push(employee_id, title, body, options = {})
12
19
  params = {
13
20
  "TargetValue": employee_id,
14
21
  "Title": title,
15
22
  "Body": body,
16
23
  }
17
- http_post(default_push_params.merge(params))
24
+ http_post(default_push_params.merge(params).merge(options))
18
25
  end
19
26
 
20
27
  private
@@ -22,7 +29,7 @@ module Aliyun
22
29
  def default_push_params
23
30
  {
24
31
  "Action": "Push",
25
- "AppKey": Aliyun::Cloudpush.app_key,
32
+ "AppKey": self.app_key,
26
33
  "Target": "ACCOUNT",
27
34
  "DeviceType": "ALL",
28
35
  "PushType": "NOTICE",
@@ -37,7 +44,7 @@ module Aliyun
37
44
  'Format': "json",
38
45
  'RegionId': "cn-hangzhou",
39
46
  'Version': "2016-08-01",
40
- 'AccessKeyId': Aliyun::Cloudpush.access_key_id,
47
+ 'AccessKeyId': self.access_key_id,
41
48
  'SignatureMethod': "HMAC-SHA1",
42
49
  'SignatureVersion': "1.0",
43
50
  'SignatureNonce': (rand * 1_000_000_000).to_s,
@@ -46,13 +53,13 @@ module Aliyun
46
53
  end
47
54
 
48
55
  def params_str(action, params)
49
- str = params.sort.map { |k, v| [CGI.escape(k.to_s), CGI.escape(v.to_s)].join('=') }.join('&')
56
+ str = params.sort.map { |k, v| [CGI.escape(k.to_s), escape(v.to_s)].join('=') }.join('&')
50
57
  "#{action}&#{CGI.escape('/')}&#{CGI.escape(str)}"
51
58
  end
52
59
 
53
60
  def signature(str)
54
61
  Base64.strict_encode64(
55
- OpenSSL::HMAC.digest('sha1', "#{Aliyun::Cloudpush.access_key_secret}&", str)
62
+ OpenSSL::HMAC.digest('sha1', "#{self.access_key_secret}&", str)
56
63
  )
57
64
  end
58
65
 
@@ -61,6 +68,14 @@ module Aliyun
61
68
  s = signature(params_str('POST', p))
62
69
  res = RestClient.post(ENDPOINT, p.merge('Signature': s))
63
70
  JSON.parse(res)
71
+ rescue RestClient::ExceptionWithResponse =>e
72
+ puts e.response
73
+ end
74
+
75
+ def escape(str)
76
+ # https://help.aliyun.com/document_detail/48047.html?spm=a2c4g.11186623.2.4.NsNXUo
77
+ # convert space " " to "%20" instead of "+"
78
+ CGI.escape(str).gsub("+", "%20")
64
79
  end
65
80
  end
66
81
  end
@@ -7,12 +7,12 @@ module Aliyun
7
7
  yield self.config ||= Config.new
8
8
  end
9
9
 
10
- def app_key
11
- @app_key ||= config.app_key
10
+ def default_client
11
+ @client ||= Client.new(app_key, access_key_id, access_key_secret)
12
12
  end
13
13
 
14
- def app_secret
15
- @app_secret ||= config.app_secret
14
+ def app_key
15
+ @app_key ||= config.app_key
16
16
  end
17
17
 
18
18
  def access_key_id
@@ -25,7 +25,7 @@ module Aliyun
25
25
  end
26
26
 
27
27
  class Config
28
- attr_accessor :app_key, :app_secret, :access_key_id, :access_key_secret
28
+ attr_accessor :app_key, :access_key_id, :access_key_secret
29
29
  end
30
30
  end
31
31
  end
@@ -1,5 +1,5 @@
1
1
  module Aliyun
2
2
  module Cloudpush
3
- VERSION = "0.1.0"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aliyun-cloudpush
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeff Lai
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-03-16 00:00:00.000000000 Z
11
+ date: 2018-04-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client