higcm 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
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.3"
7
+ s.version = "0.0.4"
8
8
  s.authors = ["hifrank"]
9
- s.email = "frank_chen@htc.com"
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 => Fixnum,
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
- raise SenderError.new("#{key} should be Type #{type}") unless opts[key].is_a?(type)
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 => 1 }, HiGCM::Handler.new) }.not_to raise_error(HiGCM::SenderError)
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.3
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-07-31 00:00:00.000000000Z
12
+ date: 2012-08-10 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: typhoeus
16
- requirement: &2160619160 !ruby/object:Gem::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: *2160619160
24
+ version_requirements: *2152835700
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &2160618400 !ruby/object:Gem::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: *2160618400
35
+ version_requirements: *2152835200
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: json
38
- requirement: &2160617000 !ruby/object:Gem::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: *2160617000
46
+ version_requirements: *2152834720
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rake
49
- requirement: &2160616060 !ruby/object:Gem::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: *2160616060
57
+ version_requirements: *2152834240
58
58
  description: ruby wrapper for GCM google cloud messaging.
59
- email: frank_chen@htc.com
59
+ email: r7692118@gmail.com
60
60
  executables: []
61
61
  extensions: []
62
62
  extra_rdoc_files: []