jpush_api_ruby_client 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +45 -0
  6. data/Rakefile +1 -0
  7. data/doc/Gemfile.html +105 -0
  8. data/doc/JPushApiRubyClient/Client.html +774 -0
  9. data/doc/JPushApiRubyClient/MsgType.html +159 -0
  10. data/doc/JPushApiRubyClient/PlatformType.html +164 -0
  11. data/doc/JPushApiRubyClient/ReceiverType.html +169 -0
  12. data/doc/JPushApiRubyClient.html +166 -0
  13. data/doc/LICENSE_txt.html +121 -0
  14. data/doc/Rakefile.html +101 -0
  15. data/doc/created.rid +15 -0
  16. data/doc/doc/created_rid.html +99 -0
  17. data/doc/images/add.png +0 -0
  18. data/doc/images/arrow_up.png +0 -0
  19. data/doc/images/brick.png +0 -0
  20. data/doc/images/brick_link.png +0 -0
  21. data/doc/images/bug.png +0 -0
  22. data/doc/images/bullet_black.png +0 -0
  23. data/doc/images/bullet_toggle_minus.png +0 -0
  24. data/doc/images/bullet_toggle_plus.png +0 -0
  25. data/doc/images/date.png +0 -0
  26. data/doc/images/delete.png +0 -0
  27. data/doc/images/find.png +0 -0
  28. data/doc/images/loadingAnimation.gif +0 -0
  29. data/doc/images/macFFBgHack.png +0 -0
  30. data/doc/images/package.png +0 -0
  31. data/doc/images/page_green.png +0 -0
  32. data/doc/images/page_white_text.png +0 -0
  33. data/doc/images/page_white_width.png +0 -0
  34. data/doc/images/plugin.png +0 -0
  35. data/doc/images/ruby.png +0 -0
  36. data/doc/images/tag_blue.png +0 -0
  37. data/doc/images/tag_green.png +0 -0
  38. data/doc/images/transparent.png +0 -0
  39. data/doc/images/wrench.png +0 -0
  40. data/doc/images/wrench_orange.png +0 -0
  41. data/doc/images/zoom.png +0 -0
  42. data/doc/index.html +96 -0
  43. data/doc/jpush_api_ruby_client_gemspec.html +126 -0
  44. data/doc/js/darkfish.js +155 -0
  45. data/doc/js/jquery.js +18 -0
  46. data/doc/js/navigation.js +142 -0
  47. data/doc/js/search.js +94 -0
  48. data/doc/js/search_index.js +1 -0
  49. data/doc/js/searcher.js +228 -0
  50. data/doc/rdoc.css +595 -0
  51. data/doc/table_of_contents.html +99 -0
  52. data/example/client_example.rb +66 -0
  53. data/jpush_api_ruby_client.gemspec +25 -0
  54. data/lib/jpush_api_ruby_client/client.rb +233 -0
  55. data/lib/jpush_api_ruby_client/msg_type.rb +12 -0
  56. data/lib/jpush_api_ruby_client/platform_type.rb +14 -0
  57. data/lib/jpush_api_ruby_client/receiver_type.rb +16 -0
  58. data/lib/jpush_api_ruby_client/version.rb +3 -0
  59. data/lib/jpush_api_ruby_client.rb +8 -0
  60. metadata +158 -0
