gcm 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (6) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -2
  3. data/gcm.gemspec +1 -1
  4. data/lib/gcm.rb +10 -7
  5. data/spec/gcm_spec.rb +22 -14
  6. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e0b2ae57d4b3b71772d8a69cc595ec6272cdb7db
4
- data.tar.gz: 1818a7075e84ea587e62a599cb6ffda67a2a925a
3
+ metadata.gz: b91b8dd5c3122716b7790b84bf488997af4481b4
4
+ data.tar.gz: c61dcbb7792c73561ae858d02ea792dac6e8f193
5
5
  SHA512:
6
- metadata.gz: a3fa246decd26545e799c645fc64e788a4be1cbeba209fae04e983559e665135d61f4a33fb48bbe37f18fbe7368bcb53784d02371f3f1fca6ea341d2a0cae52c
7
- data.tar.gz: a3f675537384617d32993141954920be7604a4b687951d612d9ddf85539ff788af57433df337a91911c79646edf393d276636c4dffe9d6c965566da37d24d723
6
+ metadata.gz: 88d2177d41c159d051057eea20c8171ab7fadb07cf5b2913005656df76fa3ddb5da451386ee299f8ca8884258b07eee1ea8f9f8e07d17b6f8151c501f918d8d6
7
+ data.tar.gz: aba44c2d89ea740c2ccf0abfef14a4d05283a0a51e979d4b5c1160b23906e9c0c8ecf53b932b94704cf2f62fe8407b4c5dfe90cfb6750a78eb0f202e0aed8695
data/README.md CHANGED
@@ -15,7 +15,7 @@ gem 'gcm'
15
15
 
16
16
  ##Requirements
17
17
 
