xiaomi-push 0.2.1 → 0.2.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -0
- data/README.md +2 -0
- data/Rakefile +22 -23
- data/bin/xmp +2 -4
- data/lib/xiaomi/push.rb +9 -15
- data/lib/xiaomi/push/client.rb +1 -3
- data/lib/xiaomi/push/commands.rb +6 -1
- data/lib/xiaomi/push/commands/feedback.rb +14 -14
- data/lib/xiaomi/push/commands/message.rb +59 -67
- data/lib/xiaomi/push/const.rb +4 -5
- data/lib/xiaomi/push/devices/ios.rb +0 -2
- data/lib/xiaomi/push/error.rb +0 -1
- data/lib/xiaomi/push/services/feedback.rb +1 -2
- data/lib/xiaomi/push/services/messages/base.rb +12 -12
- data/lib/xiaomi/push/services/topic.rb +20 -19
- data/lib/xiaomi/push/version.rb +1 -1
- data/xiaomi-push.gemspec +15 -15
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 596215b9db023ba5ed57ecdb279b08227b7c181d
|
4
|
+
data.tar.gz: d404409f70e5b628360cb926ba0229cff4a2a10e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2c5ca54678cff7b74bbc93d8c9d8a90c9de3d7c1c61999caca6425f0dc299023766456a39e5de5af2da691e6e2c8cd5178c73f2e748a2dc0787fcff86dafea72
|
7
|
+
data.tar.gz: 99cf5f458eb925cea7b54e09fe411d648dfcee67ce5f041579383bc6c65be04b789ea0b7622251962b0be9fbdb2003efb5aac780b9662c4f39f64d7949cc8c11
|
data/Gemfile
CHANGED
data/README.md
CHANGED
data/Rakefile
CHANGED
@@ -1,7 +1,6 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require 'bundler/gem_tasks'
|
2
|
+
require 'rspec/core/rake_task'
|
3
3
|
require 'dotenv/tasks'
|
4
|
-
require 'awesome_print'
|
5
4
|
|
6
5
|
# $LOAD_PATH.unshift File.expand_path('../lib', __FILE__)
|
7
6
|
|
@@ -9,49 +8,49 @@ require 'xiaomi/push'
|
|
9
8
|
|
10
9
|
RSpec::Core::RakeTask.new(:spec)
|
11
10
|
|
12
|
-
task :
|
13
|
-
|
14
|
-
task :send => :dotenv do
|
11
|
+
task default: :spec
|
15
12
|
|
13
|
+
task send: :dotenv do
|
16
14
|
message = {
|
17
15
|
title: '这是标题',
|
18
16
|
description: '这个是推送的描述',
|
19
|
-
notify_type: -1
|
17
|
+
notify_type: -1
|
20
18
|
}
|
19
|
+
|
21
20
|
client = Xiaomi::Push::Android.new(ENV['XIAOMI_PUSH_ANDROID_SECRET'])
|
22
21
|
|
23
|
-
p
|
24
|
-
client.message.send(reg_id:'', message:message)
|
25
|
-
r = client.message.send(alias:'866383029998732', message:message)
|
26
|
-
r = client.message.send(topic:'test', message:message)
|
27
|
-
|
22
|
+
p 'Send message to android device'
|
23
|
+
client.message.send(reg_id: '', message: message)
|
24
|
+
r = client.message.send(alias: '866383029998732', message: message)
|
25
|
+
r = client.message.send(topic: 'test', message: message)
|
26
|
+
puts r
|
28
27
|
|
29
|
-
p
|
28
|
+
p 'Send message to ios device'
|
30
29
|
client = Xiaomi::Push::IOS.new(ENV['XIAOMI_PUSH_IOS_SECRET'])
|
31
30
|
r = client.message.send(
|
32
|
-
reg_id:'xksdf76s667687xd786sdxsdf689s6x6s8d76s8d',
|
33
|
-
message:Xiaomi::Push::Message::IOS.new(
|
34
|
-
description:'这不是描述'
|
31
|
+
reg_id: 'xksdf76s667687xd786sdxsdf689s6x6s8d76s8d',
|
32
|
+
message: Xiaomi::Push::Message::IOS.new(
|
33
|
+
description: '这不是描述'
|
35
34
|
))
|
36
|
-
|
35
|
+
puts r
|
37
36
|
end
|
38
37
|
|
39
38
|
namespace :topic do
|
40
|
-
task :
|
39
|
+
task subscribe: :dotenv do
|
41
40
|
client = Xiaomi::Push::Android.new(ENV['XIAOMI_PUSH_ANDROID_SECRET'])
|
42
|
-
r = client.topic.subscribe(alias:'866383029998732', name:'test')
|
41
|
+
r = client.topic.subscribe(alias: '866383029998732', name: 'test')
|
43
42
|
ap r
|
44
43
|
end
|
45
44
|
|
46
|
-
task :
|
45
|
+
task unsubscribe: :dotenv do
|
47
46
|
client = Xiaomi::Push::Android.new(ENV['XIAOMI_PUSH_ANDROID_SECRET'])
|
48
|
-
r = client.topic.unsubscribe(alias:'866383029998732', name:'test')
|
47
|
+
r = client.topic.unsubscribe(alias: '866383029998732', name: 'test')
|
49
48
|
ap r
|
50
49
|
end
|
51
50
|
end
|
52
51
|
|
53
52
|
task :message do
|
54
|
-
ios_message = Xiaomi::Push::Message::IOS.new(title:'dddd')
|
53
|
+
ios_message = Xiaomi::Push::Message::IOS.new(title: 'dddd')
|
55
54
|
ios_message.extra('url', 'http://www.xxx.com')
|
56
55
|
p ios_message
|
57
56
|
|
@@ -61,5 +60,5 @@ end
|
|
61
60
|
task :feedback do
|
62
61
|
client = Xiaomi::Push::Android.new(ENV['XIAOMI_PUSH_ANDROID_SECRET'])
|
63
62
|
r = client.feedback.invalid
|
64
|
-
|
63
|
+
puts r
|
65
64
|
end
|
data/bin/xmp
CHANGED
@@ -2,10 +2,8 @@
|
|
2
2
|
|
3
3
|
require 'rubygems'
|
4
4
|
require 'commander/import'
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require "awesome_print"
|
8
|
-
|
5
|
+
require 'bundler/setup'
|
6
|
+
require 'xiaomi/push'
|
9
7
|
|
10
8
|
program :version, Xiaomi::Push::VERSION
|
11
9
|
program :description, 'xiaomi push command line tool'
|
data/lib/xiaomi/push.rb
CHANGED
@@ -1,22 +1,16 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
1
|
+
require 'xiaomi/push/version'
|
2
|
+
require 'xiaomi/push/error'
|
3
|
+
require 'xiaomi/push/const'
|
4
|
+
require 'xiaomi/push/client'
|
5
5
|
|
6
|
-
require
|
7
|
-
require
|
8
|
-
|
9
|
-
require "xiaomi/push/services/message"
|
10
|
-
require "xiaomi/push/services/topic"
|
11
|
-
require "xiaomi/push/services/feedback"
|
6
|
+
require 'xiaomi/push/devices/ios'
|
7
|
+
require 'xiaomi/push/devices/android'
|
12
8
|
|
9
|
+
require 'xiaomi/push/services/message'
|
10
|
+
require 'xiaomi/push/services/topic'
|
11
|
+
require 'xiaomi/push/services/feedback'
|
13
12
|
|
14
13
|
unless defined?(Dotenv)
|
15
14
|
require 'dotenv'
|
16
15
|
Dotenv.load
|
17
16
|
end
|
18
|
-
|
19
|
-
module Xiaomi
|
20
|
-
module Push
|
21
|
-
end
|
22
|
-
end
|
data/lib/xiaomi/push/client.rb
CHANGED
@@ -8,7 +8,7 @@ module Xiaomi
|
|
8
8
|
|
9
9
|
attr_reader :device, :secret, :header
|
10
10
|
def initialize(secret)
|
11
|
-
@device = self.class.name.split(
|
11
|
+
@device = self.class.name.split('::')[-1].upcase
|
12
12
|
@secret = secret
|
13
13
|
|
14
14
|
unless DEVICES.include?@device
|
@@ -34,12 +34,10 @@ module Xiaomi
|
|
34
34
|
@feedback ||= Services::Feedback.new(self)
|
35
35
|
end
|
36
36
|
|
37
|
-
|
38
37
|
def request(url, params)
|
39
38
|
r = RestClient.post url, params, @header
|
40
39
|
data = MultiJson.load r
|
41
40
|
end
|
42
|
-
|
43
41
|
end
|
44
42
|
end
|
45
43
|
end
|
data/lib/xiaomi/push/commands.rb
CHANGED
@@ -4,11 +4,11 @@ command :feedback do |c|
|
|
4
4
|
c.description = ''
|
5
5
|
|
6
6
|
# normal params
|
7
|
-
c.option '--device DEVICE',
|
7
|
+
c.option '--device DEVICE', %w('android', 'ios'), '设备类型'
|
8
8
|
c.option '--secret SECRET', '应用密钥'
|
9
9
|
|
10
10
|
c.action do |args, options|
|
11
|
-
|
11
|
+
puts options if $verbose
|
12
12
|
|
13
13
|
@device = options.device.capitalize if options.device
|
14
14
|
@secret = options.secret
|
@@ -21,19 +21,19 @@ command :feedback do |c|
|
|
21
21
|
|
22
22
|
private
|
23
23
|
|
24
|
-
|
25
|
-
|
26
|
-
|
24
|
+
def feedback!
|
25
|
+
client = Xiaomi::Push.const_get(@device).new(@secret)
|
26
|
+
r = client.feedback.invalid
|
27
27
|
|
28
|
-
|
29
|
-
|
28
|
+
puts r
|
29
|
+
end
|
30
30
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
31
|
+
def determine_device!
|
32
|
+
devices = %w(Android iOS).freeze
|
33
|
+
@device = choose "选择推送设备:", *devices
|
34
|
+
end
|
35
35
|
|
36
|
-
|
37
|
-
|
38
|
-
|
36
|
+
def determine_secret!
|
37
|
+
@secret ||= ask '小米应用密钥:'
|
38
|
+
end
|
39
39
|
end
|
@@ -4,7 +4,7 @@ command :message do |c|
|
|
4
4
|
c.description = '使用小米推送消息(目前仅支持 regid/alias/topic 推送方式)'
|
5
5
|
|
6
6
|
# normal params
|
7
|
-
c.option '--device DEVICE',
|
7
|
+
c.option '--device DEVICE', %w('android', 'ios'), '设备类型'
|
8
8
|
c.option '--secret SECRET', '应用密钥'
|
9
9
|
|
10
10
|
# type
|
@@ -18,16 +18,8 @@ command :message do |c|
|
|
18
18
|
c.option '-b', '--badge BADGE', Integer, '消息数字'
|
19
19
|
c.option '-e', '--extras KEY=VALUE', Array, '自定义数据(使用 KEY=VALUE 方式,多个以逗号不带空格分隔)'
|
20
20
|
|
21
|
-
# ## ios only
|
22
|
-
# c.option '-y', '--category CATEGORY', '推送类别名称 (仅 iOS 有效)'
|
23
|
-
# c.option '-v', '--environment ENV', [:production, :sandbox], '推送环境(仅 iOS 有效)'
|
24
|
-
#
|
25
|
-
# ## android only
|
26
|
-
# c.option '-g', '--through THROUGHT', [0, 1], '消息传递方式(仅 iOS 有效)'
|
27
|
-
# c.option '-n', '--notify NOTIFY', [-1, 1, 2, 4], 'message notify type'
|
28
|
-
|
29
21
|
c.action do |args, options|
|
30
|
-
|
22
|
+
puts options if $verbose
|
31
23
|
|
32
24
|
@device = options.device.capitalize if options.device
|
33
25
|
@secret = options.secret
|
@@ -43,78 +35,78 @@ command :message do |c|
|
|
43
35
|
|
44
36
|
private
|
45
37
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
38
|
+
def sent!
|
39
|
+
message_data = {
|
40
|
+
@channel.to_sym => @channel_id,
|
41
|
+
:message => @message
|
42
|
+
}
|
51
43
|
|
52
|
-
|
53
|
-
|
54
|
-
|
44
|
+
if $verbose
|
45
|
+
puts message_data
|
46
|
+
end
|
55
47
|
|
56
|
-
|
57
|
-
|
48
|
+
client = Xiaomi::Push.const_get(@device).new(@secret)
|
49
|
+
r = client.message.send(message_data)
|
58
50
|
|
59
|
-
|
60
|
-
|
51
|
+
puts r
|
52
|
+
end
|
61
53
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
54
|
+
def determine_android_message!(options)
|
55
|
+
@message = Xiaomi::Push::Message::Android.new(
|
56
|
+
title: @title,
|
57
|
+
description: @description,
|
58
|
+
badge: @badge,
|
59
|
+
extras: @extras
|
60
|
+
)
|
61
|
+
end
|
70
62
|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
63
|
+
def determine_ios_message!(options)
|
64
|
+
@message = Xiaomi::Push::Message::IOS.new(
|
65
|
+
description: @description,
|
66
|
+
badge: @badge,
|
67
|
+
extras: @extras
|
68
|
+
)
|
69
|
+
end
|
78
70
|
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
71
|
+
def determine_message!(options)
|
72
|
+
@title = options.title
|
73
|
+
@description = options.description
|
74
|
+
@badge = options.badge
|
83
75
|
|
84
|
-
|
85
|
-
|
76
|
+
@extras =
|
77
|
+
if options.extras
|
78
|
+
Hash[options.extras.collect { |data| data.split(/\=/) }]
|
86
79
|
else
|
87
80
|
nil
|
88
81
|
end
|
89
82
|
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
def determine_device!
|
99
|
-
devices = %w[Android iOS].freeze
|
100
|
-
@device = choose "选择推送设备:", *devices
|
83
|
+
case @device.downcase
|
84
|
+
when 'android'
|
85
|
+
determine_android_message!(options)
|
86
|
+
when 'ios'
|
87
|
+
determine_ios_message!(options)
|
101
88
|
end
|
89
|
+
end
|
102
90
|
|
103
|
-
|
104
|
-
|
105
|
-
|
91
|
+
def determine_device!
|
92
|
+
devices = %w(Android iOS).freeze
|
93
|
+
@device = choose "选择推送设备:", *devices
|
94
|
+
end
|
106
95
|
|
107
|
-
|
108
|
-
|
109
|
-
|
96
|
+
def determine_secret!
|
97
|
+
@secret ||= ask '小米应用密钥:'
|
98
|
+
end
|
110
99
|
|
111
|
-
|
112
|
-
|
100
|
+
def determine_channel!(options)
|
101
|
+
channles = %w(regid alias topic).freeze
|
102
|
+
@channel = channles.select { |k| options.__hash__.key?k.to_sym }
|
113
103
|
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
104
|
+
if @channel.count > 0
|
105
|
+
@channel = @channel[0]
|
106
|
+
@channel_id = options.__hash__[@channel.to_sym]
|
107
|
+
else
|
108
|
+
@channel = choose "选择推送方式:", *channles
|
109
|
+
@channel_id = ask "输入 #{@channel} 的值:"
|
119
110
|
end
|
111
|
+
end
|
120
112
|
end
|
data/lib/xiaomi/push/const.rb
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
require 'uri'
|
2
2
|
|
3
|
-
|
4
3
|
module Xiaomi
|
5
4
|
module Push
|
6
5
|
module Const
|
7
|
-
DEVICES = %w
|
6
|
+
DEVICES = %w(ANDROID IOS).freeze
|
8
7
|
|
9
|
-
PRODUCTION_URL = 'https://api.xmpush.xiaomi.com'
|
10
|
-
SANDBOX_URL = 'https://sandbox.xmpush.xiaomi.com'
|
8
|
+
PRODUCTION_URL = 'https://api.xmpush.xiaomi.com'.freeze
|
9
|
+
SANDBOX_URL = 'https://sandbox.xmpush.xiaomi.com'.freeze
|
11
10
|
|
12
11
|
attr_reader :base_url
|
13
12
|
|
@@ -28,7 +27,7 @@ module Xiaomi
|
|
28
27
|
end
|
29
28
|
|
30
29
|
def build_uri(uri)
|
31
|
-
URI
|
30
|
+
URI.join(@base_url, "v2/#{uri}").to_s
|
32
31
|
end
|
33
32
|
end
|
34
33
|
end
|
data/lib/xiaomi/push/error.rb
CHANGED
@@ -2,7 +2,6 @@ module Xiaomi
|
|
2
2
|
module Push
|
3
3
|
module Services
|
4
4
|
class Feedback
|
5
|
-
|
6
5
|
attr_reader :context
|
7
6
|
|
8
7
|
def initialize(context)
|
@@ -12,7 +11,7 @@ module Xiaomi
|
|
12
11
|
def invalid
|
13
12
|
url = 'https://feedback.xmpush.xiaomi.com/v1/feedback/fetch_invalid_regids'
|
14
13
|
r = RestClient.get url, @context.header
|
15
|
-
|
14
|
+
MultiJson.load r
|
16
15
|
end
|
17
16
|
end
|
18
17
|
end
|
@@ -15,28 +15,28 @@ module Xiaomi
|
|
15
15
|
def type(key, value = nil)
|
16
16
|
key = "@#{key}"
|
17
17
|
|
18
|
-
|
19
|
-
instance_variable_get key
|
20
|
-
else
|
18
|
+
if value
|
21
19
|
instance_variable_set key, value
|
20
|
+
else
|
21
|
+
instance_variable_get key
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
25
|
def build
|
26
26
|
hash_data = {}
|
27
27
|
instance_variables.each do |ivar|
|
28
|
-
key = ivar.to_s.
|
28
|
+
key = ivar.to_s.delete('@', '')
|
29
29
|
value = instance_variable_get ivar
|
30
30
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
hash_data[key] = v
|
38
|
-
end
|
31
|
+
next unless value
|
32
|
+
|
33
|
+
if key == 'extras'
|
34
|
+
value.each do |k, v|
|
35
|
+
key = "extra.#{k}"
|
36
|
+
hash_data[key] = v
|
39
37
|
end
|
38
|
+
else
|
39
|
+
hash_data[key] = value
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
@@ -9,34 +9,35 @@ module Xiaomi
|
|
9
9
|
|
10
10
|
def subscribe(**options)
|
11
11
|
url, params = prepare_params(__method__.to_s, options)
|
12
|
-
|
12
|
+
@context.request url, params
|
13
13
|
end
|
14
14
|
|
15
15
|
def unsubscribe(**options)
|
16
16
|
url, params = prepare_params(__method__.to_s, options)
|
17
|
-
|
17
|
+
@context.request url, params
|
18
18
|
end
|
19
19
|
|
20
20
|
private
|
21
|
-
def prepare_params(uri, options)
|
22
|
-
if options.has_key?(:reg_id)
|
23
|
-
type = "registration_id"
|
24
|
-
value = options[:reg_id]
|
25
|
-
url = @context.build_uri("topic/#{uri}")
|
26
|
-
elsif options.has_key?(:alias)
|
27
|
-
type = "aliases"
|
28
|
-
value = options[:alias]
|
29
|
-
url = @context.build_uri("topic/#{uri}/alias")
|
30
|
-
end
|
31
21
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
}
|
37
|
-
|
38
|
-
|
22
|
+
def prepare_params(uri, options)
|
23
|
+
if options.key?(:reg_id)
|
24
|
+
type = 'registration_id'
|
25
|
+
value = options[:reg_id]
|
26
|
+
url = @context.build_uri("topic/#{uri}")
|
27
|
+
elsif options.key?(:alias)
|
28
|
+
type = 'aliases'
|
29
|
+
value = options[:alias]
|
30
|
+
url = @context.build_uri("topic/#{uri}/alias")
|
39
31
|
end
|
32
|
+
|
33
|
+
params = {
|
34
|
+
type.to_sym => value,
|
35
|
+
:topic => options[:name],
|
36
|
+
:category => options[:category]
|
37
|
+
}
|
38
|
+
|
39
|
+
[url, params]
|
40
|
+
end
|
40
41
|
end
|
41
42
|
end
|
42
43
|
end
|
data/lib/xiaomi/push/version.rb
CHANGED
data/xiaomi-push.gemspec
CHANGED
@@ -4,26 +4,26 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
require 'xiaomi/push/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
7
|
+
spec.name = 'xiaomi-push'
|
8
8
|
spec.version = Xiaomi::Push::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
9
|
+
spec.authors = ['icyleaf']
|
10
|
+
spec.email = ['icyleaf.cn@gmail.com']
|
11
11
|
|
12
|
-
spec.summary =
|
13
|
-
spec.description =
|
14
|
-
spec.homepage =
|
12
|
+
spec.summary = 'MiPush Server SDK for Ruby'
|
13
|
+
spec.description = 'MiPush Server SDK for Ruby'
|
14
|
+
spec.homepage = 'http://github.com/icyleaf/xiaomi-push'
|
15
15
|
|
16
16
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
17
17
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
-
spec.require_paths = [
|
18
|
+
spec.require_paths = ['lib']
|
19
19
|
|
20
|
-
spec.add_dependency
|
21
|
-
spec.add_dependency
|
22
|
-
spec.add_dependency
|
20
|
+
spec.add_dependency 'rest-client', '>= 1.7.3'
|
21
|
+
spec.add_dependency 'commander', '~> 4.3.2'
|
22
|
+
spec.add_dependency 'multi_json', '~> 1.11.0'
|
23
23
|
|
24
|
-
spec.add_development_dependency
|
25
|
-
spec.add_development_dependency
|
26
|
-
spec.add_development_dependency
|
27
|
-
spec.add_development_dependency
|
28
|
-
spec.add_development_dependency
|
24
|
+
spec.add_development_dependency 'bundler', '~> 1.9'
|
25
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
26
|
+
spec.add_development_dependency 'dotenv', '~> 2.0.1'
|
27
|
+
spec.add_development_dependency 'rspec'
|
28
|
+
spec.add_development_dependency 'awesome_print'
|
29
29
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xiaomi-push
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- icyleaf
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-06-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -174,7 +174,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
174
174
|
version: '0'
|
175
175
|
requirements: []
|
176
176
|
rubyforge_project:
|
177
|
-
rubygems_version: 2.4
|
177
|
+
rubygems_version: 2.6.4
|
178
178
|
signing_key:
|
179
179
|
specification_version: 4
|
180
180
|
summary: MiPush Server SDK for Ruby
|