notifiable-apns-grocer 0.1.1 → 0.2.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: fe0246de41d01630e6997ece48dcc1263b5e6b31
4
- data.tar.gz: 96aeb86c1c8850e52a3a95e55518a141c5e42a2f
3
+ metadata.gz: ec911dcc2570ab9c8a271321f303db764b7b62be
4
+ data.tar.gz: b96d35f7daefc693e0198727077184b1e1b1b5cf
5
5
  SHA512:
6
- metadata.gz: ad9409ee4f03f7e5b9d374c2de5ded4ec0358d7fdb4cd69f0716340f9a61715e4ca2378393f80764cab84ef139215dfc89a1ed7e7dc9b52eee2ef3d8afd09f2f
7
- data.tar.gz: f9fe2a3a9a9e4b5cd38deb85be368d0f7c8d093281693b8c9d9159f918eb5c79ba8db8a49b47067044e39ef458366824fb3f0224530a5f4eebf0e9a0458c6242
6
+ metadata.gz: 126caf702a911701e0063a151b418d0664674ed975561b85c53b3ac4d75d261aee3058196b3e6423ce65676522d455a573f6251e90d1ffb1ad30b3ceb5acbeaa
7
+ data.tar.gz: 8e1167a5e9d16f288baaf31306f588165b5722f5af44c1e05f92066b183d49fc3bc52e0fb0dda264d5c36428aa4ab0af8b7de1727dfafe9c984f019e8c9b44c9
data/README.md CHANGED
@@ -1,29 +1,3 @@
1
1
  # Notifiable::Apns::Grocer
2
2
 
