apn_sender 2.0.1 → 2.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +7 -0
- data/README.md +4 -4
- data/lib/apn.rb +11 -11
- data/lib/apn/backend.rb +2 -16
- data/lib/apn/backend/resque.rb +17 -0
- data/lib/apn/backend/sidekiq.rb +17 -0
- data/lib/apn/client.rb +1 -1
- data/lib/apn/feedback.rb +1 -1
- data/lib/apn/notification.rb +3 -0
- data/lib/apn/railtie.rb +1 -4
- data/lib/apn/tasks.rb +1 -0
- data/lib/apn/version.rb +1 -1
- data/lib/apn_sender.rb +1 -0
- metadata +26 -27
- checksums.yaml +0 -7
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,11 @@
|
|
1
1
|
# Version 2.0
|
2
|
+
## 2.0.2
|
3
|
+
- Add default file so we dont need to require 'apn' anymore
|
4
|
+
- Change backend switch:
|
5
|
+
Use simple backend per default, also allow changes.
|
6
|
+
Now you can change the backend using:
|
7
|
+
APN.backend = :sidekiq
|
8
|
+
|
2
9
|
## 2.0.1
|
3
10
|
- Use bytesize to truncate alert when necessary
|
4
11
|
- Better calculation on payload size. (botvinik)
|
data/README.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
[![Code Climate](
|
2
|
-
[![Build Status](https://travis-ci.org/arthurnn/apn_sender.
|
1
|
+
[![Code Climate](http://img.shields.io/codeclimate/github/arthurnn/apn_sender.svg)](https://codeclimate.com/github/arthurnn/apn_sender)
|
2
|
+
[![Build Status](https://travis-ci.org/arthurnn/apn_sender.svg?branch=master)](https://travis-ci.org/arthurnn/apn_sender)
|
3
3
|
|
4
4
|
## Synopsis
|
5
5
|
|
@@ -56,9 +56,11 @@ APN.host = 'apple host (on development sandbox url is used by default)'
|
|
56
56
|
APN.password = 'certificate_password'
|
57
57
|
APN.pool_size = 1 # number of connections on the pool
|
58
58
|
APN.pool_timeout = 5 # timeout in seconds for connection pool
|
59
|
+
APN.logger = Logger.new(File.join(Rails.root, 'log', 'apn_sender.log'))
|
59
60
|
```
|
60
61
|
|
61
62
|
Check ```logs/apn_sender.log``` for debugging output. In addition to logging any major errors there, apn_sender hooks into the Resque::Worker logging to display any verbose or very_verbose worker output in apn_sender.log file as well.
|
63
|
+
On latest versions apn_sender will use Rails.logger as the default logger.
|
62
64
|
|
63
65
|
|
64
66
|
### 4. Checking Apple's Feedback Service
|
@@ -147,5 +149,3 @@ To add a few useful rake tasks for running workers, add the following line to yo
|
|
147
149
|
APN Sender is released under the [MIT License](http://www.opensource.org/licenses/MIT).
|
148
150
|
|
149
151
|
|
150
|
-
[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/arthurnn/apn_sender/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
|
151
|
-
|
data/lib/apn.rb
CHANGED
@@ -22,26 +22,26 @@ module APN
|
|
22
22
|
msg = APN::Notification.new(token, opts)
|
23
23
|
raise "Invalid notification options (did you provide :alert, :badge, or :sound?): #{opts.inspect}" unless msg.valid?
|
24
24
|
|
25
|
+
APN.log(:debug, "Sending to token '#{token}' message '#{opts.to_s}'")
|
25
26
|
APN.with_connection do |client|
|
26
27
|
client.push(msg)
|
27
28
|
end
|
28
29
|
end
|
29
30
|
|
30
31
|
def backend=(backend)
|
31
|
-
@backend =
|
32
|
+
@backend =
|
33
|
+
case backend
|
34
|
+
when Symbol
|
35
|
+
APN::Backend.const_get(backend.to_s.camelize).new
|
36
|
+
when nil
|
37
|
+
APN::Backend::Simple.new
|
38
|
+
else
|
39
|
+
backend
|
40
|
+
end
|
32
41
|
end
|
33
42
|
|
34
43
|
def backend
|
35
|
-
@backend ||=
|
36
|
-
if defined?(Sidekiq)
|
37
|
-
require 'apn/jobs/sidekiq_notification_job'
|
38
|
-
APN::Backend::Sidekiq.new
|
39
|
-
elsif defined?(Resque)
|
40
|
-
require 'apn/jobs/resque_notification_job'
|
41
|
-
APN::Backend::Resque.new
|
42
|
-
else
|
43
|
-
APN::Backend::Simple.new
|
44
|
-
end
|
44
|
+
@backend ||= APN::Backend::Simple.new
|
45
45
|
end
|
46
46
|
|
47
47
|
def logger=(logger)
|
data/lib/apn/backend.rb
CHANGED
@@ -1,22 +1,9 @@
|
|
1
1
|
module APN
|
2
2
|
module Backend
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
def notify(token, opts)
|
7
|
-
::Sidekiq::Client.enqueue(APN::Jobs::SidekiqNotificationJob, token, opts)
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
class Resque
|
12
|
-
|
13
|
-
def notify(token, opts)
|
14
|
-
::Resque.enqueue(APN::Jobs::ResqueNotificationJob, token, opts)
|
15
|
-
end
|
16
|
-
end
|
3
|
+
autoload :Sidekiq, 'apn/backend/sidekiq'
|
4
|
+
autoload :Resque, 'apn/backend/resque'
|
17
5
|
|
18
6
|
class Simple
|
19
|
-
|
20
7
|
def notify(token, opts)
|
21
8
|
Thread.new do
|
22
9
|
APN.notify_sync(token, opts)
|
@@ -25,7 +12,6 @@ module APN
|
|
25
12
|
end
|
26
13
|
|
27
14
|
class Null
|
28
|
-
|
29
15
|
def notify(token, opts)
|
30
16
|
APN.log("Null Backend sending message to #{token}")
|
31
17
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
begin
|
2
|
+
require 'resque'
|
3
|
+
require 'apn/jobs/resque_notification_job'
|
4
|
+
rescue LoadError => e
|
5
|
+
$stderr.puts "You don't have resque installed in your application. Please add it to your Gemfile and run bundle install"
|
6
|
+
raise e
|
7
|
+
end
|
8
|
+
|
9
|
+
module APN
|
10
|
+
module Backend
|
11
|
+
class Resque
|
12
|
+
def notify(token, opts)
|
13
|
+
::Resque.enqueue(APN::Jobs::ResqueNotificationJob, token, opts)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
begin
|
2
|
+
require 'sidekiq'
|
3
|
+
require 'apn/jobs/sidekiq_notification_job'
|
4
|
+
rescue LoadError => e
|
5
|
+
$stderr.puts "You don't have sidekiq installed in your application. Please add it to your Gemfile and run bundle install"
|
6
|
+
raise e
|
7
|
+
end
|
8
|
+
|
9
|
+
module APN
|
10
|
+
module Backend
|
11
|
+
class Sidekiq
|
12
|
+
def notify(token, opts)
|
13
|
+
::Sidekiq::Client.enqueue(APN::Jobs::SidekiqNotificationJob, token, opts)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/apn/client.rb
CHANGED
@@ -22,7 +22,7 @@ module APN
|
|
22
22
|
|
23
23
|
APN.log(:debug, "Message sent.")
|
24
24
|
true
|
25
|
-
rescue OpenSSL::SSL::SSLError, Errno::EPIPE => e
|
25
|
+
rescue OpenSSL::SSL::SSLError, Errno::EPIPE, Errno::ETIMEDOUT => e
|
26
26
|
APN.log(:error, "[##{self.object_id}] Exception occurred: #{e.inspect}, socket state: #{socket.inspect}")
|
27
27
|
reset_socket
|
28
28
|
APN.log(:debug, "[##{self.object_id}] Socket reestablished, socket state: #{socket.inspect}")
|
data/lib/apn/feedback.rb
CHANGED
@@ -46,7 +46,7 @@ module APN
|
|
46
46
|
|
47
47
|
# Prettify to return meaningful status information when printed. Can't add these directly to connection/base, because Resque depends on decoding to_s
|
48
48
|
def to_s
|
49
|
-
"#{@
|
49
|
+
"#{@client ? 'Connected' : 'Connection not currently established'} to #{host} on #{port}"
|
50
50
|
end
|
51
51
|
|
52
52
|
protected
|
data/lib/apn/notification.rb
CHANGED
@@ -73,6 +73,9 @@ module APN
|
|
73
73
|
if sound = opts.delete(:sound)
|
74
74
|
hsh['aps']['sound'] = sound.is_a?(TrueClass) ? 'default' : sound.to_s
|
75
75
|
end
|
76
|
+
if content_available = opts.delete(:content_available)
|
77
|
+
hsh['aps']['content-available'] = 1 if [1,true].include? content_available
|
78
|
+
end
|
76
79
|
hsh.merge!(opts)
|
77
80
|
payload(hsh)
|
78
81
|
end
|
data/lib/apn/railtie.rb
CHANGED
@@ -7,10 +7,7 @@ module APN
|
|
7
7
|
APN.certificate_name = "apn_development.pem"
|
8
8
|
APN.host = "gateway.sandbox.push.apple.com"
|
9
9
|
end
|
10
|
-
|
11
|
-
logger = Logger.new(File.join(Rails.root, 'log', 'apn_sender.log'))
|
12
|
-
APN.logger = logger
|
13
|
-
|
10
|
+
APN.logger = Rails.logger
|
14
11
|
end
|
15
12
|
end
|
16
13
|
end
|
data/lib/apn/tasks.rb
CHANGED
data/lib/apn/version.rb
CHANGED
data/lib/apn_sender.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'apn'
|
metadata
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: apn_sender
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.2
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Kali Donovan
|
@@ -13,46 +14,40 @@ date: 2011-05-15 00:00:00.000000000 Z
|
|
13
14
|
dependencies:
|
14
15
|
- !ruby/object:Gem::Dependency
|
15
16
|
name: connection_pool
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirement: &1 !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
17
19
|
requirements:
|
18
20
|
- - ">="
|
19
21
|
- !ruby/object:Gem::Version
|
20
22
|
version: '0'
|
21
23
|
type: :runtime
|
22
24
|
prerelease: false
|
23
|
-
version_requirements:
|
24
|
-
requirements:
|
25
|
-
- - ">="
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
version: '0'
|
25
|
+
version_requirements: *1
|
28
26
|
- !ruby/object:Gem::Dependency
|
29
27
|
name: activesupport
|
30
|
-
requirement: !ruby/object:Gem::Requirement
|
28
|
+
requirement: &2 !ruby/object:Gem::Requirement
|
29
|
+
none: false
|
31
30
|
requirements:
|
32
31
|
- - ">="
|
33
32
|
- !ruby/object:Gem::Version
|
34
33
|
version: '3.1'
|
34
|
+
- - "<"
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: 4.1.0
|
35
37
|
type: :runtime
|
36
38
|
prerelease: false
|
37
|
-
version_requirements:
|
38
|
-
requirements:
|
39
|
-
- - ">="
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
version: '3.1'
|
39
|
+
version_requirements: *2
|
42
40
|
- !ruby/object:Gem::Dependency
|
43
41
|
name: daemons
|
44
|
-
requirement: !ruby/object:Gem::Requirement
|
42
|
+
requirement: &3 !ruby/object:Gem::Requirement
|
43
|
+
none: false
|
45
44
|
requirements:
|
46
45
|
- - ">="
|
47
46
|
- !ruby/object:Gem::Version
|
48
47
|
version: '0'
|
49
48
|
type: :runtime
|
50
49
|
prerelease: false
|
51
|
-
version_requirements:
|
52
|
-
requirements:
|
53
|
-
- - ">="
|
54
|
-
- !ruby/object:Gem::Version
|
55
|
-
version: '0'
|
50
|
+
version_requirements: *3
|
56
51
|
description: Background worker to send Apple Push Notifications over a persistent
|
57
52
|
TCP socket. Includes Resque tweaks to allow persistent sockets between jobs, helper
|
58
53
|
methods for enqueueing APN notifications, and a background daemon to send them.
|
@@ -61,11 +56,8 @@ executables: []
|
|
61
56
|
extensions: []
|
62
57
|
extra_rdoc_files: []
|
63
58
|
files:
|
64
|
-
-
|
65
|
-
-
|
66
|
-
- README.md
|
67
|
-
- Rakefile
|
68
|
-
- lib/apn.rb
|
59
|
+
- lib/apn/backend/resque.rb
|
60
|
+
- lib/apn/backend/sidekiq.rb
|
69
61
|
- lib/apn/backend.rb
|
70
62
|
- lib/apn/client.rb
|
71
63
|
- lib/apn/connection.rb
|
@@ -77,29 +69,36 @@ files:
|
|
77
69
|
- lib/apn/sender_daemon.rb
|
78
70
|
- lib/apn/tasks.rb
|
79
71
|
- lib/apn/version.rb
|
72
|
+
- lib/apn.rb
|
73
|
+
- lib/apn_sender.rb
|
74
|
+
- CHANGELOG.md
|
75
|
+
- LICENSE
|
76
|
+
- README.md
|
77
|
+
- Rakefile
|
80
78
|
homepage: http://github.com/arthurnn/apn_sender
|
81
79
|
licenses:
|
82
80
|
- MIT
|
83
|
-
metadata: {}
|
84
81
|
post_install_message:
|
85
82
|
rdoc_options: []
|
86
83
|
require_paths:
|
87
84
|
- lib
|
88
85
|
required_ruby_version: !ruby/object:Gem::Requirement
|
86
|
+
none: false
|
89
87
|
requirements:
|
90
88
|
- - ">="
|
91
89
|
- !ruby/object:Gem::Version
|
92
90
|
version: '1.9'
|
93
91
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
92
|
+
none: false
|
94
93
|
requirements:
|
95
94
|
- - ">="
|
96
95
|
- !ruby/object:Gem::Version
|
97
96
|
version: 1.3.6
|
98
97
|
requirements: []
|
99
98
|
rubyforge_project:
|
100
|
-
rubygems_version:
|
99
|
+
rubygems_version: 1.8.11
|
101
100
|
signing_key:
|
102
|
-
specification_version:
|
101
|
+
specification_version: 3
|
103
102
|
summary: Background worker to send Apple Push Notifications over a persistent TCP
|
104
103
|
socket.
|
105
104
|
test_files: []
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: e9297870e306966d00d3d0acf01a3022dbbb1636
|
4
|
-
data.tar.gz: 25b8a81befe782fba5a0b7f0376ce9491f674a86
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: 5048150d58ffba87b276ebe50d24bd1ab744f6eefa58ac94662cf22b5b773fde19fa66b840c1c982303693460d0d53283606aa9a0af7f99f04a6e4eb6802e634
|
7
|
-
data.tar.gz: ef4fc9e0ce014ac4bef75d1da4f858ae6317a86bed03aa09e8ca1f248e9b9cffef8f9a5ec2939024fb7db4ee89cfe87e91dcc0bb2c302a581cfcb8a38466f126
|