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 +4 -4
- data/README.md +13 -1
- data/lib/aliyun/cloudpush.rb +1 -1
- data/lib/aliyun/cloudpush/client.rb +21 -6
- data/lib/aliyun/cloudpush/config.rb +5 -5
- data/lib/aliyun/cloudpush/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4698262d9211119c9f349b8f9c4a7a1e36fbcf32
|
4
|
+
data.tar.gz: b25b15dd8ea479d96743653df6f06e1179cbb5ad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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
|
|
data/lib/aliyun/cloudpush.rb
CHANGED
@@ -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
|
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":
|
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':
|
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),
|
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', "#{
|
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
|
11
|
-
@
|
10
|
+
def default_client
|
11
|
+
@client ||= Client.new(app_key, access_key_id, access_key_secret)
|
12
12
|
end
|
13
13
|
|
14
|
-
def
|
15
|
-
@
|
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, :
|
28
|
+
attr_accessor :app_key, :access_key_id, :access_key_secret
|
29
29
|
end
|
30
30
|
end
|
31
31
|
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.
|
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-
|
11
|
+
date: 2018-04-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|