rgcm 0.0.1 → 1.0.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9d996818f09f71cff4eb15f5192e5139f5fe384d
4
- data.tar.gz: f53dd56ea6fe510e402b0df4135849b7ddfdba43
3
+ metadata.gz: 50ad8b8a68265daf27de38132b97c7974276b0c8
4
+ data.tar.gz: 469a26eff7f8c36eaa1a4290399fc960de42cb6d
5
5
  SHA512:
6
- metadata.gz: c3e4be4a1b81007d31d5ddd0d16d8a5155e4369b7ef36c17a502e3e0e628dd478b586aad7316bdebab04f12fc9db6c1476dc7da4ee4fd369593b51e1185e60b3
7
- data.tar.gz: c5dac96c370149f9e3f6570cc003b4a54cda7a75c93bbcb0f0ab19dca08bebc7d0529dcaab5683a7dcc2515ea26b34c55c28c6906dba76e089de6b749deec5d4
6
+ metadata.gz: 6b0da80664bf797975ef787575dcc841253c8563cbd7a45951628f49a8c1e9009e4d425abf5e0ff875ac9d9482aa482438321f3e14c3732f36bb443ba51362c7
7
+ data.tar.gz: d24bca2d2663a9f74faa6d34899e79bbd218eb9d4c3c7e5efb2f0cd4f6a00a1e9f81efa0b962b27284d979999f753c4825410c8e79a34d6691198162ed4b1208
data/README.md CHANGED
@@ -29,7 +29,62 @@ Or install it yourself as:
29
29
 
30
30
  ## Usage
31
31
 
32
- TODO: Write usage instructions here
32
+ ``` ruby
33
+ collapse_key = '_GCM_COLLAPS_KEY_'
34
+ data = { foo: 'bar' }
35
+
36
+ Rgcm::Message.new('_API_KEY_').post('_GCM_REGESTRATION_ID_', collapse_key, data) # => Rgcm::Response
37
+
38
+ Rgcm::Message.new('_API_KEY_').post(['_GCM_REGESTRATION_ID_1_', '_GCM_REGESTRATION_ID_2_'], collapse_key, data) # => Rgcm::Response
39
+ ```
40
+
41
+ With rails YML config file:
42
+
43
+ ``` yml
44
+ development:
45
+ api_key: '_API_KEY_'
46
+
47
+ test:
48
+ api_key: '_API_KEY_'
49
+
50
+ production:
51
+ api_key: '_API_KEY_'
52
+ ```
53
+
54
+ ``` ruby
55
+ collapse_key = '_GCM_COLLAPS_KEY_'
56
+ data = { foo: 'bar' }
57
+
58
+ Rgcm::Message.new.post('_GCM_REGESTRATION_ID_', collapse_key, data) # => Rgcm::Response
59
+
60
+ Rgcm::Message.new.post(['_GCM_REGESTRATION_ID_1_', '_GCM_REGESTRATION_ID_2_'], collapse_key, data) # => Rgcm::Response
61
+ ```
62
+
63
+ Rgcm::Response methods:
64
+
65
+ ```json
66
+ {
67
+ "multicast_id":5030383832068975557,
68
+ "success":1,
69
+ "failure":0,
70
+ "canonical_ids":0,
71
+ "results":[
72
+ { "message_id":"0:1403425286258916%62dfd0f6e116c072" }
73
+ ]
74
+ }
75
+ ```
76
+
77
+ ``` ruby
78
+ response = Rgcm::Message.new('_API_KEY_').post('_GCM_REGESTRATION_ID_', collapse_key, data)
79
+
80
+ response.count_successes # => 1
81
+ response.count_failures # => 0
82
+ response.has_successes? # => true
83
+ response.has_failures? # => false
84
+ response.results # => '{ "message_id":"0:1403425286258916%62dfd0f6e116c072" }'
85
+ response.successes # => '{ "message_id":"0:1403425286258916%62dfd0f6e116c072" }'
86
+ response.errors # => nil
87
+ ```
33
88
 
34
89
  ## Contributing
35
90
 
data/lib/rgcm/message.rb CHANGED
@@ -13,8 +13,8 @@ module Rgcm
13
13
  end
14
14
  end
15
15
 
