houston 2.2.0 → 2.2.1

Sign up to get free protection for your applications and to get access to all the features.
Binary file
@@ -36,7 +36,6 @@ module Houston
36
36
  return if notifications.empty?
37
37
 
38
38
  notifications.flatten!
39
- error = nil
40
39
 
41
40
  Connection.open(@gateway_uri, @certificate, @passphrase) do |connection|
42
41
  ssl = connection.ssl
@@ -51,32 +50,16 @@ module Houston
51
50
  connection.write(notification.message)
52
51
  notification.mark_as_sent!
53
52
 
54
- break if notifications.count == 1 || notification == notifications.last
55
-
56
53
  read_socket, write_socket = IO.select([ssl], [ssl], [ssl], nil)
57
54
  if (read_socket && read_socket[0])
58
- error = connection.read(6)
59
- break
60
- end
61
- end
62
-
63
- return if notifications.count == 1
64
-
65
- unless error
66
- read_socket, write_socket = IO.select([ssl], nil, [ssl], timeout)
67
- if (read_socket && read_socket[0])
68
- error = connection.read(6)
55
+ if error = connection.read(6)
56
+ command, status, index = error.unpack("ccN")
57
+ notification.apns_error_code = status
58
+ notification.mark_as_unsent!
59
+ end
69
60
  end
70
61
  end
71
62
  end
72
-
73
- if error
74
- command, status, index = error.unpack("ccN")
75
- notifications[index].apns_error_code = status
76
- notifications.slice!(0..index)
77
- notifications.each(&:mark_as_unsent!)
78
- push(*notifications)
79
- end
80
63
  end
81
64
 
82
65
  def unregistered_devices
@@ -17,6 +17,14 @@ module Houston
17
17
  10 => "Shutdown",
18
18
  255 => "Unknown error"
19
19
  }
20
+
21
+ attr_reader :code
22
+
23
+ def initialize(code)
24
+ raise ArgumentError unless CODES.include?(code)
25
+ super(CODES[code])
26
+ @code = code
27
+ end
20
28
  end
21
29
 
22
30
  MAXIMUM_PAYLOAD_SIZE = 2048
@@ -81,7 +89,7 @@ module Houston
81
89
  end
82
90
 
83
91
  def error
84
- APNSError.new(APNSError::CODES[@apns_error_code]) if @apns_error_code.nonzero?
92
+ APNSError.new(@apns_error_code) if @apns_error_code and @apns_error_code.nonzero?
85
93
  end
86
94
 
87
95
  private
@@ -1,3 +1,3 @@
1
1
  module Houston
2
- VERSION = "2.2.0"
2
+ VERSION = "2.2.1"
3
3
  end
@@ -247,4 +247,31 @@ describe Houston::Notification do
247
247
  expect(items.find { |item| item[0] == 5 }).to be_nil
248
248
  end
249
249
  end
250
+
251
+ describe '#error' do
252
+ context 'a status code has been set' do
253
+ it 'returns an error object mapped to that status code' do
254
+ status_code = 1
255
+ notification = Houston::Notification.new(notification_options)
256
+ notification.apns_error_code = status_code
257
+ expect(notification.error.message).to eq(Houston::Notification::APNSError::CODES[status_code])
258
+ end
259
+ end
260
+
261
+ context 'a status code has been set to 0' do
262
+ it 'returns nil' do
263
+ status_code = 0
264
+ notification = Houston::Notification.new(notification_options)
265
+ notification.apns_error_code = status_code
266
+ expect(notification.error).to be_nil
267
+ end
268
+ end
269
+
270
+ context 'a status code has not been set' do
271
+ it 'returns nil' do
272
+ notification = Houston::Notification.new(notification_options)
273
+ expect(notification.error).to be_nil
274
+ end
275
+ end
276
+ end
250
277
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: houston
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mattt Thompson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-09 00:00:00.000000000 Z
11
+ date: 2014-08-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: commander
@@ -155,6 +155,7 @@ files:
155
155
  - ./coverage/index.html
156
156
  - ./Gemfile
157
157
  - ./Gemfile.lock
158
+ - ./houston-2.2.0.gem
158
159
  - ./houston.gemspec
159
160
  - ./lib/houston/client.rb
160
161
  - ./lib/houston/connection.rb