aliyun-cloudpush 0.1.0 → 0.2.0

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: 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