3
- TODO: Write a gem description
4
-
5
- ## Installation
6
-
7
- Add this line to your application's Gemfile:
8
-
9
- gem 'notifiable-apns-grocer'
10
-
11
- And then execute:
12
-
13
- $ bundle
14
-
15
- Or install it yourself as:
16
-
17
- $ gem install notifiable-apns-grocer
18
-
19
- ## Usage
20
-
21
- TODO: Write usage instructions here
22
-
23
- ## Contributing
24
-
25
- 1. Fork it
26
- 2. Create your feature branch (`git checkout -b my-new-feature`)
27
- 3. Commit your changes (`git commit -am 'Add some feature'`)
28
- 4. Push to the branch (`git push origin my-new-feature`)
29
- 5. Create new Pull Request
3
+ Please refer to the [notifiable-rails](https://github.com/FutureWorkshops/notifiable-rails) Readme for further information.
data/Rakefile CHANGED
@@ -1 +1,15 @@
1
1
  require "bundler/gem_tasks"
2
+ require 'rspec/core/rake_task'
3
+ Dir[File.join(File.dirname(__FILE__), 'lib/tasks/**/*.rake')].each {|f| load f }
4
+
5
+ namespace :ci do
6
+ namespace :test do
7
+ desc "Run all specs in spec directory (excluding plugin specs)"
8
+ RSpec::Core::RakeTask.new(:spec)
9
+ end
10
+
11
+ task :prepare
12
+
13
+ desc "Run all CI tests"
14
+ task :test => ['ci:test:spec']
15
+ end
@@ -5,7 +5,9 @@ module Notifiable
5
5
  module Apns
6
6
  module Grocer
7
7
  class Stream < Notifiable::NotifierBase
8
-
8
+
9
+ attr_accessor :sandbox, :certificate, :passphrase
10
+
9
11
  def close
10
12
  super
11
13
  @grocer_pusher = nil
@@ -15,35 +17,60 @@ module Notifiable
15
17
  protected
16
18
  def enqueue(notification, device_token)
17
19
 
18
- grocer_notification = ::Grocer::Notification.new(device_token: device_token.token, alert: notification.apns_message, custom: notification.payload)
20
+ grocer_notification = ::Grocer::Notification.new(
21
+ device_token: device_token.token,
22
+ alert: notification.provider_value(device_token.provider, :message),
23
+ custom: notification.provider_value(device_token.provider, :custom),
24
+ )
25
+
19
26
  grocer_pusher.push(grocer_notification) unless Notifiable.delivery_method == :test
20
27
 
21
28
  processed(notification, device_token)
22
29
  end
23
30
 
24
31
  def flush
25
- process_feedback unless Notifiable.env == 'test'
32
+ process_feedback unless self.test_env?
26
33
  end
27
34
 
28
- private
29
- def grocer_pusher
30
- @grocer_pusher ||= ::Grocer.pusher(Notifiable.apns_gateway_config)
31
- end
35
+ private
36
+ def gateway_config
37
+ {
38
+ certificate: self.certificate,
39
+ passphrase: self.passphrase,
40
+ gateway: self.test_env? ? "localhost" : self.sandbox ? "gateway.sandbox.push.apple.com" : "gateway.push.apple.com",
41
+ port: 2195,
42
+ retries: 3
43
+ }
44
+ end
45
+
46
+ def feedback_config
47
+ {
48
+ certificate: self.certificate,
49
+ passphrase: self.passphrase,
50
+ gateway: self.test_env? ? "feedback.sandbox.push.apple.com" : "feedback.push.apple.com",
51
+ port: 2196,
52
+ retries: 3
53
+ }
54
+ end
55
+
56
+ def grocer_pusher
57
+ @grocer_pusher ||= ::Grocer.pusher(gateway_config)
58
+ end
32
59
 
33
- def grocer_feedback
34
- @grocer_feedback ||= ::Grocer.feedback(Notifiable.apns_feedback_config)
35
- end
60
+ def grocer_feedback
61
+ @grocer_feedback ||= ::Grocer.feedback(feedback_config)
62
+ end
36
63
 
37
- def process_feedback
38
- grocer_feedback.each do |attempt|
39
- token = attempt.device_token
40
- device_token = DeviceToken.find_by_token(token)
41
- if device_token
42
- device_token.update_attribute("is_valid", false) if device_token.updated_at < attempt.timestamp
43
- Rails.logger.info("Device #{token} (#{device_token.user_id}) failed at #{attempt.timestamp}")
44
- end
45
- end
46
- end
64
+ def process_feedback
65
+ grocer_feedback.each do |attempt|
66
+ token = attempt.device_token
67
+ device_token = DeviceToken.find_by_token(token)
68
+ if device_token
69
+ device_token.update_attribute("is_valid", false) if device_token.updated_at < attempt.timestamp
70
+ Rails.logger.info("Device #{token} (#{device_token.user_id}) failed at #{attempt.timestamp}")
71
+ end
72
+ end
73
+ end
47
74
  end
48
75
  end
49
76
  end
@@ -1,7 +1,7 @@
1
1
  module Notifiable
2
2
  module Apns
3
3
  module Grocer
4
- VERSION = "0.1.1"
4
+ VERSION = "0.2.0"
5
5
  end
6
6
  end
7
7
  end
@@ -18,14 +18,16 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_dependency "notifiable-rails"
21
+ spec.add_dependency "notifiable-rails", ">=0.4.0"
22
22
  spec.add_dependency "grocer"
23
23
 
24
24
  spec.add_development_dependency "bundler", "~> 1.3"
25
25
  spec.add_development_dependency "rake"
26
26
  spec.add_development_dependency "rspec"
27
27
  spec.add_development_dependency "simplecov"
28
+ spec.add_development_dependency "simplecov-rcov"
28
29
  spec.add_development_dependency "sqlite3"
29
30
  spec.add_development_dependency "database_cleaner"
31
+ spec.add_development_dependency 'ruby-prof'
30
32
 
31
33
  end
data/spec/grocer_spec.rb CHANGED
@@ -8,7 +8,7 @@ describe Notifiable::Apns::Grocer::Stream do
8
8
  let(:u) { User.new(d) }
9
9
 
10
10
  it "sends a single grocer notification" do
11
-
11
+ g.env = "test"
12
12
  g.send_notification(n, d)
13
13
 
14
14
  Timeout.timeout(2) {
@@ -30,6 +30,20 @@ describe Notifiable::Apns::Grocer::Stream do
30
30
  }
31
31
  end
32
32
 
33
+ it "supports custom properties" do
34
+ n.payload = {:apns => {:custom => {:flag => true}}}
35
+
36
+ Notifiable.batch do |b|
37
+ b.add(n, u)
38
+ end
39
+ Notifiable::NotificationDeviceToken.count.should == 1
40
+
41
+ Timeout.timeout(2) {
42
+ notification = @grocer.notifications.pop
43
+ notification.custom[:flag].should == true
44
+ }
45
+ end
46
+
33
47
  end
34
48
 
35
49
  User = Struct.new(:device_token) do
data/spec/spec_helper.rb CHANGED
@@ -1,11 +1,13 @@
1
1
  ENV['RAILS_ENV'] ||= 'test'
2
2
 
3
3
  require 'simplecov'
4
+ require 'simplecov-rcov'
5
+ SimpleCov.formatter = SimpleCov::Formatter::RcovFormatter
4
6
  SimpleCov.start do
5
- minimum_coverage 80
6
7
  add_filter "/spec/"
7
8
  end
8
9
 
10
+ require 'timeout'
9
11
  require 'database_cleaner'
10
12
  require 'active_record'
11
13
  require 'rails'
@@ -36,8 +38,6 @@ RSpec.configure do |config|
36
38
 
37
39
  @grocer = Grocer.server(port: 2195)
38
40
  @grocer.accept
39
-
40
- Notifiable.apns_gateway = "localhost"
41
41
  }
42
42
 
43
43
  config.before(:each) {
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: notifiable-apns-grocer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kamil Kocemba
@@ -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-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: notifiable-rails
@@ -17,14 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - '>='
19
19
  - !ruby/object:Gem::Version
20
- version: '0'
20
+ version: 0.4.0
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - '>='
26
26
  - !ruby/object:Gem::Version
27
- version: '0'
27
+ version: 0.4.0
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: grocer
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -95,6 +95,20 @@ dependencies:
95
95
  - - '>='
96
96
  - !ruby/object:Gem::Version
97
97
  version: '0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: simplecov-rcov
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - '>='
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - '>='
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
98
112
  - !ruby/object:Gem::Dependency
99
113
  name: sqlite3
100
114
  requirement: !ruby/object:Gem::Requirement
@@ -123,6 +137,20 @@ dependencies:
123
137
  - - '>='
124
138
  - !ruby/object:Gem::Version
125
139
  version: '0'
140
+ - !ruby/object:Gem::Dependency
141
+ name: ruby-prof
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - '>='
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ type: :development
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - '>='
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
126
154
  description: Plugin to use Grocer for APNS with Notifiable-Rails
127
155
  email:
128
156
  - kamil@futureworkshops.com