houston 2.2.4 → 2.3.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 +5 -5
- data/Gemfile.lock +22 -22
- data/README.md +35 -14
- data/bin/apn +2 -2
- data/coverage/assets/{0.10.0 → 0.10.2}/application.css +0 -0
- data/coverage/assets/{0.10.0 → 0.10.2}/application.js +0 -0
- data/coverage/assets/{0.10.0 → 0.10.2}/colorbox/border.png +0 -0
- data/coverage/assets/{0.10.0 → 0.10.2}/colorbox/controls.png +0 -0
- data/coverage/assets/{0.10.0 → 0.10.2}/colorbox/loading.gif +0 -0
- data/coverage/assets/{0.10.0 → 0.10.2}/colorbox/loading_background.png +0 -0
- data/coverage/assets/{0.10.0 → 0.10.2}/favicon_green.png +0 -0
- data/coverage/assets/{0.10.0 → 0.10.2}/favicon_red.png +0 -0
- data/coverage/assets/{0.10.0 → 0.10.2}/favicon_yellow.png +0 -0
- data/coverage/assets/{0.10.0 → 0.10.2}/loading.gif +0 -0
- data/coverage/assets/{0.10.0 → 0.10.2}/magnify.png +0 -0
- data/coverage/assets/{0.10.0 → 0.10.2}/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/coverage/assets/{0.10.0 → 0.10.2}/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/coverage/assets/{0.10.0 → 0.10.2}/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/coverage/assets/{0.10.0 → 0.10.2}/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/coverage/assets/{0.10.0 → 0.10.2}/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/coverage/assets/{0.10.0 → 0.10.2}/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/coverage/assets/{0.10.0 → 0.10.2}/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/coverage/assets/{0.10.0 → 0.10.2}/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/coverage/assets/{0.10.0 → 0.10.2}/smoothness/images/ui-icons_222222_256x240.png +0 -0
- data/coverage/assets/{0.10.0 → 0.10.2}/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
- data/coverage/assets/{0.10.0 → 0.10.2}/smoothness/images/ui-icons_454545_256x240.png +0 -0
- data/coverage/assets/{0.10.0 → 0.10.2}/smoothness/images/ui-icons_888888_256x240.png +0 -0
- data/coverage/assets/{0.10.0 → 0.10.2}/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/coverage/index.html +163 -128
- data/lib/houston/client.rb +2 -2
- data/lib/houston/connection.rb +2 -2
- data/lib/houston/notification.rb +6 -1
- data/lib/houston/version.rb +1 -1
- data/spec/notification_spec.rb +13 -5
- metadata +27 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 6c931143a682bc5e6807738eb60a0dade3b0cde0fdcea9704ef0b85d81d53487
|
4
|
+
data.tar.gz: 77de53e8b15c233315716fcbaac6f1d332319bf29139287841178103b76fe143
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ddf28b2482d803ec803f92f93c13de8236276b57f36f524686d5164f83fc4bbb0b79aa05a514acf42b83cc536b3ba0cd44074b0929c682466ee980d13895c009
|
7
|
+
data.tar.gz: 0b3e091551866c5389ad13a98b8904c529b3cdc59a87acc88d39ecd98c3a5a3cf2e48138a201b130ccebc717527d2fef4726b5528ee062f0e4f8cb0a4cbeb547
|
data/Gemfile.lock
CHANGED
@@ -1,38 +1,38 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
houston (2.
|
4
|
+
houston (2.3.0)
|
5
5
|
commander (~> 4.4)
|
6
6
|
json
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: https://rubygems.org/
|
10
10
|
specs:
|
11
|
-
commander (4.4.
|
11
|
+
commander (4.4.6)
|
12
12
|
highline (~> 1.7.2)
|
13
|
-
diff-lcs (1.
|
14
|
-
docile (1.1
|
15
|
-
highline (1.7.
|
16
|
-
json (2.0
|
17
|
-
rake (12.
|
18
|
-
rspec (3.
|
19
|
-
rspec-core (~> 3.
|
20
|
-
rspec-expectations (~> 3.
|
21
|
-
rspec-mocks (~> 3.
|
22
|
-
rspec-core (3.
|
23
|
-
rspec-support (~> 3.
|
24
|
-
rspec-expectations (3.
|
13
|
+
diff-lcs (1.3)
|
14
|
+
docile (1.3.1)
|
15
|
+
highline (1.7.10)
|
16
|
+
json (2.1.0)
|
17
|
+
rake (12.3.1)
|
18
|
+
rspec (3.8.0)
|
19
|
+
rspec-core (~> 3.8.0)
|
20
|
+
rspec-expectations (~> 3.8.0)
|
21
|
+
rspec-mocks (~> 3.8.0)
|
22
|
+
rspec-core (3.8.0)
|
23
|
+
rspec-support (~> 3.8.0)
|
24
|
+
rspec-expectations (3.8.1)
|
25
25
|
diff-lcs (>= 1.2.0, < 2.0)
|
26
|
-
rspec-support (~> 3.
|
27
|
-
rspec-mocks (3.
|
26
|
+
rspec-support (~> 3.8.0)
|
27
|
+
rspec-mocks (3.8.0)
|
28
28
|
diff-lcs (>= 1.2.0, < 2.0)
|
29
|
-
rspec-support (~> 3.
|
30
|
-
rspec-support (3.
|
31
|
-
simplecov (0.
|
32
|
-
docile (~> 1.1
|
29
|
+
rspec-support (~> 3.8.0)
|
30
|
+
rspec-support (3.8.0)
|
31
|
+
simplecov (0.16.1)
|
32
|
+
docile (~> 1.1)
|
33
33
|
json (>= 1.8, < 3)
|
34
34
|
simplecov-html (~> 0.10.0)
|
35
|
-
simplecov-html (0.10.
|
35
|
+
simplecov-html (0.10.2)
|
36
36
|
|
37
37
|
PLATFORMS
|
38
38
|
ruby
|
@@ -44,4 +44,4 @@ DEPENDENCIES
|
|
44
44
|
simplecov
|
45
45
|
|
46
46
|
BUNDLED WITH
|
47
|
-
1.
|
47
|
+
1.16.1
|
data/README.md
CHANGED
@@ -26,22 +26,23 @@ require 'houston'
|
|
26
26
|
# Environment variables are automatically read, or can be overridden by any specified options. You can also
|
27
27
|
# conveniently use `Houston::Client.development` or `Houston::Client.production`.
|
28
28
|
APN = Houston::Client.development
|
29
|
-
APN.certificate = File.read(
|
29
|
+
APN.certificate = File.read('/path/to/apple_push_notification.pem')
|
30
30
|
|
31
31
|
# An example of the token sent back when a device registers for notifications
|
32
|
-
token =
|
32
|
+
token = '<ce8be627 2e43e855 16033e24 b4c28922 0eeda487 9c477160 b2545e95 b68b5969>'
|
33
33
|
|
34
34
|
# Create a notification that alerts a message to the user, plays a sound, and sets the badge on the app
|
35
35
|
notification = Houston::Notification.new(device: token)
|
36
|
-
notification.alert =
|
36
|
+
notification.alert = 'Hello, World!'
|
37
37
|
|
38
38
|
# Notifications can also change the badge count, have a custom sound, have a category identifier, indicate available Newsstand content, or pass along arbitrary data.
|
39
39
|
notification.badge = 57
|
40
|
-
notification.sound =
|
41
|
-
notification.category =
|
40
|
+
notification.sound = 'sosumi.aiff'
|
41
|
+
notification.category = 'INVITE_CATEGORY'
|
42
42
|
notification.content_available = true
|
43
43
|
notification.mutable_content = true
|
44
|
-
notification.custom_data = { foo:
|
44
|
+
notification.custom_data = { foo: 'bar' }
|
45
|
+
notification.url_args = %w[boarding A998]
|
45
46
|
|
46
47
|
# And... sent! That's all it takes.
|
47
48
|
APN.push(notification)
|
@@ -72,10 +73,10 @@ puts "Error: #{notification.error}." if notification.error
|
|
72
73
|
|
73
74
|
### Silent Notifications
|
74
75
|
|
75
|
-
To send a silent push notification, set `sound` to an empty string (`
|
76
|
+
To send a silent push notification, set `sound` to an empty string (`''`):
|
76
77
|
|
77
78
|
```ruby
|
78
|
-
Houston::Notification.new(sound:
|
79
|
+
Houston::Notification.new(sound: '', content_available: true)
|
79
80
|
```
|
80
81
|
|
81
82
|
### Mutable Notifications
|
@@ -91,13 +92,13 @@ Houston::Notification.new(mutable_content: true)
|
|
91
92
|
If you want to manage your own persistent connection to Apple push services, such as for background workers, here's how to do it:
|
92
93
|
|
93
94
|
```ruby
|
94
|
-
certificate = File.read(
|
95
|
-
passphrase =
|
95
|
+
certificate = File.read('/path/to/apple_push_notification.pem')
|
96
|
+
passphrase = '...'
|
96
97
|
connection = Houston::Connection.new(Houston::APPLE_DEVELOPMENT_GATEWAY_URI, certificate, passphrase)
|
97
98
|
connection.open
|
98
99
|
|
99
100
|
notification = Houston::Notification.new(device: token)
|
100
|
-
notification.alert =
|
101
|
+
notification.alert = 'Hello, World!'
|
101
102
|
connection.write(notification.message)
|
102
103
|
|
103
104
|
connection.close
|
@@ -118,9 +119,9 @@ In `lib/tasks/notifications.rake`:
|
|
118
119
|
```ruby
|
119
120
|
namespace :notifications do
|
120
121
|
task device_token_feedback: [:environment] do
|
121
|
-
APN.
|
122
|
+
APN.unregistered_devices.each do |device_hash|
|
122
123
|
# Format: { token: token, timestamp: timestamp }
|
123
|
-
device = Device.find_by(token: device_hash[
|
124
|
+
device = Device.find_by(token: device_hash[:token])
|
124
125
|
next unless device.present?
|
125
126
|
# Remove device token
|
126
127
|
device.update_attribute(:device_token, nil)
|
@@ -141,9 +142,11 @@ Houston also comes with the `apn` binary, which provides a convenient way to tes
|
|
141
142
|
|
142
143
|
## Enabling Push Notifications on iOS
|
143
144
|
|
144
|
-
###
|
145
|
+
### Objective-C
|
145
146
|
|
146
147
|
```objective-c
|
148
|
+
// AppDelegate.m
|
149
|
+
|
147
150
|
- (void)applicationDidFinishLaunching:(UIApplication *)application {
|
148
151
|
// ...
|
149
152
|
|
@@ -165,6 +168,24 @@ didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
|
|
165
168
|
}
|
166
169
|
```
|
167
170
|
|
171
|
+
### Swift
|
172
|
+
```swift
|
173
|
+
// AppDelegate.swift
|
174
|
+
|
175
|
+
func application(_ application: UIApplication, willFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {
|
176
|
+
application.registerForRemoteNotifications()
|
177
|
+
return true
|
178
|
+
}
|
179
|
+
|
180
|
+
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
|
181
|
+
// Register the device token with a webservice
|
182
|
+
}
|
183
|
+
|
184
|
+
func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
|
185
|
+
print("error \(error)")
|
186
|
+
}
|
187
|
+
```
|
188
|
+
|
168
189
|
## Converting Your Certificate
|
169
190
|
|
170
191
|
> These instructions come from the [APN on Rails](https://github.com/PRX/apn_on_rails) project, which is another great option for sending push notifications.
|
data/bin/apn
CHANGED
@@ -43,7 +43,7 @@ command :push do |c|
|
|
43
43
|
say_error "Missing certificate file option (-c /path/to/certificate.pem)" and abort unless @certificate
|
44
44
|
say_error "Could not find certificate file '#{@certificate}'" and abort unless File.exists?(@certificate)
|
45
45
|
|
46
|
-
@passphrase = options.passphrase ? password :
|
46
|
+
@passphrase = options.passphrase ? password : nil
|
47
47
|
|
48
48
|
@alert = options.alert
|
49
49
|
@badge = options.badge.nil? ? nil : options.badge.to_i
|
@@ -138,7 +138,7 @@ command :feedback do |c|
|
|
138
138
|
say_error "Missing certificate file option (-c /path/to/certificate.pem)" and abort unless @certificate
|
139
139
|
say_error "Could not find certificate file '#{@certificate}'" and abort unless File.exists?(@certificate)
|
140
140
|
|
141
|
-
@passphrase = options.passphrase ? password :
|
141
|
+
@passphrase = options.passphrase ? password : nil
|
142
142
|
|
143
143
|
client = (@environment == :production) ? Houston::Client.production : Houston::Client.development
|
144
144
|
client.certificate = File.read(@certificate)
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/coverage/assets/{0.10.0 → 0.10.2}/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/coverage/index.html
CHANGED
@@ -3,37 +3,37 @@
|
|
3
3
|
<head>
|
4
4
|
<title>Code coverage for Houston</title>
|
5
5
|
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
6
|
-
<script src='./assets/0.10.
|
7
|
-
<link href='./assets/0.10.
|
8
|
-
<link rel="shortcut icon" type="image/png" href="./assets/0.10.
|
9
|
-
<link rel="icon" type="image/png" href="./assets/0.10.
|
6
|
+
<script src='./assets/0.10.2/application.js' type='text/javascript'></script>
|
7
|
+
<link href='./assets/0.10.2/application.css' media='screen, projection, print' rel='stylesheet' type='text/css'>
|
8
|
+
<link rel="shortcut icon" type="image/png" href="./assets/0.10.2/favicon_red.png" />
|
9
|
+
<link rel="icon" type="image/png" href="./assets/0.10.2/favicon.png" />
|
10
10
|
</head>
|
11
11
|
|
12
12
|
<body>
|
13
13
|
<div id="loading">
|
14
|
-
<img src="./assets/0.10.
|
14
|
+
<img src="./assets/0.10.2/loading.gif" alt="loading"/>
|
15
15
|
</div>
|
16
16
|
<div id="wrapper" style="display:none;">
|
17
|
-
<div class="timestamp">Generated <abbr class="timeago" title="
|
17
|
+
<div class="timestamp">Generated <abbr class="timeago" title="2018-09-08T11:29:01+03:00">2018-09-08T11:29:01+03:00</abbr></div>
|
18
18
|
<ul class="group_tabs"></ul>
|
19
19
|
|
20
20
|
<div id="content">
|
21
21
|
<div class="file_list_container" id="AllFiles">
|
22
22
|
<h2>
|
23
23
|
<span class="group_name">All Files</span>
|
24
|
-
(<span class="covered_percent"><span class="red">
|
24
|
+
(<span class="covered_percent"><span class="red">75.44%</span></span>
|
25
25
|
covered at
|
26
26
|
<span class="covered_strength">
|
27
27
|
<span class="green">
|
28
|
-
6.
|
28
|
+
6.96
|
29
29
|
</span>
|
30
30
|
</span> hits/line)
|
31
31
|
</h2>
|
32
32
|
<a name="AllFiles"></a>
|
33
33
|
<div>
|
34
34
|
<b>5</b> files in total.
|
35
|
-
<b>
|
36
|
-
<span class="green"><b>
|
35
|
+
<b>171</b> relevant lines.
|
36
|
+
<span class="green"><b>129</b> lines covered</span> and
|
37
37
|
<span class="red"><b>42</b> lines missed </span>
|
38
38
|
</div>
|
39
39
|
<table class="file_list">
|
@@ -51,7 +51,7 @@
|
|
51
51
|
<tbody>
|
52
52
|
|
53
53
|
<tr>
|
54
|
-
<td class="strong"><a href="#
|
54
|
+
<td class="strong"><a href="#fe3fdb648409998987089f779b06acf72d5f6cb8" class="src_link" title="lib/houston.rb">lib/houston.rb</a></td>
|
55
55
|
<td class="green strong">100.0 %</td>
|
56
56
|
<td>4</td>
|
57
57
|
<td>4</td>
|
@@ -61,7 +61,7 @@
|
|
61
61
|
</tr>
|
62
62
|
|
63
63
|
<tr>
|
64
|
-
<td class="strong"><a href="#
|
64
|
+
<td class="strong"><a href="#3dd251fe8a9cb7c51d78fc140a13632a62324aa2" class="src_link" title="lib/houston/client.rb">lib/houston/client.rb</a></td>
|
65
65
|
<td class="red strong">68.97 %</td>
|
66
66
|
<td>92</td>
|
67
67
|
<td>58</td>
|
@@ -71,7 +71,7 @@
|
|
71
71
|
</tr>
|
72
72
|
|
73
73
|
<tr>
|
74
|
-
<td class="strong"><a href="#
|
74
|
+
<td class="strong"><a href="#2c394c3e520262a03cc8c405bdb70d7d8d4c5bc6" class="src_link" title="lib/houston/connection.rb">lib/houston/connection.rb</a></td>
|
75
75
|
<td class="red strong">42.5 %</td>
|
76
76
|
<td>65</td>
|
77
77
|
<td>40</td>
|
@@ -81,17 +81,17 @@
|
|
81
81
|
</tr>
|
82
82
|
|
83
83
|
<tr>
|
84
|
-
<td class="strong"><a href="#
|
85
|
-
<td class="green strong">98.
|
86
|
-
<td>
|
87
|
-
<td>
|
88
|
-
<td>
|
84
|
+
<td class="strong"><a href="#ba9bba418e382d61a9e6d0ce03566e72e9479a30" class="src_link" title="lib/houston/notification.rb">lib/houston/notification.rb</a></td>
|
85
|
+
<td class="green strong">98.51 %</td>
|
86
|
+
<td>126</td>
|
87
|
+
<td>67</td>
|
88
|
+
<td>66</td>
|
89
89
|
<td>1</td>
|
90
|
-
<td>
|
90
|
+
<td>15.0</td>
|
91
91
|
</tr>
|
92
92
|
|
93
93
|
<tr>
|
94
|
-
<td class="strong"><a href="#
|
94
|
+
<td class="strong"><a href="#8b87415b3bd8a7824eada4b0600da3fd57094386" class="src_link" title="lib/houston/version.rb">lib/houston/version.rb</a></td>
|
95
95
|
<td class="green strong">100.0 %</td>
|
96
96
|
<td>3</td>
|
97
97
|
<td>2</td>
|
@@ -109,14 +109,14 @@
|
|
109
109
|
</div>
|
110
110
|
|
111
111
|
<div id="footer">
|
112
|
-
Generated by <a href="http://github.com/colszowka/simplecov">simplecov</a> v0.
|
113
|
-
and simplecov-html v0.10.
|
112
|
+
Generated by <a href="http://github.com/colszowka/simplecov">simplecov</a> v0.16.1
|
113
|
+
and simplecov-html v0.10.2<br/>
|
114
114
|
using RSpec
|
115
115
|
</div>
|
116
116
|
|
117
117
|
<div class="source_files">
|
118
118
|
|
119
|
-
<div class="source_table" id="
|
119
|
+
<div class="source_table" id="fe3fdb648409998987089f779b06acf72d5f6cb8">
|
120
120
|
<div class="header">
|
121
121
|
<h3>lib/houston.rb</h3>
|
122
122
|
<h4><span class="green">100.0 %</span> covered</h4>
|
@@ -157,8 +157,9 @@
|
|
157
157
|
</ol>
|
158
158
|
</pre>
|
159
159
|
</div>
|
160
|
+
|
160
161
|
|
161
|
-
<div class="source_table" id="
|
162
|
+
<div class="source_table" id="3dd251fe8a9cb7c51d78fc140a13632a62324aa2">
|
162
163
|
<div class="header">
|
163
164
|
<h3>lib/houston/client.rb</h3>
|
164
165
|
<h4><span class="red">68.97 %</span> covered</h4>
|
@@ -487,7 +488,7 @@
|
|
487
488
|
<li class="missed" data-hits="0" data-linenumber="53">
|
488
489
|
|
489
490
|
|
490
|
-
<code class="ruby"> read_socket,
|
491
|
+
<code class="ruby"> read_socket, _write_socket = IO.select([ssl], [ssl], [ssl], nil)</code>
|
491
492
|
</li>
|
492
493
|
|
493
494
|
<li class="missed" data-hits="0" data-linenumber="54">
|
@@ -505,7 +506,7 @@
|
|
505
506
|
<li class="missed" data-hits="0" data-linenumber="56">
|
506
507
|
|
507
508
|
|
508
|
-
<code class="ruby">
|
509
|
+
<code class="ruby"> _command, status, index = error.unpack('ccN')</code>
|
509
510
|
</li>
|
510
511
|
|
511
512
|
<li class="missed" data-hits="0" data-linenumber="57">
|
@@ -727,8 +728,9 @@
|
|
727
728
|
</ol>
|
728
729
|
</pre>
|
729
730
|
</div>
|
731
|
+
|
730
732
|
|
731
|
-
<div class="source_table" id="
|
733
|
+
<div class="source_table" id="2c394c3e520262a03cc8c405bdb70d7d8d4c5bc6">
|
732
734
|
<div class="header">
|
733
735
|
<h3>lib/houston/connection.rb</h3>
|
734
736
|
<h4><span class="red">42.5 %</span> covered</h4>
|
@@ -913,13 +915,13 @@
|
|
913
915
|
<li class="missed" data-hits="0" data-linenumber="29">
|
914
916
|
|
915
917
|
|
916
|
-
<code class="ruby"> @certificate = certificate</code>
|
918
|
+
<code class="ruby"> @certificate = certificate.to_s</code>
|
917
919
|
</li>
|
918
920
|
|
919
921
|
<li class="missed" data-hits="0" data-linenumber="30">
|
920
922
|
|
921
923
|
|
922
|
-
<code class="ruby"> @passphrase = passphrase</code>
|
924
|
+
<code class="ruby"> @passphrase = passphrase.to_s unless passphrase.nil? </code>
|
923
925
|
</li>
|
924
926
|
|
925
927
|
<li class="never" data-hits="" data-linenumber="31">
|
@@ -1135,14 +1137,15 @@
|
|
1135
1137
|
</ol>
|
1136
1138
|
</pre>
|
1137
1139
|
</div>
|
1140
|
+
|
1138
1141
|
|
1139
|
-
<div class="source_table" id="
|
1142
|
+
<div class="source_table" id="ba9bba418e382d61a9e6d0ce03566e72e9479a30">
|
1140
1143
|
<div class="header">
|
1141
1144
|
<h3>lib/houston/notification.rb</h3>
|
1142
|
-
<h4><span class="green">98.
|
1145
|
+
<h4><span class="green">98.51 %</span> covered</h4>
|
1143
1146
|
<div>
|
1144
|
-
<b>
|
1145
|
-
<span class="green"><b>
|
1147
|
+
<b>67</b> relevant lines.
|
1148
|
+
<span class="green"><b>66</b> lines covered</span> and
|
1146
1149
|
<span class="red"><b>1</b> lines missed.</span>
|
1147
1150
|
</div>
|
1148
1151
|
</div>
|
@@ -1345,7 +1348,7 @@
|
|
1345
1348
|
<li class="never" data-hits="" data-linenumber="33">
|
1346
1349
|
|
1347
1350
|
|
1348
|
-
<code class="ruby"> :custom_data, :id, :expiry, :priority</code>
|
1351
|
+
<code class="ruby"> :custom_data, :id, :expiry, :priority, :url_args</code>
|
1349
1352
|
</li>
|
1350
1353
|
|
1351
1354
|
<li class="covered" data-hits="1" data-linenumber="34">
|
@@ -1390,487 +1393,517 @@
|
|
1390
1393
|
<code class="ruby"> def initialize(options = {})</code>
|
1391
1394
|
</li>
|
1392
1395
|
|
1393
|
-
<li class="covered" data-hits="
|
1394
|
-
<span class="hits">
|
1396
|
+
<li class="covered" data-hits="40" data-linenumber="41">
|
1397
|
+
<span class="hits">40</span>
|
1395
1398
|
|
1396
1399
|
<code class="ruby"> @token = options.delete(:token) || options.delete(:device)</code>
|
1397
1400
|
</li>
|
1398
1401
|
|
1399
|
-
<li class="covered" data-hits="
|
1400
|
-
<span class="hits">
|
1402
|
+
<li class="covered" data-hits="40" data-linenumber="42">
|
1403
|
+
<span class="hits">40</span>
|
1401
1404
|
|
1402
1405
|
<code class="ruby"> @alert = options.delete(:alert)</code>
|
1403
1406
|
</li>
|
1404
1407
|
|
1405
|
-
<li class="covered" data-hits="
|
1406
|
-
<span class="hits">
|
1408
|
+
<li class="covered" data-hits="40" data-linenumber="43">
|
1409
|
+
<span class="hits">40</span>
|
1407
1410
|
|
1408
1411
|
<code class="ruby"> @badge = options.delete(:badge)</code>
|
1409
1412
|
</li>
|
1410
1413
|
|
1411
|
-
<li class="covered" data-hits="
|
1412
|
-
<span class="hits">
|
1414
|
+
<li class="covered" data-hits="40" data-linenumber="44">
|
1415
|
+
<span class="hits">40</span>
|
1413
1416
|
|
1414
1417
|
<code class="ruby"> @sound = options.delete(:sound)</code>
|
1415
1418
|
</li>
|
1416
1419
|
|
1417
|
-
<li class="covered" data-hits="
|
1418
|
-
<span class="hits">
|
1420
|
+
<li class="covered" data-hits="40" data-linenumber="45">
|
1421
|
+
<span class="hits">40</span>
|
1419
1422
|
|
1420
1423
|
<code class="ruby"> @category = options.delete(:category)</code>
|
1421
1424
|
</li>
|
1422
1425
|
|
1423
|
-
<li class="covered" data-hits="
|
1424
|
-
<span class="hits">
|
1426
|
+
<li class="covered" data-hits="40" data-linenumber="46">
|
1427
|
+
<span class="hits">40</span>
|
1425
1428
|
|
1426
1429
|
<code class="ruby"> @expiry = options.delete(:expiry)</code>
|
1427
1430
|
</li>
|
1428
1431
|
|
1429
|
-
<li class="covered" data-hits="
|
1430
|
-
<span class="hits">
|
1432
|
+
<li class="covered" data-hits="40" data-linenumber="47">
|
1433
|
+
<span class="hits">40</span>
|
1431
1434
|
|
1432
1435
|
<code class="ruby"> @id = options.delete(:id)</code>
|
1433
1436
|
</li>
|
1434
1437
|
|
1435
|
-
<li class="covered" data-hits="
|
1436
|
-
<span class="hits">
|
1438
|
+
<li class="covered" data-hits="40" data-linenumber="48">
|
1439
|
+
<span class="hits">40</span>
|
1437
1440
|
|
1438
1441
|
<code class="ruby"> @priority = options.delete(:priority)</code>
|
1439
1442
|
</li>
|
1440
1443
|
|
1441
|
-
<li class="covered" data-hits="
|
1442
|
-
<span class="hits">
|
1444
|
+
<li class="covered" data-hits="40" data-linenumber="49">
|
1445
|
+
<span class="hits">40</span>
|
1443
1446
|
|
1444
1447
|
<code class="ruby"> @content_available = options.delete(:content_available)</code>
|
1445
1448
|
</li>
|
1446
1449
|
|
1447
|
-
<li class="covered" data-hits="
|
1448
|
-
<span class="hits">
|
1450
|
+
<li class="covered" data-hits="40" data-linenumber="50">
|
1451
|
+
<span class="hits">40</span>
|
1449
1452
|
|
1450
1453
|
<code class="ruby"> @mutable_content = options.delete(:mutable_content)</code>
|
1451
1454
|
</li>
|
1452
1455
|
|
1453
|
-
<li class="
|
1456
|
+
<li class="covered" data-hits="40" data-linenumber="51">
|
1457
|
+
<span class="hits">40</span>
|
1458
|
+
|
1459
|
+
<code class="ruby"> @url_args = options.delete(:url_args)</code>
|
1460
|
+
</li>
|
1461
|
+
|
1462
|
+
<li class="never" data-hits="" data-linenumber="52">
|
1454
1463
|
|
1455
1464
|
|
1456
1465
|
<code class="ruby"></code>
|
1457
1466
|
</li>
|
1458
1467
|
|
1459
|
-
<li class="covered" data-hits="
|
1460
|
-
<span class="hits">
|
1468
|
+
<li class="covered" data-hits="40" data-linenumber="53">
|
1469
|
+
<span class="hits">40</span>
|
1461
1470
|
|
1462
1471
|
<code class="ruby"> @custom_data = options</code>
|
1463
1472
|
</li>
|
1464
1473
|
|
1465
|
-
<li class="never" data-hits="" data-linenumber="
|
1474
|
+
<li class="never" data-hits="" data-linenumber="54">
|
1475
|
+
|
1476
|
+
|
1477
|
+
<code class="ruby"></code>
|
1478
|
+
</li>
|
1479
|
+
|
1480
|
+
<li class="covered" data-hits="40" data-linenumber="55">
|
1481
|
+
<span class="hits">40</span>
|
1482
|
+
|
1483
|
+
<code class="ruby"> @sent_at = nil</code>
|
1484
|
+
</li>
|
1485
|
+
|
1486
|
+
<li class="covered" data-hits="40" data-linenumber="56">
|
1487
|
+
<span class="hits">40</span>
|
1488
|
+
|
1489
|
+
<code class="ruby"> @apns_error_code = nil</code>
|
1490
|
+
</li>
|
1491
|
+
|
1492
|
+
<li class="never" data-hits="" data-linenumber="57">
|
1466
1493
|
|
1467
1494
|
|
1468
1495
|
<code class="ruby"> end</code>
|
1469
1496
|
</li>
|
1470
1497
|
|
1471
|
-
<li class="never" data-hits="" data-linenumber="
|
1498
|
+
<li class="never" data-hits="" data-linenumber="58">
|
1472
1499
|
|
1473
1500
|
|
1474
1501
|
<code class="ruby"></code>
|
1475
1502
|
</li>
|
1476
1503
|
|
1477
|
-
<li class="covered" data-hits="1" data-linenumber="
|
1504
|
+
<li class="covered" data-hits="1" data-linenumber="59">
|
1478
1505
|
<span class="hits">1</span>
|
1479
1506
|
|
1480
1507
|
<code class="ruby"> def payload</code>
|
1481
1508
|
</li>
|
1482
1509
|
|
1483
|
-
<li class="covered" data-hits="61" data-linenumber="
|
1510
|
+
<li class="covered" data-hits="61" data-linenumber="60">
|
1484
1511
|
<span class="hits">61</span>
|
1485
1512
|
|
1486
1513
|
<code class="ruby"> json = {}.merge(@custom_data || {}).inject({}) { |h, (k, v)| h[k.to_s] = v; h }</code>
|
1487
1514
|
</li>
|
1488
1515
|
|
1489
|
-
<li class="never" data-hits="" data-linenumber="
|
1516
|
+
<li class="never" data-hits="" data-linenumber="61">
|
1490
1517
|
|
1491
1518
|
|
1492
1519
|
<code class="ruby"></code>
|
1493
1520
|
</li>
|
1494
1521
|
|
1495
|
-
<li class="covered" data-hits="25" data-linenumber="
|
1522
|
+
<li class="covered" data-hits="25" data-linenumber="62">
|
1496
1523
|
<span class="hits">25</span>
|
1497
1524
|
|
1498
1525
|
<code class="ruby"> json['aps'] ||= {}</code>
|
1499
1526
|
</li>
|
1500
1527
|
|
1501
|
-
<li class="covered" data-hits="25" data-linenumber="
|
1528
|
+
<li class="covered" data-hits="25" data-linenumber="63">
|
1502
1529
|
<span class="hits">25</span>
|
1503
1530
|
|
1504
1531
|
<code class="ruby"> json['aps']['alert'] = @alert if @alert</code>
|
1505
1532
|
</li>
|
1506
1533
|
|
1507
|
-
<li class="covered" data-hits="25" data-linenumber="
|
1534
|
+
<li class="covered" data-hits="25" data-linenumber="64">
|
1508
1535
|
<span class="hits">25</span>
|
1509
1536
|
|
1510
1537
|
<code class="ruby"> json['aps']['badge'] = @badge.to_i rescue 0 if @badge</code>
|
1511
1538
|
</li>
|
1512
1539
|
|
1513
|
-
<li class="covered" data-hits="25" data-linenumber="
|
1540
|
+
<li class="covered" data-hits="25" data-linenumber="65">
|
1514
1541
|
<span class="hits">25</span>
|
1515
1542
|
|
1516
1543
|
<code class="ruby"> json['aps']['sound'] = @sound if @sound</code>
|
1517
1544
|
</li>
|
1518
1545
|
|
1519
|
-
<li class="covered" data-hits="25" data-linenumber="
|
1546
|
+
<li class="covered" data-hits="25" data-linenumber="66">
|
1520
1547
|
<span class="hits">25</span>
|
1521
1548
|
|
1522
1549
|
<code class="ruby"> json['aps']['category'] = @category if @category</code>
|
1523
1550
|
</li>
|
1524
1551
|
|
1525
|
-
<li class="covered" data-hits="25" data-linenumber="
|
1552
|
+
<li class="covered" data-hits="25" data-linenumber="67">
|
1526
1553
|
<span class="hits">25</span>
|
1527
1554
|
|
1528
1555
|
<code class="ruby"> json['aps']['content-available'] = 1 if @content_available</code>
|
1529
1556
|
</li>
|
1530
1557
|
|
1531
|
-
<li class="covered" data-hits="25" data-linenumber="
|
1558
|
+
<li class="covered" data-hits="25" data-linenumber="68">
|
1532
1559
|
<span class="hits">25</span>
|
1533
1560
|
|
1534
1561
|
<code class="ruby"> json['aps']['mutable-content'] = 1 if @mutable_content</code>
|
1535
1562
|
</li>
|
1536
1563
|
|
1537
|
-
<li class="
|
1564
|
+
<li class="covered" data-hits="25" data-linenumber="69">
|
1565
|
+
<span class="hits">25</span>
|
1566
|
+
|
1567
|
+
<code class="ruby"> json['aps']['url-args'] = @url_args if @url_args</code>
|
1568
|
+
</li>
|
1569
|
+
|
1570
|
+
<li class="never" data-hits="" data-linenumber="70">
|
1538
1571
|
|
1539
1572
|
|
1540
1573
|
<code class="ruby"></code>
|
1541
1574
|
</li>
|
1542
1575
|
|
1543
|
-
<li class="covered" data-hits="25" data-linenumber="
|
1576
|
+
<li class="covered" data-hits="25" data-linenumber="71">
|
1544
1577
|
<span class="hits">25</span>
|
1545
1578
|
|
1546
1579
|
<code class="ruby"> json</code>
|
1547
1580
|
</li>
|
1548
1581
|
|
1549
|
-
<li class="never" data-hits="" data-linenumber="
|
1582
|
+
<li class="never" data-hits="" data-linenumber="72">
|
1550
1583
|
|
1551
1584
|
|
1552
1585
|
<code class="ruby"> end</code>
|
1553
1586
|
</li>
|
1554
1587
|
|
1555
|
-
<li class="never" data-hits="" data-linenumber="
|
1588
|
+
<li class="never" data-hits="" data-linenumber="73">
|
1556
1589
|
|
1557
1590
|
|
1558
1591
|
<code class="ruby"></code>
|
1559
1592
|
</li>
|
1560
1593
|
|
1561
|
-
<li class="covered" data-hits="1" data-linenumber="
|
1594
|
+
<li class="covered" data-hits="1" data-linenumber="74">
|
1562
1595
|
<span class="hits">1</span>
|
1563
1596
|
|
1564
1597
|
<code class="ruby"> def message</code>
|
1565
1598
|
</li>
|
1566
1599
|
|
1567
|
-
<li class="covered" data-hits="15" data-linenumber="
|
1600
|
+
<li class="covered" data-hits="15" data-linenumber="75">
|
1568
1601
|
<span class="hits">15</span>
|
1569
1602
|
|
1570
1603
|
<code class="ruby"> data = [device_token_item,</code>
|
1571
1604
|
</li>
|
1572
1605
|
|
1573
|
-
<li class="never" data-hits="" data-linenumber="
|
1606
|
+
<li class="never" data-hits="" data-linenumber="76">
|
1574
1607
|
|
1575
1608
|
|
1576
1609
|
<code class="ruby"> payload_item,</code>
|
1577
1610
|
</li>
|
1578
1611
|
|
1579
|
-
<li class="never" data-hits="" data-linenumber="
|
1612
|
+
<li class="never" data-hits="" data-linenumber="77">
|
1580
1613
|
|
1581
1614
|
|
1582
1615
|
<code class="ruby"> identifier_item,</code>
|
1583
1616
|
</li>
|
1584
1617
|
|
1585
|
-
<li class="never" data-hits="" data-linenumber="
|
1618
|
+
<li class="never" data-hits="" data-linenumber="78">
|
1586
1619
|
|
1587
1620
|
|
1588
1621
|
<code class="ruby"> expiration_item,</code>
|
1589
1622
|
</li>
|
1590
1623
|
|
1591
|
-
<li class="never" data-hits="" data-linenumber="
|
1624
|
+
<li class="never" data-hits="" data-linenumber="79">
|
1592
1625
|
|
1593
1626
|
|
1594
1627
|
<code class="ruby"> priority_item].compact.join</code>
|
1595
1628
|
</li>
|
1596
1629
|
|
1597
|
-
<li class="covered" data-hits="15" data-linenumber="
|
1630
|
+
<li class="covered" data-hits="15" data-linenumber="80">
|
1598
1631
|
<span class="hits">15</span>
|
1599
1632
|
|
1600
1633
|
<code class="ruby"> [2, data.bytes.count, data].pack('cNa*')</code>
|
1601
1634
|
</li>
|
1602
1635
|
|
1603
|
-
<li class="never" data-hits="" data-linenumber="
|
1636
|
+
<li class="never" data-hits="" data-linenumber="81">
|
1604
1637
|
|
1605
1638
|
|
1606
1639
|
<code class="ruby"> end</code>
|
1607
1640
|
</li>
|
1608
1641
|
|
1609
|
-
<li class="never" data-hits="" data-linenumber="
|
1642
|
+
<li class="never" data-hits="" data-linenumber="82">
|
1610
1643
|
|
1611
1644
|
|
1612
1645
|
<code class="ruby"></code>
|
1613
1646
|
</li>
|
1614
1647
|
|
1615
|
-
<li class="covered" data-hits="1" data-linenumber="
|
1648
|
+
<li class="covered" data-hits="1" data-linenumber="83">
|
1616
1649
|
<span class="hits">1</span>
|
1617
1650
|
|
1618
1651
|
<code class="ruby"> def mark_as_sent!</code>
|
1619
1652
|
</li>
|
1620
1653
|
|
1621
|
-
<li class="covered" data-hits="2" data-linenumber="
|
1654
|
+
<li class="covered" data-hits="2" data-linenumber="84">
|
1622
1655
|
<span class="hits">2</span>
|
1623
1656
|
|
1624
1657
|
<code class="ruby"> @sent_at = Time.now</code>
|
1625
1658
|
</li>
|
1626
1659
|
|
1627
|
-
<li class="never" data-hits="" data-linenumber="
|
1660
|
+
<li class="never" data-hits="" data-linenumber="85">
|
1628
1661
|
|
1629
1662
|
|
1630
1663
|
<code class="ruby"> end</code>
|
1631
1664
|
</li>
|
1632
1665
|
|
1633
|
-
<li class="never" data-hits="" data-linenumber="
|
1666
|
+
<li class="never" data-hits="" data-linenumber="86">
|
1634
1667
|
|
1635
1668
|
|
1636
1669
|
<code class="ruby"></code>
|
1637
1670
|
</li>
|
1638
1671
|
|
1639
|
-
<li class="covered" data-hits="1" data-linenumber="
|
1672
|
+
<li class="covered" data-hits="1" data-linenumber="87">
|
1640
1673
|
<span class="hits">1</span>
|
1641
1674
|
|
1642
1675
|
<code class="ruby"> def mark_as_unsent!</code>
|
1643
1676
|
</li>
|
1644
1677
|
|
1645
|
-
<li class="covered" data-hits="1" data-linenumber="
|
1678
|
+
<li class="covered" data-hits="1" data-linenumber="88">
|
1646
1679
|
<span class="hits">1</span>
|
1647
1680
|
|
1648
1681
|
<code class="ruby"> @sent_at = nil</code>
|
1649
1682
|
</li>
|
1650
1683
|
|
1651
|
-
<li class="never" data-hits="" data-linenumber="
|
1684
|
+
<li class="never" data-hits="" data-linenumber="89">
|
1652
1685
|
|
1653
1686
|
|
1654
1687
|
<code class="ruby"> end</code>
|
1655
1688
|
</li>
|
1656
1689
|
|
1657
|
-
<li class="never" data-hits="" data-linenumber="
|
1690
|
+
<li class="never" data-hits="" data-linenumber="90">
|
1658
1691
|
|
1659
1692
|
|
1660
1693
|
<code class="ruby"></code>
|
1661
1694
|
</li>
|
1662
1695
|
|
1663
|
-
<li class="covered" data-hits="1" data-linenumber="
|
1696
|
+
<li class="covered" data-hits="1" data-linenumber="91">
|
1664
1697
|
<span class="hits">1</span>
|
1665
1698
|
|
1666
1699
|
<code class="ruby"> def sent?</code>
|
1667
1700
|
</li>
|
1668
1701
|
|
1669
|
-
<li class="covered" data-hits="3" data-linenumber="
|
1702
|
+
<li class="covered" data-hits="3" data-linenumber="92">
|
1670
1703
|
<span class="hits">3</span>
|
1671
1704
|
|
1672
1705
|
<code class="ruby"> !!@sent_at</code>
|
1673
1706
|
</li>
|
1674
1707
|
|
1675
|
-
<li class="never" data-hits="" data-linenumber="
|
1708
|
+
<li class="never" data-hits="" data-linenumber="93">
|
1676
1709
|
|
1677
1710
|
|
1678
1711
|
<code class="ruby"> end</code>
|
1679
1712
|
</li>
|
1680
1713
|
|
1681
|
-
<li class="never" data-hits="" data-linenumber="
|
1714
|
+
<li class="never" data-hits="" data-linenumber="94">
|
1682
1715
|
|
1683
1716
|
|
1684
1717
|
<code class="ruby"></code>
|
1685
1718
|
</li>
|
1686
1719
|
|
1687
|
-
<li class="covered" data-hits="1" data-linenumber="
|
1720
|
+
<li class="covered" data-hits="1" data-linenumber="95">
|
1688
1721
|
<span class="hits">1</span>
|
1689
1722
|
|
1690
1723
|
<code class="ruby"> def valid?</code>
|
1691
1724
|
</li>
|
1692
1725
|
|
1693
|
-
<li class="missed" data-hits="0" data-linenumber="
|
1726
|
+
<li class="missed" data-hits="0" data-linenumber="96">
|
1694
1727
|
|
1695
1728
|
|
1696
1729
|
<code class="ruby"> payload.to_json.bytesize <= MAXIMUM_PAYLOAD_SIZE</code>
|
1697
1730
|
</li>
|
1698
1731
|
|
1699
|
-
<li class="never" data-hits="" data-linenumber="
|
1732
|
+
<li class="never" data-hits="" data-linenumber="97">
|
1700
1733
|
|
1701
1734
|
|
1702
1735
|
<code class="ruby"> end</code>
|
1703
1736
|
</li>
|
1704
1737
|
|
1705
|
-
<li class="never" data-hits="" data-linenumber="
|
1738
|
+
<li class="never" data-hits="" data-linenumber="98">
|
1706
1739
|
|
1707
1740
|
|
1708
1741
|
<code class="ruby"></code>
|
1709
1742
|
</li>
|
1710
1743
|
|
1711
|
-
<li class="covered" data-hits="1" data-linenumber="
|
1744
|
+
<li class="covered" data-hits="1" data-linenumber="99">
|
1712
1745
|
<span class="hits">1</span>
|
1713
1746
|
|
1714
1747
|
<code class="ruby"> def error</code>
|
1715
1748
|
</li>
|
1716
1749
|
|
1717
|
-
<li class="covered" data-hits="3" data-linenumber="
|
1750
|
+
<li class="covered" data-hits="3" data-linenumber="100">
|
1718
1751
|
<span class="hits">3</span>
|
1719
1752
|
|
1720
1753
|
<code class="ruby"> APNSError.new(@apns_error_code) if @apns_error_code && @apns_error_code.nonzero?</code>
|
1721
1754
|
</li>
|
1722
1755
|
|
1723
|
-
<li class="never" data-hits="" data-linenumber="
|
1756
|
+
<li class="never" data-hits="" data-linenumber="101">
|
1724
1757
|
|
1725
1758
|
|
1726
1759
|
<code class="ruby"> end</code>
|
1727
1760
|
</li>
|
1728
1761
|
|
1729
|
-
<li class="never" data-hits="" data-linenumber="
|
1762
|
+
<li class="never" data-hits="" data-linenumber="102">
|
1730
1763
|
|
1731
1764
|
|
1732
1765
|
<code class="ruby"></code>
|
1733
1766
|
</li>
|
1734
1767
|
|
1735
|
-
<li class="covered" data-hits="1" data-linenumber="
|
1768
|
+
<li class="covered" data-hits="1" data-linenumber="103">
|
1736
1769
|
<span class="hits">1</span>
|
1737
1770
|
|
1738
1771
|
<code class="ruby"> private</code>
|
1739
1772
|
</li>
|
1740
1773
|
|
1741
|
-
<li class="never" data-hits="" data-linenumber="
|
1774
|
+
<li class="never" data-hits="" data-linenumber="104">
|
1742
1775
|
|
1743
1776
|
|
1744
1777
|
<code class="ruby"></code>
|
1745
1778
|
</li>
|
1746
1779
|
|
1747
|
-
<li class="covered" data-hits="1" data-linenumber="
|
1780
|
+
<li class="covered" data-hits="1" data-linenumber="105">
|
1748
1781
|
<span class="hits">1</span>
|
1749
1782
|
|
1750
1783
|
<code class="ruby"> def device_token_item</code>
|
1751
1784
|
</li>
|
1752
1785
|
|
1753
|
-
<li class="covered" data-hits="15" data-linenumber="
|
1786
|
+
<li class="covered" data-hits="15" data-linenumber="106">
|
1754
1787
|
<span class="hits">15</span>
|
1755
1788
|
|
1756
1789
|
<code class="ruby"> [1, 32, @token.gsub(/[<\s>]/, '')].pack('cnH64')</code>
|
1757
1790
|
</li>
|
1758
1791
|
|
1759
|
-
<li class="never" data-hits="" data-linenumber="
|
1792
|
+
<li class="never" data-hits="" data-linenumber="107">
|
1760
1793
|
|
1761
1794
|
|
1762
1795
|
<code class="ruby"> end</code>
|
1763
1796
|
</li>
|
1764
1797
|
|
1765
|
-
<li class="never" data-hits="" data-linenumber="
|
1798
|
+
<li class="never" data-hits="" data-linenumber="108">
|
1766
1799
|
|
1767
1800
|
|
1768
1801
|
<code class="ruby"></code>
|
1769
1802
|
</li>
|
1770
1803
|
|
1771
|
-
<li class="covered" data-hits="1" data-linenumber="
|
1804
|
+
<li class="covered" data-hits="1" data-linenumber="109">
|
1772
1805
|
<span class="hits">1</span>
|
1773
1806
|
|
1774
1807
|
<code class="ruby"> def payload_item</code>
|
1775
1808
|
</li>
|
1776
1809
|
|
1777
|
-
<li class="covered" data-hits="15" data-linenumber="
|
1810
|
+
<li class="covered" data-hits="15" data-linenumber="110">
|
1778
1811
|
<span class="hits">15</span>
|
1779
1812
|
|
1780
1813
|
<code class="ruby"> json = payload.to_json</code>
|
1781
1814
|
</li>
|
1782
1815
|
|
1783
|
-
<li class="covered" data-hits="15" data-linenumber="
|
1816
|
+
<li class="covered" data-hits="15" data-linenumber="111">
|
1784
1817
|
<span class="hits">15</span>
|
1785
1818
|
|
1786
1819
|
<code class="ruby"> [2, json.bytes.count, json].pack('cna*')</code>
|
1787
1820
|
</li>
|
1788
1821
|
|
1789
|
-
<li class="never" data-hits="" data-linenumber="
|
1822
|
+
<li class="never" data-hits="" data-linenumber="112">
|
1790
1823
|
|
1791
1824
|
|
1792
1825
|
<code class="ruby"> end</code>
|
1793
1826
|
</li>
|
1794
1827
|
|
1795
|
-
<li class="never" data-hits="" data-linenumber="
|
1828
|
+
<li class="never" data-hits="" data-linenumber="113">
|
1796
1829
|
|
1797
1830
|
|
1798
1831
|
<code class="ruby"></code>
|
1799
1832
|
</li>
|
1800
1833
|
|
1801
|
-
<li class="covered" data-hits="1" data-linenumber="
|
1834
|
+
<li class="covered" data-hits="1" data-linenumber="114">
|
1802
1835
|
<span class="hits">1</span>
|
1803
1836
|
|
1804
1837
|
<code class="ruby"> def identifier_item</code>
|
1805
1838
|
</li>
|
1806
1839
|
|
1807
|
-
<li class="covered" data-hits="15" data-linenumber="
|
1840
|
+
<li class="covered" data-hits="15" data-linenumber="115">
|
1808
1841
|
<span class="hits">15</span>
|
1809
1842
|
|
1810
1843
|
<code class="ruby"> [3, 4, @id].pack('cnN') unless @id.nil?</code>
|
1811
1844
|
</li>
|
1812
1845
|
|
1813
|
-
<li class="never" data-hits="" data-linenumber="
|
1846
|
+
<li class="never" data-hits="" data-linenumber="116">
|
1814
1847
|
|
1815
1848
|
|
1816
1849
|
<code class="ruby"> end</code>
|
1817
1850
|
</li>
|
1818
1851
|
|
1819
|
-
<li class="never" data-hits="" data-linenumber="
|
1852
|
+
<li class="never" data-hits="" data-linenumber="117">
|
1820
1853
|
|
1821
1854
|
|
1822
1855
|
<code class="ruby"></code>
|
1823
1856
|
</li>
|
1824
1857
|
|
1825
|
-
<li class="covered" data-hits="1" data-linenumber="
|
1858
|
+
<li class="covered" data-hits="1" data-linenumber="118">
|
1826
1859
|
<span class="hits">1</span>
|
1827
1860
|
|
1828
1861
|
<code class="ruby"> def expiration_item</code>
|
1829
1862
|
</li>
|
1830
1863
|
|
1831
|
-
<li class="covered" data-hits="15" data-linenumber="
|
1864
|
+
<li class="covered" data-hits="15" data-linenumber="119">
|
1832
1865
|
<span class="hits">15</span>
|
1833
1866
|
|
1834
1867
|
<code class="ruby"> [4, 4, @expiry.to_i].pack('cnN') unless @expiry.nil?</code>
|
1835
1868
|
</li>
|
1836
1869
|
|
1837
|
-
<li class="never" data-hits="" data-linenumber="
|
1870
|
+
<li class="never" data-hits="" data-linenumber="120">
|
1838
1871
|
|
1839
1872
|
|
1840
1873
|
<code class="ruby"> end</code>
|
1841
1874
|
</li>
|
1842
1875
|
|
1843
|
-
<li class="never" data-hits="" data-linenumber="
|
1876
|
+
<li class="never" data-hits="" data-linenumber="121">
|
1844
1877
|
|
1845
1878
|
|
1846
1879
|
<code class="ruby"></code>
|
1847
1880
|
</li>
|
1848
1881
|
|
1849
|
-
<li class="covered" data-hits="1" data-linenumber="
|
1882
|
+
<li class="covered" data-hits="1" data-linenumber="122">
|
1850
1883
|
<span class="hits">1</span>
|
1851
1884
|
|
1852
1885
|
<code class="ruby"> def priority_item</code>
|
1853
1886
|
</li>
|
1854
1887
|
|
1855
|
-
<li class="covered" data-hits="15" data-linenumber="
|
1888
|
+
<li class="covered" data-hits="15" data-linenumber="123">
|
1856
1889
|
<span class="hits">15</span>
|
1857
1890
|
|
1858
1891
|
<code class="ruby"> [5, 1, @priority].pack('cnc') unless @priority.nil?</code>
|
1859
1892
|
</li>
|
1860
1893
|
|
1861
|
-
<li class="never" data-hits="" data-linenumber="
|
1894
|
+
<li class="never" data-hits="" data-linenumber="124">
|
1862
1895
|
|
1863
1896
|
|
1864
1897
|
<code class="ruby"> end</code>
|
1865
1898
|
</li>
|
1866
1899
|
|
1867
|
-
<li class="never" data-hits="" data-linenumber="
|
1900
|
+
<li class="never" data-hits="" data-linenumber="125">
|
1868
1901
|
|
1869
1902
|
|
1870
1903
|
<code class="ruby"> end</code>
|
1871
1904
|
</li>
|
1872
1905
|
|
1873
|
-
<li class="never" data-hits="" data-linenumber="
|
1906
|
+
<li class="never" data-hits="" data-linenumber="126">
|
1874
1907
|
|
1875
1908
|
|
1876
1909
|
<code class="ruby">end</code>
|
@@ -1879,8 +1912,9 @@
|
|
1879
1912
|
</ol>
|
1880
1913
|
</pre>
|
1881
1914
|
</div>
|
1915
|
+
|
1882
1916
|
|
1883
|
-
<div class="source_table" id="
|
1917
|
+
<div class="source_table" id="8b87415b3bd8a7824eada4b0600da3fd57094386">
|
1884
1918
|
<div class="header">
|
1885
1919
|
<h3>lib/houston/version.rb</h3>
|
1886
1920
|
<h4><span class="green">100.0 %</span> covered</h4>
|
@@ -1903,7 +1937,7 @@
|
|
1903
1937
|
<li class="covered" data-hits="1" data-linenumber="2">
|
1904
1938
|
<span class="hits">1</span>
|
1905
1939
|
|
1906
|
-
<code class="ruby"> VERSION = '2.
|
1940
|
+
<code class="ruby"> VERSION = '2.3.0'</code>
|
1907
1941
|
</li>
|
1908
1942
|
|
1909
1943
|
<li class="never" data-hits="" data-linenumber="3">
|
@@ -1915,6 +1949,7 @@
|
|
1915
1949
|
</ol>
|
1916
1950
|
</pre>
|
1917
1951
|
</div>
|
1952
|
+
|
1918
1953
|
|
1919
1954
|
</div>
|
1920
1955
|
</div>
|