18
- An Android device running 2.0 or newer and an API key as per [GCM getting started guide](http://developer.android.com/google/gcm).
18
+ An Android device running 2.2 or newer and an API key as per [GCM getting started guide](http://developer.android.com/google/gcm/gs.html).
19
19
 
20
20
  One of the following, tested Ruby versions:
21
21
 
@@ -51,11 +51,14 @@ Currently `response` is just a hash containing the response `body`, `headers` an
51
51
 
52
52
  ## ChangeLog
53
53
 
54
+ ## 0.0.7
55
+ * All responses now have a body and header hashes
56
+
54
57
  ### 0.0.6
55
58
 
56
59
  * You can initialize GCM class with [HTTParty Options](https://github.com/jnunemaker/httparty/blob/master/lib/httparty.rb#L40-L68)
57
60
 
58
- ### Version 0.0.5
61
+ ### 0.0.5
59
62
 
60
63
  * Added support for [canonical registration ID](http://developer.android.com/google/gcm/adv.html#canonical)
61
64
  * Only support Ruby versions [>= 1.9.3](https://www.ruby-lang.org/en/news/2014/01/10/ruby-1-9-3-will-end-on-2015/)
data/gcm.gemspec CHANGED
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "gcm"
6
- s.version = "0.0.6"
6
+ s.version = "0.0.7"
7
7
  s.platform = Gem::Platform::RUBY
8
8
  s.authors = ["Kashif Rasul", "Shoaib Burq"]
9
9
  s.email = ["kashif@spacialdb.com", "shoaib@spacialdb.com"]
data/lib/gcm.rb CHANGED
@@ -49,19 +49,22 @@ class GCM
49
49
  end
50
50
 
51
51
  def build_response(response, registration_ids)
52
+ body = response.body || {}
53
+ response_hash = {:body => body, :headers => response.headers, :status_code => response.code}
52
54
  case response.code
53
55
  when 200
54
- body = response.body || {}
55
- { :response => 'success', :body => body, :headers => response.headers, :status_code => response.code, :canonical_ids => build_canonical_ids(body, registration_ids) }
56
+ response_hash[:response] = 'success'
57
+ response_hash[:canonical_ids] = build_canonical_ids(body, registration_ids)
56
58
  when 400
57
- { :response => 'Only applies for JSON requests. Indicates that the request could not be parsed as JSON, or it contained invalid fields.', :status_code => response.code }
59
+ response_hash[:response] = 'Only applies for JSON requests. Indicates that the request could not be parsed as JSON, or it contained invalid fields.'
58
60
  when 401
59
- { :response => 'There was an error authenticating the sender account.', :status_code => response.code }
60
- when 500
61
- { :response => 'There was an internal error in the GCM server while trying to process the request.', :status_code => response.code }
61
+ response_hash[:response] = 'There was an error authenticating the sender account.'
62
62
  when 503
63
- { :response => 'Server is temporarily unavailable.', :status_code => response.code }
63
+ response_hash[:response] = 'Server is temporarily unavailable.'
64
+ when 500..599
65
+ response_hash[:response] = 'There was an internal error in the GCM server while trying to process the request.'
64
66
  end
67
+ response_hash
65
68
  end
66
69
 
67
70
  def build_canonical_ids(body, registration_ids)
data/spec/gcm_spec.rb CHANGED
@@ -74,7 +74,7 @@ describe GCM do
74
74
  end
75
75
  end
76
76
 
77
- context " when send_notification responds with failure" do
77
+ context "when send_notification responds with failure" do
78
78
 
79
79
  let(:mock_request_attributes) do
80
80
  {
@@ -98,6 +98,8 @@ describe GCM do
98
98
  end
99
99
  it "should not send notification due to 400" do
100
100
  subject.send_notification(registration_ids).should eq({
101
+ :body => {},
102
+ :headers => {},
101
103
  :response => "Only applies for JSON requests. Indicates that the request could not be parsed as JSON, or it contained invalid fields.",
102
104
  :status_code => 400
103
105
  })
@@ -118,13 +120,15 @@ describe GCM do
118
120
 
119
121
  it "should not send notification due to 401" do
120
122
  subject.send_notification(registration_ids).should eq({
123
+ :body => {},
124
+ :headers => {},
121
125
  :response => "There was an error authenticating the sender account.",
122
126
  :status_code => 401
123
127
  })
124
128
  end
125
129
  end
126
130
 
127
- context "on failure code 500" do
131
+ context "on failure code 503" do
128
132
  before do
129
133
  stub_request(:post, GCM::PUSH_URL).with(
130
134
  mock_request_attributes
@@ -132,40 +136,44 @@ describe GCM do
132
136
  # ref: http://developer.android.com/guide/google/gcm/gcm.html#success
133
137
  :body => {},
134
138
  :headers => {},
135
- :status => 500
139
+ :status => 503
136
140
  )
137
141
  end
138
142
 
139
- it "should not send notification due to 500" do
143
+ it "should not send notification due to 503" do
140
144
  subject.send_notification(registration_ids).should eq({
141
- :response => 'There was an internal error in the GCM server while trying to process the request.',
142
- :status_code => 500
145
+ :body => {},
146
+ :headers => {},
147
+ :response => 'Server is temporarily unavailable.',
148
+ :status_code => 503
143
149
  })
144
150
  end
145
151
  end
146
152
 
147
- context "on failure code 503" do
153
+ context "on failure code 5xx" do
148
154
  before do
149
155
  stub_request(:post, GCM::PUSH_URL).with(
150
156
  mock_request_attributes
151
157
  ).to_return(
152
158
  # ref: http://developer.android.com/guide/google/gcm/gcm.html#success
153
- :body => {},
154
- :headers => {},
155
- :status => 503
159
+ :body => { "body-key" => "Body value" },
160
+ :headers => { "header-key" => "Header value" },
161
+ :status => 599
156
162
  )
157
163
  end
158
164
 
159
- it "should not send notification due to 503" do
165
+ it "should not send notification due to 599" do
160
166
  subject.send_notification(registration_ids).should eq({
161
- :response => 'Server is temporarily unavailable.',
162
- :status_code => 503
167
+ :body => { "body-key" => "Body value" },
168
+ :headers => { "header-key" => ["Header value"] },
169
+ :response => 'There was an internal error in the GCM server while trying to process the request.',
170
+ :status_code => 599
163
171
  })
164
172
  end
165
173
  end
166
174
  end
167
175
 
168
- context " when send_notification responds canonical_ids" do
176
+ context "when send_notification responds canonical_ids" do
169
177
 
170
178
  let(:mock_request_attributes) do
171
179
  {
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gcm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kashif Rasul
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-01-20 00:00:00.000000000 Z
12
+ date: 2014-02-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httparty