16
- def post(registration_ids, collapse_key, data)
17
- request = RequestBuilder.new(api_key, registration_ids, collapse_key, data).build
16
+ def post(registration_ids, data, options=nil)
17
+ request = RequestBuilder.new(api_key, registration_ids, options, data).build
18
18
 
19
19
  response = request.run
20
20
 
@@ -3,12 +3,12 @@ module Rgcm
3
3
 
4
4
  URI = 'https://android.googleapis.com/gcm/send'.freeze
5
5
 
6
- attr_reader :api_key, :registration_ids, :collapse_key, :data
6
+ attr_reader :api_key, :registration_ids, :options, :data
7
7
 
8
- def initialize(api_key, registration_ids, collapse_key, data)
8
+ def initialize(api_key, registration_ids, options, data)
9
9
  @api_key = api_key
10
10
  @registration_ids = registration_ids.kind_of?(Array) ? registration_ids : [registration_ids]
11
- @collapse_key = collapse_key
11
+ @options = options
12
12
  @data = data
13
13
  end
14
14
 
@@ -24,8 +24,13 @@ module Rgcm
24
24
 
25
25
  def body
26
26
  body = {'registration_ids' => registration_ids}
27
- body.merge!('collapse_key' => collapse_key) if collapse_key.present?
27
+ if options.present?
28
+ body.merge!('collapse_key' => options[:collapse_key]) if options.has_key?(:collapse_key)
29
+ body.merge!('time_to_live' => options[:time_to_live]) if options.has_key?(:time_to_live)
30
+ body.merge!('delay_while_idle' => true) if options.has_key?(:time_to_live)
31
+ end
28
32
  body.merge!('data' => data) if data.present?
33
+ body
29
34
  end
30
35
 
31
36
  end
data/lib/rgcm/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Rgcm
2
- VERSION = "0.0.1"
2
+ VERSION = '1.0.0'
3
3
  end
data/rgcm.gemspec CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.email = ["alex.klaiber@gmail.com"]
11
11
  spec.summary = "Google Cloud Messaging"
12
12
  spec.description = "Google Cloud Messaging"
13
- spec.homepage = ""
13
+ spec.homepage = "https://github.com/aklaiber/rgcm"
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0")
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.5"
22
22
  spec.add_development_dependency "rake"
23
- spec.add_development_dependency "rspec"
23
+ spec.add_development_dependency "rspec", "~> 3.0.0"
24
24
 
25
25
  spec.add_dependency "activesupport"
26
26
  spec.add_dependency "typhoeus"
@@ -10,10 +10,26 @@ describe Rgcm::Message do
10
10
 
11
11
  let(:json) { File.open("#{FIXTURES_PATH}/responses/successfully.json").read }
12
12
 
13
- it 'returns rgcm response' do
14
- response = Rgcm::Message.new('TEST_API_KEY').post('test', 'test', data)
13
+ it 'returns gcm response' do
14
+ response = Rgcm::Message.new('TEST_API_KEY').post('test', data)
15
15
 
16
16
  expect(response).to be_kind_of(Rgcm::Response)
17
17
  end
18
18
 
19
+ context 'with collapse_key' do
20
+ it 'returns gcm response' do
21
+ response = Rgcm::Message.new('TEST_API_KEY').post('test', data, collapse_key: 'test')
22
+
23
+ expect(response).to be_kind_of(Rgcm::Response)
24
+ end
25
+ end
26
+
27
+ context 'with time_to_live' do
28
+ it 'returns gcm response' do
29
+ response = Rgcm::Message.new('TEST_API_KEY').post('test', data, time_to_live: 0)
30
+
31
+ expect(response).to be_kind_of(Rgcm::Response)
32
+ end
33
+ end
34
+
19
35
  end
@@ -6,7 +6,7 @@ describe Rgcm::RequestBuilder do
6
6
  let(:registration_id) { 123 }
7
7
  let(:collapse_key) { 'collapse key' }
8
8
  let(:data) { {score: '4x8', time: '15:16.2342'} }
9
- let(:request) { Rgcm::RequestBuilder.new(api_key, registration_id, collapse_key, data) }
9
+ let(:request) { Rgcm::RequestBuilder.new(api_key, registration_id, nil, nil) }
10
10
 
11
11
  it 'returns uri' do
12
12
  expect(request.build.base_url).to eql(Rgcm::Config::URI)
@@ -24,11 +24,26 @@ describe Rgcm::RequestBuilder do
24
24
  expect(json(request.build.options[:body])[:registration_ids]).to eql([registration_id])
