pling 0.3.1 → 0.4.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 +7 -0
- data/.travis.yml +2 -4
- data/Gemfile +0 -1
- data/lib/pling/apn/gateway.rb +22 -6
- data/lib/pling/c2dm/gateway.rb +1 -1
- data/lib/pling/gcm/gateway.rb +1 -1
- data/lib/pling/version.rb +1 -1
- data/pling.gemspec +1 -0
- data/spec/pling/apn/gateway_spec.rb +27 -4
- metadata +35 -35
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 14d000e78a057ba2db7a60c0a235d1f3f09b63c2
|
4
|
+
data.tar.gz: 890d8ed20c079f8e8f41ad3bc36b7d50e7b2f711
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a51e7f0552197e83caffc20d94f383da8437228a65fe650acc505f02fa3cf07cbbcae2ba47f705c6829a4e58fbd1340c3156966483f55596f438386b07e5f9e6
|
7
|
+
data.tar.gz: ff10429ead2557b0f681c52093a5340614599e0dd16ba2fb3665021f95043efd2806487cbaff833274277623f955aa3a1adeabeb0bc6defaed3e3de88b06f17c
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/lib/pling/apn/gateway.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'socket'
|
2
2
|
require 'openssl'
|
3
3
|
require 'json'
|
4
|
+
require 'connection_pool'
|
4
5
|
|
5
6
|
module Pling
|
6
7
|
module APN
|
@@ -33,10 +34,10 @@ module Pling
|
|
33
34
|
setup!
|
34
35
|
end
|
35
36
|
|
36
|
-
##
|
37
|
+
##
|
37
38
|
# Establishes a new connection if connection is not available or closed
|
38
39
|
def setup!
|
39
|
-
|
40
|
+
setup_connection_pool
|
40
41
|
end
|
41
42
|
|
42
43
|
##
|
@@ -57,9 +58,9 @@ module Pling
|
|
57
58
|
|
58
59
|
data = data.to_json
|
59
60
|
|
60
|
-
if data.bytesize >
|
61
|
+
if data.bytesize > 2048
|
61
62
|
raise Pling::DeliveryFailed.new(
|
62
|
-
"Payload size of #{data.bytesize} exceeds allowed size of
|
63
|
+
"Payload size of #{data.bytesize} exceeds allowed size of 2048 bytes.",
|
63
64
|
message,
|
64
65
|
device)
|
65
66
|
end
|
@@ -75,18 +76,33 @@ module Pling
|
|
75
76
|
super.merge(
|
76
77
|
:host => 'gateway.push.apple.com',
|
77
78
|
:port => 2195,
|
78
|
-
:payload => false
|
79
|
+
:payload => false,
|
80
|
+
:pool_size => 3,
|
81
|
+
:timeout => 5
|
79
82
|
)
|
80
83
|
end
|
81
84
|
|
82
85
|
def connection
|
83
|
-
@connection
|
86
|
+
@connection
|
87
|
+
end
|
88
|
+
|
89
|
+
def setup_connection_pool
|
90
|
+
@connection ||= connection_pool
|
91
|
+
end
|
92
|
+
|
93
|
+
def new_connection
|
94
|
+
Connection.new(
|
84
95
|
:host => configuration[:host],
|
85
96
|
:port => configuration[:port],
|
86
97
|
:certificate => configuration[:certificate]
|
87
98
|
)
|
88
99
|
end
|
89
100
|
|
101
|
+
def connection_pool
|
102
|
+
ConnectionPool::Wrapper.new(size: configuration[:pool_size], timeout: configuration[:timeout]) do
|
103
|
+
new_connection
|
104
|
+
end
|
105
|
+
end
|
90
106
|
end
|
91
107
|
end
|
92
108
|
end
|
data/lib/pling/c2dm/gateway.rb
CHANGED
@@ -104,7 +104,7 @@ module Pling
|
|
104
104
|
end
|
105
105
|
|
106
106
|
def connection
|
107
|
-
|
107
|
+
Faraday.new(configuration[:connection]) do |builder|
|
108
108
|
builder.use Faraday::Request::UrlEncoded
|
109
109
|
builder.use Faraday::Response::Logger if configuration[:debug]
|
110
110
|
builder.adapter(configuration[:adapter])
|
data/lib/pling/gcm/gateway.rb
CHANGED
@@ -75,7 +75,7 @@ module Pling
|
|
75
75
|
end
|
76
76
|
|
77
77
|
def connection
|
78
|
-
|
78
|
+
Faraday.new(configuration[:connection]) do |builder|
|
79
79
|
builder.use FaradayMiddleware::EncodeJson
|
80
80
|
builder.use FaradayMiddleware::ParseJson, :content_type => /\bjson$/
|
81
81
|
builder.use Faraday::Response::Logger if configuration[:debug]
|
data/lib/pling/version.rb
CHANGED
data/pling.gemspec
CHANGED
@@ -19,6 +19,7 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.add_runtime_dependency "faraday", "~> 0.7"
|
20
20
|
s.add_runtime_dependency "faraday_middleware", "~> 0.8"
|
21
21
|
s.add_runtime_dependency "json", "~> 1.4"
|
22
|
+
s.add_runtime_dependency "connection_pool", "~> 2.0.0"
|
22
23
|
s.add_runtime_dependency("jruby-openssl") if RUBY_PLATFORM == 'java'
|
23
24
|
|
24
25
|
s.add_development_dependency "rspec", "~> 2.7"
|
@@ -18,6 +18,21 @@ describe Pling::APN::Gateway do
|
|
18
18
|
Pling::APN::Gateway.handled_types.should =~ [:apple, :apn, :ios, :ipad, :iphone, :ipod]
|
19
19
|
end
|
20
20
|
|
21
|
+
describe '#setup!' do
|
22
|
+
before do
|
23
|
+
valid_configuration.merge!(pool_size: 99, timeout: 55)
|
24
|
+
end
|
25
|
+
|
26
|
+
subject { Pling::APN::Gateway.new(valid_configuration) }
|
27
|
+
|
28
|
+
let(:connection_pool) { double(:connection_pool_double) }
|
29
|
+
|
30
|
+
it 'initializes a new connection pool for the APN connection' do
|
31
|
+
ConnectionPool::Wrapper.should_receive(:new).with(size: 99, timeout: 55).and_return(connection_pool)
|
32
|
+
subject.setup!
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
21
36
|
describe '#deliver' do
|
22
37
|
subject { Pling::APN::Gateway.new(valid_configuration) }
|
23
38
|
|
@@ -29,6 +44,14 @@ describe Pling::APN::Gateway do
|
|
29
44
|
expect { subject.deliver(message, nil) }.to raise_error
|
30
45
|
end
|
31
46
|
|
47
|
+
it 'should initialize a new APN connection if none is established' do
|
48
|
+
Pling::APN::Connection.should_receive(:new).and_return(connection)
|
49
|
+
subject.deliver(message, device)
|
50
|
+
|
51
|
+
Pling::APN::Connection.should_not_receive(:new)
|
52
|
+
subject.deliver(message, device)
|
53
|
+
end
|
54
|
+
|
32
55
|
it 'should call #to_pling_message on the given message' do
|
33
56
|
message.should_receive(:to_pling_message).and_return(message)
|
34
57
|
subject.deliver(message, device)
|
@@ -39,9 +62,9 @@ describe Pling::APN::Gateway do
|
|
39
62
|
subject.deliver(message, device)
|
40
63
|
end
|
41
64
|
|
42
|
-
it 'should raise an exception when the payload exceeds
|
43
|
-
message.body = "X" *
|
44
|
-
expect { subject.deliver(message, device) }.to raise_error(Pling::DeliveryFailed, /Payload size of \d+ exceeds allowed size of
|
65
|
+
it 'should raise an exception when the payload exceeds 2048 bytes' do
|
66
|
+
message.body = "X" * 3000
|
67
|
+
expect { subject.deliver(message, device) }.to raise_error(Pling::DeliveryFailed, /Payload size of \d+ exceeds allowed size of 2048 bytes/)
|
45
68
|
end
|
46
69
|
|
47
70
|
it 'should try to deliver the given message' do
|
@@ -138,4 +161,4 @@ describe Pling::APN::Gateway do
|
|
138
161
|
end
|
139
162
|
end
|
140
163
|
end
|
141
|
-
end
|
164
|
+
end
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pling
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.4.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Benedikt Deicke
|
@@ -11,102 +10,104 @@ authors:
|
|
11
10
|
autorequire:
|
12
11
|
bindir: bin
|
13
12
|
cert_chain: []
|
14
|
-
date:
|
13
|
+
date: 2015-09-24 00:00:00.000000000 Z
|
15
14
|
dependencies:
|
16
15
|
- !ruby/object:Gem::Dependency
|
17
16
|
name: faraday
|
18
17
|
requirement: !ruby/object:Gem::Requirement
|
19
|
-
none: false
|
20
18
|
requirements:
|
21
|
-
- - ~>
|
19
|
+
- - "~>"
|
22
20
|
- !ruby/object:Gem::Version
|
23
21
|
version: '0.7'
|
24
22
|
type: :runtime
|
25
23
|
prerelease: false
|
26
24
|
version_requirements: !ruby/object:Gem::Requirement
|
27
|
-
none: false
|
28
25
|
requirements:
|
29
|
-
- - ~>
|
26
|
+
- - "~>"
|
30
27
|
- !ruby/object:Gem::Version
|
31
28
|
version: '0.7'
|
32
29
|
- !ruby/object:Gem::Dependency
|
33
30
|
name: faraday_middleware
|
34
31
|
requirement: !ruby/object:Gem::Requirement
|
35
|
-
none: false
|
36
32
|
requirements:
|
37
|
-
- - ~>
|
33
|
+
- - "~>"
|
38
34
|
- !ruby/object:Gem::Version
|
39
35
|
version: '0.8'
|
40
36
|
type: :runtime
|
41
37
|
prerelease: false
|
42
38
|
version_requirements: !ruby/object:Gem::Requirement
|
43
|
-
none: false
|
44
39
|
requirements:
|
45
|
-
- - ~>
|
40
|
+
- - "~>"
|
46
41
|
- !ruby/object:Gem::Version
|
47
42
|
version: '0.8'
|
48
43
|
- !ruby/object:Gem::Dependency
|
49
44
|
name: json
|
50
45
|
requirement: !ruby/object:Gem::Requirement
|
51
|
-
none: false
|
52
46
|
requirements:
|
53
|
-
- - ~>
|
47
|
+
- - "~>"
|
54
48
|
- !ruby/object:Gem::Version
|
55
49
|
version: '1.4'
|
56
50
|
type: :runtime
|
57
51
|
prerelease: false
|
58
52
|
version_requirements: !ruby/object:Gem::Requirement
|
59
|
-
none: false
|
60
53
|
requirements:
|
61
|
-
- - ~>
|
54
|
+
- - "~>"
|
62
55
|
- !ruby/object:Gem::Version
|
63
56
|
version: '1.4'
|
57
|
+
- !ruby/object:Gem::Dependency
|
58
|
+
name: connection_pool
|
59
|
+
requirement: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - "~>"
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: 2.0.0
|
64
|
+
type: :runtime
|
65
|
+
prerelease: false
|
66
|
+
version_requirements: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - "~>"
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: 2.0.0
|
64
71
|
- !ruby/object:Gem::Dependency
|
65
72
|
name: rspec
|
66
73
|
requirement: !ruby/object:Gem::Requirement
|
67
|
-
none: false
|
68
74
|
requirements:
|
69
|
-
- - ~>
|
75
|
+
- - "~>"
|
70
76
|
- !ruby/object:Gem::Version
|
71
77
|
version: '2.7'
|
72
78
|
type: :development
|
73
79
|
prerelease: false
|
74
80
|
version_requirements: !ruby/object:Gem::Requirement
|
75
|
-
none: false
|
76
81
|
requirements:
|
77
|
-
- - ~>
|
82
|
+
- - "~>"
|
78
83
|
- !ruby/object:Gem::Version
|
79
84
|
version: '2.7'
|
80
85
|
- !ruby/object:Gem::Dependency
|
81
86
|
name: yard
|
82
87
|
requirement: !ruby/object:Gem::Requirement
|
83
|
-
none: false
|
84
88
|
requirements:
|
85
|
-
- -
|
89
|
+
- - ">="
|
86
90
|
- !ruby/object:Gem::Version
|
87
91
|
version: '0.7'
|
88
92
|
type: :development
|
89
93
|
prerelease: false
|
90
94
|
version_requirements: !ruby/object:Gem::Requirement
|
91
|
-
none: false
|
92
95
|
requirements:
|
93
|
-
- -
|
96
|
+
- - ">="
|
94
97
|
- !ruby/object:Gem::Version
|
95
98
|
version: '0.7'
|
96
99
|
- !ruby/object:Gem::Dependency
|
97
100
|
name: rake
|
98
101
|
requirement: !ruby/object:Gem::Requirement
|
99
|
-
none: false
|
100
102
|
requirements:
|
101
|
-
- -
|
103
|
+
- - ">="
|
102
104
|
- !ruby/object:Gem::Version
|
103
105
|
version: '0.9'
|
104
106
|
type: :development
|
105
107
|
prerelease: false
|
106
108
|
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
none: false
|
108
109
|
requirements:
|
109
|
-
- -
|
110
|
+
- - ">="
|
110
111
|
- !ruby/object:Gem::Version
|
111
112
|
version: '0.9'
|
112
113
|
description: Pling is a notification framework that supports multiple gateways. Currently
|
@@ -119,8 +120,8 @@ executables: []
|
|
119
120
|
extensions: []
|
120
121
|
extra_rdoc_files: []
|
121
122
|
files:
|
122
|
-
- .gitignore
|
123
|
-
- .travis.yml
|
123
|
+
- ".gitignore"
|
124
|
+
- ".travis.yml"
|
124
125
|
- Gemfile
|
125
126
|
- Guardfile
|
126
127
|
- LICENSE
|
@@ -162,27 +163,26 @@ files:
|
|
162
163
|
- spec/spec_helper.rb
|
163
164
|
homepage: http://flinc.github.com/pling
|
164
165
|
licenses: []
|
166
|
+
metadata: {}
|
165
167
|
post_install_message:
|
166
168
|
rdoc_options: []
|
167
169
|
require_paths:
|
168
170
|
- lib
|
169
171
|
required_ruby_version: !ruby/object:Gem::Requirement
|
170
|
-
none: false
|
171
172
|
requirements:
|
172
|
-
- -
|
173
|
+
- - ">="
|
173
174
|
- !ruby/object:Gem::Version
|
174
175
|
version: '0'
|
175
176
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
176
|
-
none: false
|
177
177
|
requirements:
|
178
|
-
- -
|
178
|
+
- - ">="
|
179
179
|
- !ruby/object:Gem::Version
|
180
180
|
version: '0'
|
181
181
|
requirements: []
|
182
182
|
rubyforge_project:
|
183
|
-
rubygems_version:
|
183
|
+
rubygems_version: 2.4.6
|
184
184
|
signing_key:
|
185
|
-
specification_version:
|
185
|
+
specification_version: 4
|
186
186
|
summary: Pling is a notification framework that supports multiple gateways
|
187
187
|
test_files:
|
188
188
|
- spec/pling/.DS_Store
|