gcm 0.0.5 → 0.0.6
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.
- checksums.yaml +4 -4
- data/LICENSE.txt +1 -1
- data/README.md +22 -9
- data/Rakefile +0 -2
- data/gcm.gemspec +1 -1
- data/lib/gcm.rb +3 -3
- data/spec/gcm_spec.rb +32 -13
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e0b2ae57d4b3b71772d8a69cc595ec6272cdb7db
|
4
|
+
data.tar.gz: 1818a7075e84ea587e62a599cb6ffda67a2a925a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a3fa246decd26545e799c645fc64e788a4be1cbeba209fae04e983559e665135d61f4a33fb48bbe37f18fbe7368bcb53784d02371f3f1fca6ea341d2a0cae52c
|
7
|
+
data.tar.gz: a3f675537384617d32993141954920be7604a4b687951d612d9ddf85539ff788af57433df337a91911c79646edf393d276636c4dffe9d6c965566da37d24d723
|
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -7,9 +7,15 @@ GCM sends notifications to Android devices via [GCM](http://developer.android.co
|
|
7
7
|
|
8
8
|
$ gem install gcm
|
9
9
|
|
10
|
+
or in your `Gemfile` just include it:
|
11
|
+
|
12
|
+
```ruby
|
13
|
+
gem 'gcm'
|
14
|
+
```
|
15
|
+
|
10
16
|
##Requirements
|
11
17
|
|
12
|
-
An Android device running 2.0 or newer and an API key as per [GCM getting started guide](http://developer.android.com/
|
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).
|
13
19
|
|
14
20
|
One of the following, tested Ruby versions:
|
15
21
|
|
@@ -19,22 +25,25 @@ One of the following, tested Ruby versions:
|
|
19
25
|
|
20
26
|
##Usage
|
21
27
|
|
22
|
-
|
28
|
+
For your server to send a message to one or more devices, you must first initialize a new `GCM` class with your api key, and then call the `send_notification` method on this and give it 1 or more (up to 1000) registration IDs as an array of strings. You can also optionally send further [HTTP message parameters](http://developer.android.com/google/gcm/server.html#params) like `data` or `time_to_live` etc. as a hash via the second optional argument to `send_notification`.
|
29
|
+
|
30
|
+
Example sending notifications:
|
23
31
|
|
24
32
|
```ruby
|
25
33
|
require 'gcm'
|
26
34
|
|
27
35
|
gcm = GCM.new(api_key)
|
36
|
+
# you can set option parameters in here
|
37
|
+
# - all options are pass to HTTParty method arguments
|
38
|
+
# - ref: https://github.com/jnunemaker/httparty/blob/master/lib/httparty.rb#L40-L68
|
39
|
+
# gcm = GCM.new(api_key, timeout: 3)
|
40
|
+
|
28
41
|
registration_ids= ["12", "13"] # an array of one or more client registration IDs
|
29
42
|
options = {data: {score: "123"}, collapse_key: "updated_score"}
|
30
43
|
response = gcm.send_notification(registration_ids, options)
|
31
44
|
```
|
32
45
|
|
33
|
-
Currently `response` is just a hash containing the response `body`, `headers` and `status`.
|
34
|
-
|
35
|
-
If the above code is stored in a file like `trigger_gcm.rb`, thats how you can call it.
|
36
|
-
|
37
|
-
$ ruby -rubygems trigger_gcm.rb
|
46
|
+
Currently `response` is just a hash containing the response `body`, `headers` and `status`. Check [here](http://developer.android.com/google/gcm/http.html#response) to see how to interpret the responses.
|
38
47
|
|
39
48
|
## Blog posts
|
40
49
|
|
@@ -42,15 +51,19 @@ If the above code is stored in a file like `trigger_gcm.rb`, thats how you can c
|
|
42
51
|
|
43
52
|
## ChangeLog
|
44
53
|
|
54
|
+
### 0.0.6
|
55
|
+
|
56
|
+
* You can initialize GCM class with [HTTParty Options](https://github.com/jnunemaker/httparty/blob/master/lib/httparty.rb#L40-L68)
|
57
|
+
|
45
58
|
### Version 0.0.5
|
46
59
|
|
47
|
-
* Added support for canonical registration ID
|
60
|
+
* Added support for [canonical registration ID](http://developer.android.com/google/gcm/adv.html#canonical)
|
48
61
|
* 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/)
|
49
62
|
* Fixed Rspec deprecation warnings for Rspec 3.0.0.beta
|
50
63
|
|
51
64
|
##MIT License
|
52
65
|
|
53
|
-
* Copyright (c)
|
66
|
+
* Copyright (c) 2014 Kashif Rasul and Shoaib Burq. See LICENSE.txt for details.
|
54
67
|
|
55
68
|
##Many thanks to all the contributors
|
56
69
|
|
data/Rakefile
CHANGED
@@ -7,11 +7,9 @@ RSpec::Core::RakeTask.new(:spec => ["ci:setup:rspec"]) do |t|
|
|
7
7
|
t.pattern = 'spec/**/*_spec.rb'
|
8
8
|
end
|
9
9
|
|
10
|
-
|
11
10
|
RSpec::Core::RakeTask.new(:spec) do |spec|
|
12
11
|
spec.pattern = 'spec/**/*_spec.rb'
|
13
12
|
spec.rspec_opts = ['--format documentation']
|
14
13
|
end
|
15
14
|
|
16
|
-
|
17
15
|
task :default => :spec
|
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
|
+
s.version = "0.0.6"
|
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
@@ -11,8 +11,9 @@ class GCM
|
|
11
11
|
|
12
12
|
attr_accessor :timeout, :api_key
|
13
13
|
|
14
|
-
def initialize(api_key)
|
14
|
+
def initialize(api_key, client_options = {})
|
15
15
|
@api_key = api_key
|
16
|
+
@client_options = client_options
|
16
17
|
end
|
17
18
|
|
18
19
|
# {
|
@@ -37,8 +38,7 @@ class GCM
|
|
37
38
|
'Content-Type' => 'application/json',
|
38
39
|
}
|
39
40
|
}
|
40
|
-
|
41
|
-
response = self.class.post('', params)
|
41
|
+
response = self.class.post('', params.merge(@client_options))
|
42
42
|
build_response(response, registration_ids)
|
43
43
|
end
|
44
44
|
|
data/spec/gcm_spec.rb
CHANGED
@@ -22,7 +22,7 @@ describe GCM do
|
|
22
22
|
}
|
23
23
|
end
|
24
24
|
|
25
|
-
|
25
|
+
let(:stub_gcm_request) do
|
26
26
|
stub_request(:post, GCM::PUSH_URL).with(
|
27
27
|
:body => valid_request_body.to_json,
|
28
28
|
:headers => valid_request_headers
|
@@ -34,9 +34,28 @@ describe GCM do
|
|
34
34
|
)
|
35
35
|
end
|
36
36
|
|
37
|
+
let(:stub_gcm_request_with_basic_auth) do
|
38
|
+
uri = URI.parse(GCM::PUSH_URL)
|
39
|
+
uri.user = 'a'
|
40
|
+
uri.password = 'b'
|
41
|
+
stub_request(:post, uri.to_s).to_return(:body => {}, :headers => {}, :status => 200)
|
42
|
+
end
|
43
|
+
|
44
|
+
before(:each) do
|
45
|
+
stub_gcm_request
|
46
|
+
stub_gcm_request_with_basic_auth
|
47
|
+
end
|
48
|
+
|
37
49
|
it "should send notification using POST to GCM server" do
|
38
50
|
gcm = GCM.new(api_key)
|
39
51
|
gcm.send_notification(registration_ids).should eq({:response => 'success', :body => {}, :headers => {}, :status_code => 200, :canonical_ids => []})
|
52
|
+
stub_gcm_request.should have_been_made.times(1)
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should use basic authentication provided by options" do
|
56
|
+
gcm = GCM.new(api_key, basic_auth: {username: 'a', password: 'b'})
|
57
|
+
gcm.send_notification(registration_ids).should eq({:response => 'success', :body => {}, :headers => {}, :status_code => 200, :canonical_ids => []})
|
58
|
+
stub_gcm_request_with_basic_auth.should have_been_made.times(1)
|
40
59
|
end
|
41
60
|
|
42
61
|
context "send notification with data" do
|
@@ -157,7 +176,7 @@ describe GCM do
|
|
157
176
|
|
158
177
|
let(:valid_response_body_with_canonical_ids) do
|
159
178
|
{
|
160
|
-
|
179
|
+
:canonical_ids => 1, :results => [{:registration_id => "43", :message_id => "0:1385025861956342%572c22801bb3" }]
|
161
180
|
}
|
162
181
|
end
|
163
182
|
|
@@ -168,23 +187,23 @@ describe GCM do
|
|
168
187
|
stub_request(:post, GCM::PUSH_URL).with(
|
169
188
|
mock_request_attributes
|
170
189
|
).to_return(
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
190
|
+
# ref: http://developer.android.com/guide/google/gcm/gcm.html#success
|
191
|
+
:body => valid_response_body_with_canonical_ids.to_json,
|
192
|
+
:headers => {},
|
193
|
+
:status => 200
|
175
194
|
)
|
176
195
|
end
|
177
196
|
|
178
197
|
it "should contain canonical_ids" do
|
179
198
|
response = subject.send_notification(registration_ids)
|
180
199
|
|
181
|
-
response.should
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
200
|
+
response.should eq({
|
201
|
+
:headers => {},
|
202
|
+
:canonical_ids => [{:old => "42", :new => "43"}],
|
203
|
+
:status_code => 200,
|
204
|
+
:response => 'success',
|
205
|
+
:body => "{\"canonical_ids\":1,\"results\":[{\"registration_id\":\"43\",\"message_id\":\"0:1385025861956342%572c22801bb3\"}]}"
|
206
|
+
})
|
188
207
|
end
|
189
208
|
end
|
190
209
|
end
|
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.
|
4
|
+
version: 0.0.6
|
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-
|
12
|
+
date: 2014-01-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: httparty
|