25
25
  end
26
26
 
27
- it 'returns collapse_key' do
28
- expect(json(request.build.options[:body])[:collapse_key]).to eql(collapse_key)
27
+ context 'with collapse_key' do
28
+ it 'returns request' do
29
+ request = Rgcm::RequestBuilder.new(api_key, registration_id, {collapse_key: collapse_key}, nil)
30
+ expect(json(request.build.options[:body])[:collapse_key]).to eql(collapse_key)
31
+ end
29
32
  end
30
33
 
31
- it 'returns data' do
32
- expect(json(request.build.options[:body])[:data]).to eql(data)
34
+ context 'with data' do
35
+ it 'returns request' do
36
+ request = Rgcm::RequestBuilder.new(api_key, registration_id, nil, data)
37
+ expect(json(request.build.options[:body])[:data]).to eql(data)
38
+ end
39
+ end
40
+
41
+ context 'with data' do
42
+ it 'returns request' do
43
+ request = Rgcm::RequestBuilder.new(api_key, registration_id, {time_to_live: 0}, data).build
44
+
45
+ expect(json(request.options[:body])[:time_to_live]).to eql(0)
46
+ expect(json(request.options[:body])[:delay_while_idle]).to eql(true)
47
+ end
33
48
  end
34
49
  end
@@ -6,10 +6,10 @@ describe Rgcm::Response do
6
6
  context 'with successfully response' do
7
7
  let(:json) { File.open("#{FIXTURES_PATH}/responses/successfully.json").read }
8
8
  it '#has_successes?' do
9
- expect(response.has_successes?).to be_true
9
+ expect(response.has_successes?).to be true
10
10
  end
11
11
  it '#has_failures?' do
12
- expect(response.has_failures?).to be_false
12
+ expect(response.has_failures?).to be false
13
13
  end
14
14
  it '#count_successes' do
15
15
  expect(response.count_successes).to eql(1)
@@ -22,10 +22,10 @@ describe Rgcm::Response do
22
22
  context 'with failure response' do
23
23
  let(:json) { File.open("#{FIXTURES_PATH}/responses/failure.json").read }
24
24
  it '#has_successes?' do
25
- expect(response.has_successes?).to be_false
25
+ expect(response.has_successes?).to be false
26
26
  end
27
27
  it '#has_failures?' do
28
- expect(response.has_failures?).to be_true
28
+ expect(response.has_failures?).to be true
29
29
  end
30
30
  it '#count_successes' do
31
31
  expect(response.count_successes).to eql(0)
@@ -41,10 +41,10 @@ describe Rgcm::Response do
41
41
  context 'with failure response' do
42
42
  let(:json) { File.open("#{FIXTURES_PATH}/responses/multi.json").read }
43
43
  it '#has_successes?' do
44
- expect(response.has_successes?).to be_true
44
+ expect(response.has_successes?).to be true
45
45
  end
46
46
  it '#has_failures?' do
47
- expect(response.has_failures?).to be_true
47
+ expect(response.has_failures?).to be true
48
48
  end
49
49
  it '#count_successes' do
50
50
  expect(response.count_successes).to eql(3)
data/spec/spec_helper.rb CHANGED
@@ -1,11 +1,9 @@
1
1
  require 'support/json_helper'
2
-
3
2
  require 'rgcm'
4
3
 
5
4
  FIXTURES_PATH = "#{File.dirname(__FILE__)}/fixtures"
6
5
 
7
6
  RSpec.configure do |config|
8
- config.treat_symbols_as_metadata_keys_with_true_values = true
9
7
  config.run_all_when_everything_filtered = true
10
8
  config.filter_run :focus
11
9
  config.order = 'random'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rgcm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Klaiber
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-26 00:00:00.000000000 Z
11
+ date: 2014-09-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -42,16 +42,16 @@ dependencies:
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: 3.0.0
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ~>
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: 3.0.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: activesupport
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -110,7 +110,7 @@ files:
110
110
  - spec/rgcm/response_spec.rb
111
111
  - spec/spec_helper.rb
112
112
  - spec/support/json_helper.rb
113
- homepage: ''
113
+ homepage: https://github.com/aklaiber/rgcm
114
114
  licenses:
115
115
  - MIT
116
116
  metadata: {}