pushr-core 1.0.0.pre.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +156 -0
  4. data/bin/pushr +43 -0
  5. data/lib/generators/templates/feedback_processor.rb +33 -0
  6. data/lib/pushr/configuration.rb +49 -0
  7. data/lib/pushr/core.rb +54 -0
  8. data/lib/pushr/daemon.rb +116 -0
  9. data/lib/pushr/daemon/app.rb +71 -0
  10. data/lib/pushr/daemon/delivery_error.rb +19 -0
  11. data/lib/pushr/daemon/delivery_handler.rb +41 -0
  12. data/lib/pushr/daemon/feedback_handler.rb +38 -0
  13. data/lib/pushr/daemon/logger.rb +57 -0
  14. data/lib/pushr/feedback.rb +37 -0
  15. data/lib/pushr/message.rb +36 -0
  16. data/lib/pushr/redis_connection.rb +38 -0
  17. data/lib/pushr/version.rb +3 -0
  18. data/spec/lib/pushr/configuration_spec.rb +58 -0
  19. data/spec/lib/pushr/daemon/app_spec.rb +55 -0
  20. data/spec/lib/pushr/daemon/delivery_error_spec.rb +15 -0
  21. data/spec/lib/pushr/daemon/delivery_handler_spec.rb +48 -0
  22. data/spec/lib/pushr/daemon/feedback_handler_spec.rb +42 -0
  23. data/spec/lib/pushr/daemon/logger_spec.rb +25 -0
  24. data/spec/lib/pushr/daemon_spec.rb +15 -0
  25. data/spec/lib/pushr/feedback_spec.rb +27 -0
  26. data/spec/lib/pushr/message_spec.rb +33 -0
  27. data/spec/lib/pushr/redis_connection_spec.rb +14 -0
  28. data/spec/spec_helper.rb +30 -0
  29. data/spec/support/logger.rb +11 -0
  30. data/spec/support/pushr_configuration_dummy.rb +22 -0
  31. data/spec/support/pushr_connection_dummy.rb +22 -0
  32. data/spec/support/pushr_dummy.rb +16 -0
  33. data/spec/support/pushr_feedback_dummy.rb +11 -0
  34. data/spec/support/pushr_feedback_processor_dummy.rb +9 -0
  35. data/spec/support/pushr_invalid_configuration_dummy.rb +8 -0
  36. data/spec/support/pushr_message_dummy.rb +13 -0
  37. metadata +281 -0
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+ require 'pushr/daemon'
3
+
4
+ describe Pushr::Daemon::DeliveryError do
5
+
6
+ # before(:each) do
7
+ # Pushr.configure do |config|
8
+ # config.redis = ConnectionPool.new(size: 1, timeout: 1) { MockRedis.new }
9
+ # end
10
+ # end
11
+
12
+ describe 'exception' do
13
+ it 'should have fields'
14
+ end
15
+ end
@@ -0,0 +1,48 @@
1
+ require 'spec_helper'
2
+ require 'pushr/daemon'
3
+
4
+ describe Pushr::Daemon::DeliveryHandler do
5
+
6
+ before(:each) do
7
+ Pushr::Core.configure do |config|
8
+ config.redis = ConnectionPool.new(size: 1, timeout: 1) { MockRedis.new }
9
+ end
10
+
11
+ logger = double('logger')
12
+ allow(logger).to receive(:info)
13
+ allow(logger).to receive(:error)
14
+ allow(logger).to receive(:warn)
15
+ Pushr::Daemon.logger = logger
16
+ end
17
+
18
+ describe 'delivers message' do
19
+ let(:message) { Pushr::MessageDummy.new(app: 'app_name', device: 'test') }
20
+ let(:config) { Pushr::ConfigurationDummy.new(app: 'app_name', connections: 2, enabled: true) }
21
+ let(:connection) { Pushr::Daemon::DummySupport::ConnectionDummy.new(config, 1) }
22
+ it 'should start' do
23
+ message.save
24
+ connection.connect
25
+ handler = Pushr::Daemon::DeliveryHandler.new('pushr:app_name:dummy', connection, 'app', 1)
26
+ handler.stop
27
+ thread = handler.start
28
+ thread.join
29
+ expect(connection.data.to_json).to eql(message.to_json)
30
+ end
31
+ end
32
+
33
+ describe 'fails' do
34
+ let(:message) { Pushr::MessageDummy.new(app: 'app_name', device: 'test') }
35
+ let(:config) { Pushr::ConfigurationDummy.new(app: 'app_name', connections: 2, enabled: true) }
36
+ let(:connection) { Pushr::Daemon::DummySupport::ConnectionDummy.new(config, 1) }
37
+ let(:error) { Pushr::Daemon::DeliveryError.new('100', message, 'desc', 'source', false) }
38
+ it 'should start' do
39
+ expect_any_instance_of(Pushr::Daemon::DummySupport::ConnectionDummy).to receive(:write).and_raise(error)
40
+ message.save
41
+ connection.connect
42
+ handler = Pushr::Daemon::DeliveryHandler.new('pushr:app_name:dummy', connection, 'app', 1)
43
+ handler.stop
44
+ thread = handler.start
45
+ thread.join
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,42 @@
1
+ require 'spec_helper'
2
+ require 'pushr/daemon'
3
+
4
+ describe Pushr::Daemon::FeedbackHandler do
5
+
6
+ before(:each) do
7
+ Pushr::Core.configure do |config|
8
+ config.redis = ConnectionPool.new(size: 1, timeout: 1) { MockRedis.new }
9
+ end
10
+
11
+ logger = double('logger')
12
+ allow(logger).to receive(:info)
13
+ allow(logger).to receive(:error)
14
+ allow(logger).to receive(:warn)
15
+ Pushr::Daemon.logger = logger
16
+ end
17
+
18
+ describe 'start' do
19
+ let(:feedback) { Pushr::FeedbackDummy.new(app: 'app_name', device: 'a' * 64, failed_at: Time.now, follow_up: 'delete') }
20
+ it 'should start' do
21
+ expect_any_instance_of(Pushr::FeedbackProcessor).to receive(:process)
22
+ feedback.save
23
+ handler = Pushr::Daemon::FeedbackHandler.new('spec/support/pushr_feedback_processor_dummy')
24
+ handler.stop
25
+ thread = handler.start
26
+ thread.join
27
+ end
28
+ end
29
+
30
+ describe 'fails' do
31
+ let(:feedback) { Pushr::FeedbackDummy.new(app: 'app_name', device: 'a' * 64, failed_at: Time.now, follow_up: 'delete') }
32
+ let(:error) { StandardError.new('test') }
33
+ it 'should start' do
34
+ expect_any_instance_of(Pushr::FeedbackProcessor).to receive(:process).and_raise(error)
35
+ feedback.save
36
+ handler = Pushr::Daemon::FeedbackHandler.new('spec/support/pushr_feedback_processor_dummy')
37
+ handler.stop
38
+ thread = handler.start
39
+ thread.join
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+ require 'pushr/daemon'
3
+
4
+ describe Pushr::Daemon::Logger do
5
+ describe 'log level' do
6
+ let(:logger) { Pushr::Daemon::Logger.new(foreground: false, error_notification: false) }
7
+ it 'info' do
8
+ expect_any_instance_of(Logger).to receive(:add)
9
+ allow(Logger).to receive(:add)
10
+ logger.info('info')
11
+ end
12
+
13
+ it 'error' do
14
+ expect_any_instance_of(Logger).to receive(:add)
15
+ allow(Logger).to receive(:add)
16
+ logger.error('error')
17
+ end
18
+
19
+ it 'warn' do
20
+ expect_any_instance_of(Logger).to receive(:add)
21
+ allow(Logger).to receive(:add)
22
+ logger.warn('warn')
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+ require 'pushr/daemon'
3
+
4
+ describe Pushr::Daemon do
5
+
6
+ # before(:each) do
7
+ # Pushr.configure do |config|
8
+ # config.redis = ConnectionPool.new(size: 1, timeout: 1) { MockRedis.new }
9
+ # end
10
+ # end
11
+
12
+ describe 'save' do
13
+ it 'should save message'
14
+ end
15
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe Pushr::Feedback do
4
+
5
+ before(:each) do
6
+ Pushr::Core.configure do |config|
7
+ config.redis = ConnectionPool.new(size: 1, timeout: 1) { MockRedis.new }
8
+ end
9
+ end
10
+
11
+ describe 'save' do
12
+ let(:feedback) { Pushr::FeedbackDummy.new(app: 'app_name', device: 'a' * 64, follow_up: 'delete', failed_at: Time.now) }
13
+ let(:feedback_invalid) { Pushr::FeedbackDummy.new }
14
+ it 'should return true' do
15
+ expect(feedback.save).to eql true
16
+ end
17
+
18
+ it 'should return false' do
19
+ expect(feedback_invalid.save).to eql false
20
+ end
21
+
22
+ it 'should save a feedback' do
23
+ feedback.save
24
+ expect(Pushr::Feedback.next).to be_kind_of(Pushr::FeedbackDummy)
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ describe Pushr::Message do
4
+
5
+ before(:each) do
6
+ Pushr::Core.configure do |config|
7
+ config.redis = ConnectionPool.new(size: 1, timeout: 1) { MockRedis.new }
8
+ end
9
+ end
10
+
11
+ describe 'next' do
12
+ it 'returns next message' do
13
+ expect(Pushr::Message.next('pushr:app_name:dummy')).to eql(nil)
14
+ end
15
+ end
16
+
17
+ describe 'next' do
18
+ let(:message) { Pushr::MessageDummy.new(app: 'app_name', device: 'test') }
19
+ let(:message_invalid) { Pushr::MessageDummy.new }
20
+ it 'should return true' do
21
+ expect(message.save).to eql true
22
+ end
23
+
24
+ it 'should return false' do
25
+ expect(message_invalid.save).to eql false
26
+ end
27
+
28
+ it 'should save a message' do
29
+ message.save
30
+ expect(Pushr::Message.next('pushr:app_name:dummy')).to be_kind_of(Pushr::MessageDummy)
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,14 @@
1
+ require 'spec_helper'
2
+
3
+ describe Pushr::RedisConnection do
4
+
5
+ # before(:each) do
6
+ # Pushr.configure do |config|
7
+ # config.redis = ConnectionPool.new(size: 1, timeout: 1) { MockRedis.new }
8
+ # end
9
+ # end
10
+
11
+ describe 'create' do
12
+ it 'should create connection'
13
+ end
14
+ end
@@ -0,0 +1,30 @@
1
+ # This file was generated by the `rspec --init` command. Conventionally, all
2
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
+ # Require this file using `require "spec_helper"` to ensure that it is only
4
+ # loaded once.
5
+
6
+ require 'simplecov'
7
+ require 'coveralls'
8
+
9
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
10
+ SimpleCov::Formatter::HTMLFormatter,
11
+ Coveralls::SimpleCov::Formatter
12
+ ]
13
+ SimpleCov.start
14
+
15
+ require 'pushr/core'
16
+ require 'mock_redis'
17
+
18
+ Dir['./spec/support/**/*.rb'].sort.each { |f| require f }
19
+
20
+ RSpec.configure do |config|
21
+ config.raise_errors_for_deprecations!
22
+ config.run_all_when_everything_filtered = true
23
+ # config.filter_run :focus
24
+
25
+ # Run specs in random order to surface order dependencies. If you find an
26
+ # order dependency and want to debug it, you can fix the order by providing
27
+ # the seed, which is printed after each run.
28
+ # --seed 1234
29
+ config.order = 'random'
30
+ end
@@ -0,0 +1,11 @@
1
+ class Logger
2
+ attr_reader :log
3
+ attr_accessor :level, :formatter
4
+ def initialize(file)
5
+ @log = []
6
+ end
7
+
8
+ def add(level, msg)
9
+ puts formatter.call(level, Time.now, 'Pushr', msg)
10
+ end
11
+ end
@@ -0,0 +1,22 @@
1
+ module Pushr
2
+ class ConfigurationDummy < Pushr::Configuration
3
+ attr_accessor :id, :type, :app, :enabled, :connections, :test_attr
4
+
5
+ def name
6
+ :dummy
7
+ end
8
+
9
+ def to_json(args = nil)
10
+ hsh = {
11
+ id: [@app, name].join(':'),
12
+ type: self.class.to_s,
13
+ app: app,
14
+ enabled: enabled,
15
+ connections: connections,
16
+ test_attr: test_attr
17
+ }
18
+
19
+ ::MultiJson.dump(hsh)
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ module Pushr
2
+ module Daemon
3
+ module DummySupport
4
+ class ConnectionDummy
5
+ attr_reader :name, :configuration
6
+ attr_accessor :data
7
+
8
+ def initialize(configuration, i)
9
+ @configuration = configuration
10
+ @name = "#{@configuration.app}: ConnectionGcm #{i}"
11
+ end
12
+
13
+ def connect
14
+ end
15
+
16
+ def write(data)
17
+ self.data = data
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,16 @@
1
+ module Pushr
2
+ module Daemon
3
+ class Dummy
4
+ attr_accessor :configuration
5
+ def initialize(options)
6
+ self.configuration = options
7
+ end
8
+
9
+ def connectiontype
10
+ DummySupport::ConnectionDummy
11
+ end
12
+
13
+ def stop; end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,11 @@
1
+ module Pushr
2
+ class FeedbackDummy < Pushr::Feedback
3
+ attr_accessor :type, :app, :device, :follow_up, :failed_at
4
+ validates :device, format: { with: /\A[a-z0-9]{64}\z/ }
5
+ validates :follow_up, inclusion: { in: %w(delete), message: '%{value} is not a valid follow-up' }
6
+
7
+ def to_json(args = nil)
8
+ MultiJson.dump(type: 'Pushr::FeedbackDummy', app: app, device: device, follow_up: follow_up, failed_at: failed_at)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,9 @@
1
+ module Pushr
2
+ class FeedbackProcessor
3
+ def initialize
4
+ end
5
+
6
+ def process(feedback)
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,8 @@
1
+ module Pushr
2
+ class InvalidConfigurationDummy < Pushr::Configuration
3
+ attr_accessor :id, :type, :app, :enabled, :connections, :test_attr
4
+ def name
5
+ :invalid_dummy
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,13 @@
1
+ module Pushr
2
+ class MessageDummy < Pushr::Message
3
+ POSTFIX = 'dummy'
4
+ attr_accessor :postfix, :type, :app, :device
5
+
6
+ def to_message
7
+ end
8
+
9
+ def to_json(args = nil)
10
+ MultiJson.dump(type: self.class.to_s, app: app, device: device)
11
+ end
12
+ end
13
+ end
metadata ADDED
@@ -0,0 +1,281 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pushr-core
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0.pre.1
5
+ platform: ruby
6
+ authors:
7
+ - Tom Pesman
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-05-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: redis
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '3'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: redis-namespace
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: multi_json
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: connection_pool
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '2.0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '2.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: activemodel
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '='
88
+ - !ruby/object:Gem::Version
89
+ version: 3.0.0.beta2
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '='
95
+ - !ruby/object:Gem::Version
96
+ version: 3.0.0.beta2
97
+ - !ruby/object:Gem::Dependency
98
+ name: guard
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: guard-rspec
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: mock_redis
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: simplecov
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rubocop
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: rake
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: coveralls
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ description: Pushr daemon for push notification services like APNS (iOS/Apple) and
196
+ GCM/C2DM (Android).
197
+ email:
198
+ - tom@tnux.net
199
+ executables:
200
+ - pushr
201
+ extensions: []
202
+ extra_rdoc_files: []
203
+ files:
204
+ - lib/generators/templates/feedback_processor.rb
205
+ - lib/pushr/configuration.rb
206
+ - lib/pushr/core.rb
207
+ - lib/pushr/daemon.rb
208
+ - lib/pushr/daemon/app.rb
209
+ - lib/pushr/daemon/delivery_error.rb
210
+ - lib/pushr/daemon/delivery_handler.rb
211
+ - lib/pushr/daemon/feedback_handler.rb
212
+ - lib/pushr/daemon/logger.rb
213
+ - lib/pushr/feedback.rb
214
+ - lib/pushr/message.rb
215
+ - lib/pushr/redis_connection.rb
216
+ - lib/pushr/version.rb
217
+ - README.md
218
+ - MIT-LICENSE
219
+ - spec/lib/pushr/configuration_spec.rb
220
+ - spec/lib/pushr/daemon/app_spec.rb
221
+ - spec/lib/pushr/daemon/delivery_error_spec.rb
222
+ - spec/lib/pushr/daemon/delivery_handler_spec.rb
223
+ - spec/lib/pushr/daemon/feedback_handler_spec.rb
224
+ - spec/lib/pushr/daemon/logger_spec.rb
225
+ - spec/lib/pushr/daemon_spec.rb
226
+ - spec/lib/pushr/feedback_spec.rb
227
+ - spec/lib/pushr/message_spec.rb
228
+ - spec/lib/pushr/redis_connection_spec.rb
229
+ - spec/spec_helper.rb
230
+ - spec/support/logger.rb
231
+ - spec/support/pushr_configuration_dummy.rb
232
+ - spec/support/pushr_connection_dummy.rb
233
+ - spec/support/pushr_dummy.rb
234
+ - spec/support/pushr_feedback_dummy.rb
235
+ - spec/support/pushr_feedback_processor_dummy.rb
236
+ - spec/support/pushr_invalid_configuration_dummy.rb
237
+ - spec/support/pushr_message_dummy.rb
238
+ - bin/pushr
239
+ homepage: https://github.com/9to5/pushr-core
240
+ licenses: []
241
+ metadata: {}
242
+ post_install_message:
243
+ rdoc_options: []
244
+ require_paths:
245
+ - lib
246
+ required_ruby_version: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - ">="
249
+ - !ruby/object:Gem::Version
250
+ version: '0'
251
+ required_rubygems_version: !ruby/object:Gem::Requirement
252
+ requirements:
253
+ - - ">"
254
+ - !ruby/object:Gem::Version
255
+ version: 1.3.1
256
+ requirements: []
257
+ rubyforge_project:
258
+ rubygems_version: 2.1.11
259
+ signing_key:
260
+ specification_version: 4
261
+ summary: Core of the pushr daemon.
262
+ test_files:
263
+ - spec/lib/pushr/configuration_spec.rb
264
+ - spec/lib/pushr/daemon/app_spec.rb
265
+ - spec/lib/pushr/daemon/delivery_error_spec.rb
266
+ - spec/lib/pushr/daemon/delivery_handler_spec.rb
267
+ - spec/lib/pushr/daemon/feedback_handler_spec.rb
268
+ - spec/lib/pushr/daemon/logger_spec.rb
269
+ - spec/lib/pushr/daemon_spec.rb
270
+ - spec/lib/pushr/feedback_spec.rb
271
+ - spec/lib/pushr/message_spec.rb
272
+ - spec/lib/pushr/redis_connection_spec.rb
273
+ - spec/spec_helper.rb
274
+ - spec/support/logger.rb
275
+ - spec/support/pushr_configuration_dummy.rb
276
+ - spec/support/pushr_connection_dummy.rb
277
+ - spec/support/pushr_dummy.rb
278
+ - spec/support/pushr_feedback_dummy.rb
279
+ - spec/support/pushr_feedback_processor_dummy.rb
280
+ - spec/support/pushr_invalid_configuration_dummy.rb
281
+ - spec/support/pushr_message_dummy.rb