@@ -0,0 +1,66 @@
1
+ require 'jpush_api_ruby_client'
2
+
3
+ class ClientExample
4
+
5
+ app_key = '3af172b794896c3e1de43fe7' #必填,例如466f7032ac604e02fb7bda89
6
+ master_secret = '57c45646c772983eb0e7c455' #必填,每个应用都对应一个masterSecret
7
+
8
+ # 保存离线的时长。秒为单位。最多支持10天(864000秒)。
9
+ # 0 表示该消息不保存离线。即:用户在线马上发出,当前不在线用户将不会收到此消息。
10
+ # 此参数不设置则表示默认,默认为保存1天的离线消息(86400秒)。
11
+
12
+ time_to_live = 60 * 60 * 24
13
+
14
+ #
15
+ # Example1: 初始化,默认发送给android和ios,同时设置离线消息存活时间
16
+ # jpush_client = JPushApiRubyClient::Client.new(app_key, masterSecret, 'time_to_live' => time_to_live)
17
+ #
18
+ # Example2: 只发送给android
19
+ # jpush_client = JPushApiRubyClient::Client.new(app_key, master_secret, 'platform' => JPushApiRubyClient::PlatformType::ANDROID);
20
+ #
21
+ # Example3: 只发送给IOS
22
+ # jpush_client = JPushApiRubyClient::Client.new(app_key, master_secret, 'platform' => JPushApiRubyClient::PlatformType::IOS);
23
+ #
24
+ # Example4: 只发送给android,同时设置离线消息存活时间
25
+ # jpush_client =JPushApiRubyClient::Client.new(app_key, master_secret, 'time_to_live' => time_to_live, 'platform' => JPushApiRubyClient::PlatformType::ANDROID);
26
+ #
27
+ #Example5: 使用缺省值发送,默认 time_to_live 为保存1天的离线消息 ,发送给IOS,android两个平台
28
+ # jpush_client = JPushApiRubyClient::Client.new(app_key, master_secret)
29
+ #
30
+
31
+ jpush_client = JPushApiRubyClient::Client.new(app_key, master_secret,'platform' => JPushApiRubyClient::PlatformType::BOTH)
32
+
33
+ #jpush_client.enable_ssl(true) 是否启用https请求,缺省false
34
+
35
+
36
+ send_no = jpush_client.generate_send_no
37
+ msg_title = 'JPushApiRubyClient实例'
38
+
39
+ msg_content = '根据 appkey 发送广播通知'
40
+ puts send_result = jpush_client.send_notification_with_appkey(send_no, msg_title, msg_content,'extras' => {'key1'=>'value1','key2' => 'value2'})
41
+
42
+ msg_content = '根据 tag 发送通知'
43
+ puts send_result = jpush_client.send_notification_with_tag(send_no, 'ouyang', msg_title, msg_content)
44
+
45
+ msg_content = '根据 alias 发送通知'
46
+ puts send_result = jpush_client.send_notification_with_alias(send_no, '', msg_title, msg_content)
47
+
48
+ msg_content = '根据 imei 发送通知'
49
+ puts send_result = jpush_client.send_notification_with_imei(send_no, '', msg_title, msg_content)
50
+
51
+
52
+ msg_content = '根据 appkey 发送自定义消息'
53
+ puts send_result = jpush_client.send_message_with_appkey(send_no, msg_title, msg_content,'extras' => {'key1'=>'value1','key2' => 'value2'})
54
+
55
+ msg_content = '根据 tag 发送自定义消息'
56
+ puts send_result = jpush_client.send_message_with_alias(send_no, '', msg_title, msg_content)
57
+
58
+ msg_content = '根据 alias 发送自定义消息'
59
+ puts send_result = jpush_client.send_message_with_tag(send_no, '', msg_title, msg_content)
60
+
61
+ msg_content = '根据 imei 发送自定义消息'
62
+ puts send_result = jpush_client.send_message_with_imei(send_no, '', msg_title, msg_content)
63
+
64
+
65
+ end
66
+
@@ -0,0 +1,25 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path("../lib", __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "jpush_api_ruby_client/version"
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "jpush_api_ruby_client"
8
+ spec.version = JPushApiRubyClient::VERSION
9
+ spec.authors = ['Xian OuYang']
10
+ spec.email = ['suport@jpush.cn']
11
+ spec.description = "provide a ruby api gem for jpush https://www.jpush.cn"
12
+ spec.summary = "a ruby api client gem for jpush"
13
+ spec.homepage = "https://github.com/aaron-codes/jpush-api-ruby-client"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.3"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "rspec", "~> 2.6"
24
+ spec.add_runtime_dependency "rest-client","~> 1.6.7"
25
+ end
@@ -0,0 +1,233 @@
1
+ require 'rest-client'
2
+ require 'json'
3
+
4
+ module JPushApiRubyClient
5
+
6
+ # HTTP
7
+ HTTP_JPUSH_API_URL = 'http://api.jpush.cn:8800/v2/push'
8
+ # HTTPS
9
+ HTTPS_JPUSH_API_URL = "https://api.jpush.cn:443/v2/push"
10
+
11
+ class Client
12
+ include PlatformType, MsgType, ReceiverType
13
+ attr_accessor :app_key, :master_secret, :https, :time_to_live, :platform
14
+
15
+ =begin
16
+ * @param [String] app_key
17
+ * @param [String] master_secret
18
+ * @param [Hash] opts opts可选参数可包含time_to_live、platform
19
+ =end
20
+ def initialize(app_key, master_secret, opts ={}, &block)
21
+ @app_key = app_key
22
+ @master_secret = master_secret
23
+ @time_to_live = opts['time_to_live'] || 86400
24
+ @platform = opts['platform'] || PlatformType::BOTH
25
+ end
26
+
27
+ =begin
28
+ * 当前时间戳生成send_no
29
+ * @return [Integer]
30
+ =end
31
+ def generate_send_no
32
+ Integer(Time.new)
33
+ end
34
+
35
+ =begin
36
+ * 是否启用https ssl连接,缺省false
37
+ * @param [Object] true or false
38
+ =end
39
+ def enable_ssl(https = false)
40
+ @https = https
41
+ end
42
+
43
+ =begin
44
+ * 发送使用 appkey 推送的自定义消息
45
+ * @param [Integer] send_no
46
+ * @param [String] msg_title
47
+ * @param [String] msg_content
48
+ * @param [Hash] opts opts可选参数包含 extras、override_msg_id
49
+ * @return [Hash] sendno、msg_id、errcode、errmsg
50
+ =end
51
+ def send_message_with_appkey(send_no, msg_title, msg_content, opts = {})
52
+ receiver = {:receiver_type => ReceiverType::BROADCAST}
53
+ send_custom_message(send_no, msg_title, msg_content, receiver, opts)
54
+ end
55
+
56
+ =begin
57
+ * 发送标签带推送的自定义消息
58
+ * @param [Integer] send_no
59
+ * @param [String] tag
60
+ * @param [String] msg_title
61
+ * @param [String] msg_content
62
+ * @param [Hash] opts opts参数可包含 extras、override_msg_id
63
+ * @return [Hash] sendno、msg_id、errcode、errmsg
64
+ =end
65
+ def send_message_with_tag(send_no, tag, msg_title, msg_content, opts = {})
66
+ receiver = {:receiver_type => ReceiverType::TAG,
67
+ :receiver_value => tag}
68
+ send_custom_message(send_no, msg_title, msg_content, receiver, opts)
69
+ end
70
+
71
+ =begin
72
+ * 发送带别名推送的自定义消息
73
+ * @param [Integer] send_no
74
+ * @param [String] alias_
75
+ * @param [String] msg_title
76
+ * @param [String] msg_content
77
+ * @param [Hash] opts opts参数可包含 extras、override_msg_id
78
+ * @return [Hash] sendno、msg_id、errcode、errmsg
79
+ =end
80
+ def send_message_with_alias(send_no, alias_, msg_title, msg_content, opts = {})
81
+ receiver = {:receiver_type => ReceiverType::ALIAS,
82
+ :receiver_value => alias_}
83
+ send_custom_message(send_no, msg_title, msg_content, receiver, opts)
84
+ end
85
+
86
+ =begin
87
+ * 发送带 imei 推送的自定义消息
88
+ * @param [Integer] send_no
89
+ * @param [String] imei
90
+ * @param [String] msg_title
91
+ * @param [String] msg_content
92
+ * @param [Hash] opts opts参数可包含 extras、override_msg_id
93
+ * @return [Hash] sendno、msg_id、errcode、errmsg
94
+ =end
95
+ def send_message_with_imei(send_no, imei, msg_title, msg_content, opts = {})
96
+ receiver = {:receiver_type => ReceiverType::IMEI,
97
+ :receiver_value => imei}
98
+ send_custom_message(send_no, msg_title, msg_content, receiver, opts)
99
+ end
100
+
101
+ =begin
102
+ * 发送使用 appkey 推送的通知
103
+ * @param [Integer] send_no
104
+ * @param [String] msg_title
105
+ * @param [String] msg_content
106
+ * @param [Hash] opts opts参数可包含 builder_id 、extras 、override_msg_id
107
+ * @return [Hash] sendno、msg_id、errcode、errmsg
108
+ =end
109
+ def send_notification_with_appkey(send_no, msg_title, msg_content, opts = {})
110
+ receiver = {:receiver_type => ReceiverType::BROADCAST,
111
+ :receiver_value => ''}
112
+ send_notification(send_no, msg_title, msg_content, receiver, opts)
113
+ end
114
+
115
+ =begin
116
+ * 发送带标签推送的通知
117
+ * @param [Integer] send_no
118
+ * @param [String] tag
119
+ * @param [String] msg_title
120
+ * @param [String] msg_content
121
+ * @param [Hash] opts opts参数可包含 builder_id 、extras、override_msg_id
122
+ * @return [Hash] sendno、msg_id、errcode、errmsg
123
+ =end
124
+ def send_notification_with_tag(send_no, tag, msg_title, msg_content, opts = {})
125
+ receiver = {:receiver_type => ReceiverType::TAG,
126
+ :receiver_value => tag}
127
+ send_notification(send_no, msg_title, msg_content, receiver, opts)
128
+ end
129
+
130
+ =begin
131
+ * 发送带别名推送的通知
132
+ * @param [Integer] send_no
133
+ * @param [String] alias_
134
+ * @param [String] msg_title
135
+ * @param [String] msg_content
136
+ * @param [Hash] opts opts参数可包含builder_id 、extras、override_msg_id
137
+ * @return [Hash] sendno、msg_id、errcode、errmsg
138
+ =end
139
+ def send_notification_with_alias(send_no, alias_, msg_title, msg_content, opts = {})
140
+ receiver = {:receiver_type => ReceiverType::ALIAS,
141
+ :receiver_value => alias_}
142
+ send_notification(send_no, msg_title, msg_content, receiver, opts)
143
+ end
144
+
145
+ =begin
146
+ * 发送带IMEI号推送的通知
147
+ * @param [Integer] send_no
148
+ * @param [String] imei
149
+ * @param [String] msg_title
150
+ * @param [String] msg_content
151
+ * @param [Hash] opts opts参数可包含 builder_id、extras、override_msg_id
152
+ * @return [Hash] sendno、msg_id、errcode、errmsg
153
+ =end
154
+ def send_notification_with_imei(send_no, imei, msg_title, msg_content, opts = {})
155
+ receiver = {:receiver_type => ReceiverType::IMEI,
156
+ :receiver_value => imei}
157
+ send_notification(send_no, msg_title, msg_content, receiver, opts)
158
+ end
159
+
160
+ private
161
+
162
+ def send_notification(send_no, msg_title, msg_content, receiver, opts)
163
+ msg_body = {:n_content => msg_content,
164
+ :n_title => msg_title,
165
+ :n_builder_id => opts['builder_id'] || 0
166
+ }
167
+ msg_body[:n_extras] = opts['extras'] if opts.has_key?('extras')
168
+
169
+ msg = {:msg_type => MsgType::NOTIFICATION,
170
+ :msg_content => msg_body,
171
+ :platform => platform,
172
+ :time_to_live => time_to_live
173
+ }
174
+ msg[:override_msg_id] = opts['override_msg_id'] if opts.has_key?('override_msg_id')
175
+ send_message(send_no, msg, receiver)
176
+ end
177
+
178
+ def send_custom_message(send_no, msg_title, msg_content, receiver, opts)
179
+ msg_body = {:message => msg_content,
180
+ :title => msg_title
181
+ }
182
+ msg_body[:extras] = opts['extras'] if opts.has_key?('extras')
183
+
184
+ msg = {:msg_type => MsgType::MESSAGE,
185
+ :msg_content => msg_body,
186
+ :platform => platform,
187
+ :time_to_live => time_to_live
188
+ }
189
+ msg[:override_msg_id] = opts['override_msg_id'] if msg.has_key?('override_msg_id')
190
+
191
+ send_message(send_no, msg, receiver)
192
+ end
193
+
194
+ # MD5 secret
195
+
196
+ def build_verification(send_no, receiver_type, receiver_value, master_secret)
197
+ verification_code = "#{send_no}#{receiver_type}#{receiver_value}#{master_secret}"
198
+ Digest::MD5.hexdigest(verification_code)
199
+ end
200
+
201
+ def send_message(send_no, msg, receiver, options={})
202
+ api_url = https == true ? HTTPS_JPUSH_API_URL : HTTP_JPUSH_API_URL
203
+ post_body = {}
204
+ post_body[:app_key] = app_key
205
+ post_body[:sendno] = send_no
206
+ post_body[:receiver_type] = receiver[:receiver_type]
207
+ post_body[:receiver_value] = receiver[:receiver_value] if receiver.has_key?(:receiver_value)
208
+
209
+ post_body[:verification_code] = build_verification(send_no,
210
+ receiver[:receiver_type],
211
+ receiver[:receiver_value] || '',
212
+ master_secret)
213
+ post_body[:msg_type] = msg[:msg_type]
214
+ post_body[:msg_content] = JSON.generate(msg[:msg_content])
215
+ post_body[:platform] = msg[:platform]
216
+ post_body[:time_to_live] = msg[:time_to_live]
217
+ post_body[:override_msg_id] = msg[:override_msg_id] if msg.has_key?(:override_msg_id)
218
+
219
+ post_body.merge!(options)
220
+ post_jpush_api(api_url, post_body)
221
+ end
222
+
223
+ # POST JPush API
224
+ def post_jpush_api(api_url, post_body)
225
+ response_msg = RestClient.post(
226
+ api_url,
227
+ post_body,
228
+ content_type: "application/x-www-form-urlencoded",
229
+ accept: :json)
230
+ JSON.parse(response_msg)
231
+ end
232
+ end
233
+ end
@@ -0,0 +1,12 @@
1
+ module JPushApiRubyClient
2
+ =begin
3
+ * 消息类型
4
+ =end
5
+ module MsgType
6
+
7
+ # 通知
8
+ NOTIFICATION = 1
9
+ # 消息
10
+ MESSAGE = 2
11
+ end
12
+ end
@@ -0,0 +1,14 @@
1
+ module JPushApiRubyClient
2
+ =begin
3
+ * 平台标识
4
+ =end
5
+ module PlatformType
6
+
7
+ # 安卓平台
8
+ ANDROID = 'android'
9
+ # IOS平台
10
+ IOS = 'ios'
11
+ # 安卓与IOS平台
12
+ BOTH = 'android,ios'
13
+ end
14
+ end
@@ -0,0 +1,16 @@
1
+ module JPushApiRubyClient
2
+ =begin
3
+ * 消息接收类型
4
+ =end
5
+ module ReceiverType
6
+
7
+ # 手机串号
8
+ IMEI = '1'
9
+ # 标签
10
+ TAG = '2'
11
+ # 别名
12
+ ALIAS = '3'
13
+ # 广播
14
+ BROADCAST = '4'
15
+ end
16
+ end
@@ -0,0 +1,3 @@
1
+ module JPushApiRubyClient
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,8 @@
1
+ require File.expand_path('../jpush_api_ruby_client/version', __FILE__)
2
+ module JPushApiRubyClient
3
+ autoload :Client, 'jpush_api_ruby_client/client'
4
+ autoload :ReceiverType, 'jpush_api_ruby_client/receiver_type'
5
+ autoload :PlatformType, 'jpush_api_ruby_client/platform_type'
6
+ autoload :MsgType, 'jpush_api_ruby_client/msg_type'
7
+
8
+ end
metadata ADDED
@@ -0,0 +1,158 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jpush_api_ruby_client
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Xian OuYang
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-10-24 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '2.6'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '2.6'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rest-client
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 1.6.7
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: 1.6.7
69
+ description: provide a ruby api gem for jpush https://www.jpush.cn
70
+ email:
71
+ - suport@jpush.cn
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - .gitignore
77
+ - Gemfile
78
+ - LICENSE.txt
79
+ - README.md
80
+ - Rakefile
81
+ - doc/Gemfile.html
82
+ - doc/JPushApiRubyClient.html
83
+ - doc/JPushApiRubyClient/Client.html
84
+ - doc/JPushApiRubyClient/MsgType.html
85
+ - doc/JPushApiRubyClient/PlatformType.html
86
+ - doc/JPushApiRubyClient/ReceiverType.html
87
+ - doc/LICENSE_txt.html
88
+ - doc/Rakefile.html
89
+ - doc/created.rid
90
+ - doc/doc/created_rid.html
91
+ - doc/images/add.png
92
+ - doc/images/arrow_up.png
93
+ - doc/images/brick.png
94
+ - doc/images/brick_link.png
95
+ - doc/images/bug.png
96
+ - doc/images/bullet_black.png
97
+ - doc/images/bullet_toggle_minus.png
98
+ - doc/images/bullet_toggle_plus.png
99
+ - doc/images/date.png
100
+ - doc/images/delete.png
101
+ - doc/images/find.png
102
+ - doc/images/loadingAnimation.gif
103
+ - doc/images/macFFBgHack.png
104
+ - doc/images/package.png
105
+ - doc/images/page_green.png
106
+ - doc/images/page_white_text.png
107
+ - doc/images/page_white_width.png
108
+ - doc/images/plugin.png
109
+ - doc/images/ruby.png
110
+ - doc/images/tag_blue.png
111
+ - doc/images/tag_green.png
112
+ - doc/images/transparent.png
113
+ - doc/images/wrench.png
114
+ - doc/images/wrench_orange.png
115
+ - doc/images/zoom.png
116
+ - doc/index.html
117
+ - doc/jpush_api_ruby_client_gemspec.html
118
+ - doc/js/darkfish.js
119
+ - doc/js/jquery.js
120
+ - doc/js/navigation.js
121
+ - doc/js/search.js
122
+ - doc/js/search_index.js
123
+ - doc/js/searcher.js
124
+ - doc/rdoc.css
125
+ - doc/table_of_contents.html
126
+ - example/client_example.rb
127
+ - jpush_api_ruby_client.gemspec
128
+ - lib/jpush_api_ruby_client.rb
129
+ - lib/jpush_api_ruby_client/client.rb
130
+ - lib/jpush_api_ruby_client/msg_type.rb
131
+ - lib/jpush_api_ruby_client/platform_type.rb
132
+ - lib/jpush_api_ruby_client/receiver_type.rb
133
+ - lib/jpush_api_ruby_client/version.rb
134
+ homepage: https://github.com/aaron-codes/jpush-api-ruby-client
135
+ licenses:
136
+ - MIT
137
+ metadata: {}
138
+ post_install_message:
139
+ rdoc_options: []
140
+ require_paths:
141
+ - lib
142
+ required_ruby_version: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - '>='
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ required_rubygems_version: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - '>='
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ requirements: []
153
+ rubyforge_project:
154
+ rubygems_version: 2.0.3
155
+ signing_key:
156
+ specification_version: 4
157
+ summary: a ruby api client gem for jpush
158
+ test_files: []