rgcm 0.0.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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: {}