higcm 0.0.3 → 0.0.4
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.
- data/higcm.gemspec +2 -2
- data/lib/higcm/sender.rb +34 -4
- data/spec/lib/higcm/sender_spec.rb +33 -1
- metadata +11 -11
data/higcm.gemspec
CHANGED
@@ -4,9 +4,9 @@ $:.unshift File.expand_path('../lib', __FILE__)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = "higcm"
|
7
|
-
s.version = "0.0.
|
7
|
+
s.version = "0.0.4"
|
8
8
|
s.authors = ["hifrank"]
|
9
|
-
s.email = "
|
9
|
+
s.email = "r7692118@gmail.com"
|
10
10
|
s.homepage = "https://github.com/hifrank/higcm"
|
11
11
|
s.summary = "ruby wrapper for GCM google cloud messaging."
|
12
12
|
s.description = %q{ruby wrapper for GCM google cloud messaging.}
|
data/lib/higcm/sender.rb
CHANGED
@@ -8,9 +8,9 @@ module HiGCM
|
|
8
8
|
attr_accessor :api_key, :api_status, :hydra, :requests
|
9
9
|
|
10
10
|
OPTIONAL_OPTIONS = {
|
11
|
-
:collapse_key => String,
|
12
|
-
:data => Hash,
|
13
|
-
:delay_while_idle =>
|
11
|
+
:collapse_key => String,
|
12
|
+
:data => Hash,
|
13
|
+
:delay_while_idle => [true, false],
|
14
14
|
:time_to_live => Fixnum
|
15
15
|
}
|
16
16
|
|
@@ -41,7 +41,23 @@ module HiGCM
|
|
41
41
|
#fill up option
|
42
42
|
OPTIONAL_OPTIONS.each do | key, type |
|
43
43
|
if opts.key?(key)
|
44
|
-
|
44
|
+
if type.is_a?(Array)
|
45
|
+
@valid_value = false
|
46
|
+
type.each do | v |
|
47
|
+
if opts[key] == v
|
48
|
+
@valid_value = true
|
49
|
+
break
|
50
|
+
end
|
51
|
+
end
|
52
|
+
raise SenderError.new("#{key} should be Type #{type}") unless @valid_value
|
53
|
+
else
|
54
|
+
raise SenderError.new("#{key} should be Type #{type}") unless opts[key].is_a?(type)
|
55
|
+
end
|
56
|
+
# convert payload data to String for issue #3
|
57
|
+
case key
|
58
|
+
when :data
|
59
|
+
opts[key] = convert_hash(opts[key])
|
60
|
+
end
|
45
61
|
body[key] = opts[key]
|
46
62
|
end
|
47
63
|
end
|
@@ -70,5 +86,19 @@ module HiGCM
|
|
70
86
|
@hydra.run
|
71
87
|
end
|
72
88
|
|
89
|
+
def convert_hash(hash)
|
90
|
+
hash.each do | k, v |
|
91
|
+
if v.is_a?(Hash)
|
92
|
+
hash[k] = convert_hash(v)
|
93
|
+
else
|
94
|
+
if v.respond_to?(:to_s)
|
95
|
+
hash[k] = v.to_s
|
96
|
+
else
|
97
|
+
raise SenderError "data value must respond to to_s function for converting to String"
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
73
103
|
end
|
74
104
|
end
|
@@ -67,14 +67,46 @@ describe HiGCM::Sender do
|
|
67
67
|
expect { @sender.send_async(@registration_ids, {:data => {} }, HiGCM::Handler.new) }.not_to raise_error(HiGCM::SenderError)
|
68
68
|
end
|
69
69
|
|
70
|
+
it "should convert all opts[:data] to String" do
|
71
|
+
test_value = 1
|
72
|
+
rs = JSON.parse(@sender.send_async(@registration_ids, {:data => {:name => test_value} }, HiGCM::Handler.new).body)
|
73
|
+
rs["data"]["name"].should == "1"
|
74
|
+
end
|
75
|
+
|
70
76
|
it "should raise exception if opts[:delay_while_idle] && opts[:time_to_live] is not Fixnum" do
|
71
77
|
expect { @sender.send_async(@registration_ids, {:delay_while_idle => [] }, HiGCM::Handler.new) }.to raise_error(HiGCM::SenderError)
|
72
|
-
expect { @sender.send_async(@registration_ids, {:delay_while_idle =>
|
78
|
+
expect { @sender.send_async(@registration_ids, {:delay_while_idle => true }, HiGCM::Handler.new) }.not_to raise_error(HiGCM::SenderError)
|
73
79
|
expect { @sender.send_async(@registration_ids, {:time_to_live => [] }, HiGCM::Handler.new) }.to raise_error(HiGCM::SenderError)
|
74
80
|
expect { @sender.send_async(@registration_ids, {:time_to_live => 1 }, HiGCM::Handler.new) }.not_to raise_error(HiGCM::SenderError)
|
75
81
|
end
|
76
82
|
end
|
77
83
|
|
84
|
+
describe "#convert_hash" do
|
85
|
+
it "should convert all the Hash value to String according to to_s function" do
|
86
|
+
sample = {
|
87
|
+
:name => 'frank',
|
88
|
+
:age => 32,
|
89
|
+
:setting => {
|
90
|
+
'gundam' => true,
|
91
|
+
'style' => {
|
92
|
+
:color => 1
|
93
|
+
}
|
94
|
+
}
|
95
|
+
}
|
96
|
+
expected_sample = {
|
97
|
+
:name => 'frank',
|
98
|
+
:age => 32.to_s,
|
99
|
+
:setting => {
|
100
|
+
'gundam' => true.to_s,
|
101
|
+
'style' => {
|
102
|
+
:color => 1.to_s
|
103
|
+
}
|
104
|
+
}
|
105
|
+
}
|
106
|
+
@sender.convert_hash(sample).should == expected_sample
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
78
110
|
describe "#send_async_run" do
|
79
111
|
it "should run Typhoeus::Hydra when send requests" do
|
80
112
|
hydra = double(Typhoeus::Hydra)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: higcm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-08-10 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: typhoeus
|
16
|
-
requirement: &
|
16
|
+
requirement: &2152835700 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.3.3
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2152835700
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rspec
|
27
|
-
requirement: &
|
27
|
+
requirement: &2152835200 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '2.6'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2152835200
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: json
|
38
|
-
requirement: &
|
38
|
+
requirement: &2152834720 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2152834720
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rake
|
49
|
-
requirement: &
|
49
|
+
requirement: &2152834240 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,9 +54,9 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2152834240
|
58
58
|
description: ruby wrapper for GCM google cloud messaging.
|
59
|
-
email:
|
59
|
+
email: r7692118@gmail.com
|
60
60
|
executables: []
|
61
61
|
extensions: []
|
62
62
|
extra_rdoc_files: []
|