speedy_gcm 0.9.0 → 0.9.1

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/.gitignore CHANGED
@@ -1,2 +1,4 @@
1
1
  .DS_Store
2
- .rvmrc
2
+ .rvmrc
3
+ Gemfile.lock
4
+ *.gem
@@ -1,3 +1,3 @@
1
1
  module SpeedyGCM
2
- VERSION = "0.9.0"
2
+ VERSION = "0.9.1"
3
3
  end
data/lib/speedy_gcm.rb CHANGED
@@ -32,6 +32,9 @@ module SpeedyGCM
32
32
  headers = { "Content-Type" => "application/json",
33
33
  "Authorization" => "key=#{@api_key}" }
34
34
 
35
+ # symbolize all keys
36
+ message_opts = symbolize_keys(message_opts)
37
+
35
38
  # validate the message options
36
39
  message_validation(message_opts)
37
40
 
@@ -46,6 +49,14 @@ module SpeedyGCM
46
49
  end
47
50
 
48
51
  private
52
+
53
+ def symbolize_keys(myhash)
54
+ myhash.keys.each do |key|
55
+ myhash[(key.to_sym rescue key) || key] = myhash.delete(key)
56
+ end
57
+ return myhash
58
+ end
59
+
49
60
  def message_validation(message_opts)
50
61
  # check if message_opts has required info
51
62
  raise ArgumentError, "registration_ids is a required param of the GCM message" unless message_opts.has_key? :registration_ids
@@ -67,6 +78,7 @@ module SpeedyGCM
67
78
 
68
79
  # registration_ids must contain at least 1 and at most 1000 registration IDs
69
80
  registration_ids = message_opts[:registration_ids]
81
+
70
82
  if (registration_ids.length < 1) or (registration_ids.length > 1000)
71
83
  raise ArgumentError, "registration_ids must contain at least 1 and at most 1000 registration IDs"
72
84
  end
@@ -7,6 +7,11 @@ require "net/https"
7
7
 
8
8
  class TestSpeedyGCM < Test::Unit::TestCase
9
9
 
10
+ # If you receive an "Unavailable" error code when you try to send a GCM:
11
+ # Generate a Browser API Key from the Google APIs Console, and use it instead of the server key in the "Authorization" header. Once you do that, this error will go away.
12
+ # This is caused by a serious mistake in the GCM Documentation that states you should use a Server Key in the Authorization header (as written here: http://developer.android.com/guide/google/gcm/gs.html)
13
+
14
+ # use a "browser_api_key" - see note above!
10
15
  GCM_API_KEY = "TODO - Fill in with your GCM API Key"
11
16
  TEST_PHONE_GCM_REGISTRATION_ID = "TODO - Fill in with some GCM Registration ID"
12
17
 
@@ -143,35 +148,33 @@ class TestSpeedyGCM < Test::Unit::TestCase
143
148
  end
144
149
  end
145
150
 
146
- should "not raise an error if a send notification call succeeds" do
151
+ should "not raise an error and send a message with a success response" do
147
152
  assert_nothing_raised do
148
153
  SpeedyGCM::API.set_account(GCM_API_KEY)
149
154
 
150
155
  message_options = {}
151
- message_options.merge!({ :registration_ids => [1] })
152
- message_options.merge!({ :collapse_key => "foobar" })
153
- message_options.merge!({ :data => { :score => "3x1" } })
154
- message_options.merge!({ :time_to_live => 1 })
156
+ message_options.merge!({ :registration_ids => [TEST_PHONE_GCM_REGISTRATION_ID] })
157
+ message_options.merge!({ :collapse_key => Time.now.to_s })
158
+ message_options.merge!({ :data => { :vmr_id => "3" } })
155
159
 
156
160
  response = SpeedyGCM::API.send_notification(message_options)
161
+
162
+ assert response[:code].eql? 200
157
163
  end
158
164
  end
159
165
 
160
- should "not raise an error and send a message with a success response" do
166
+ should "not raise an error and send a message with a success response if using strings instead of symbols for keys" do
161
167
  assert_nothing_raised do
162
168
  SpeedyGCM::API.set_account(GCM_API_KEY)
163
169
 
164
170
  message_options = {}
165
- message_options.merge!({ :registration_ids => [TEST_PHONE_GCM_REGISTRATION_ID] })
166
- message_options.merge!({ :collapse_key => Time.now.to_s })
167
- message_options.merge!({ :data => { :vmr_id => "3" } })
171
+ message_options.merge!({ "registration_ids" => [TEST_PHONE_GCM_REGISTRATION_ID] })
172
+ message_options.merge!({ "collapse_key" => Time.now.to_s })
173
+ message_options.merge!({ "data" => { "vmr_id" => "3" } })
168
174
 
169
175
  response = SpeedyGCM::API.send_notification(message_options)
170
176
 
171
177
  assert response[:code].eql? 200
172
-
173
- # puts response[:code]
174
- # puts response[:message]
175
178
  end
176
179
  end
177
180
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: speedy_gcm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.9.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-01 00:00:00.000000000 Z
12
+ date: 2012-10-03 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Speedy GCM efficiently sends push notifications to Android devices via
15
15
  GCM (Google Cloud Messaging).