houston 2.1.0 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +22 -16
  3. data/README.md +19 -1
  4. data/bin/apn +3 -0
  5. data/coverage/assets/0.8.0/application.css +799 -0
  6. data/coverage/assets/0.8.0/application.js +1559 -0
  7. data/coverage/assets/0.8.0/colorbox/border.png +0 -0
  8. data/coverage/assets/0.8.0/colorbox/controls.png +0 -0
  9. data/coverage/assets/0.8.0/colorbox/loading.gif +0 -0
  10. data/coverage/assets/0.8.0/colorbox/loading_background.png +0 -0
  11. data/coverage/assets/0.8.0/favicon_green.png +0 -0
  12. data/coverage/assets/0.8.0/favicon_red.png +0 -0
  13. data/coverage/assets/0.8.0/favicon_yellow.png +0 -0
  14. data/coverage/assets/0.8.0/loading.gif +0 -0
  15. data/coverage/assets/0.8.0/magnify.png +0 -0
  16. data/coverage/assets/0.8.0/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  17. data/coverage/assets/0.8.0/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  18. data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  19. data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  20. data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  21. data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  22. data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  23. data/coverage/assets/0.8.0/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  24. data/coverage/assets/0.8.0/smoothness/images/ui-icons_222222_256x240.png +0 -0
  25. data/coverage/assets/0.8.0/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  26. data/coverage/assets/0.8.0/smoothness/images/ui-icons_454545_256x240.png +0 -0
  27. data/coverage/assets/0.8.0/smoothness/images/ui-icons_888888_256x240.png +0 -0
  28. data/coverage/assets/0.8.0/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  29. data/coverage/index.html +319 -163
  30. data/houston.gemspec +1 -1
  31. data/lib/houston/client.rb +1 -0
  32. data/lib/houston/notification.rb +30 -5
  33. data/lib/houston/version.rb +1 -1
  34. data/spec/client_spec.rb +2 -2
  35. data/spec/notification_spec.rb +23 -10
  36. metadata +28 -4
Binary file
Binary file
data/coverage/index.html CHANGED
@@ -3,38 +3,38 @@
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.7.1/application.js' type='text/javascript'></script>
7
- <link href='./assets/0.7.1/application.css' media='screen, projection, print' rel='stylesheet' type='text/css'>
8
- <link rel="shortcut icon" type="image/png" href="./assets/0.7.1/favicon_red.png" />
9
- <link rel="icon" type="image/png" href="./assets/0.7.1/favicon.png" />
6
+ <script src='./assets/0.8.0/application.js' type='text/javascript'></script>
7
+ <link href='./assets/0.8.0/application.css' media='screen, projection, print' rel='stylesheet' type='text/css'>
8
+ <link rel="shortcut icon" type="image/png" href="./assets/0.8.0/favicon_red.png" />
9
+ <link rel="icon" type="image/png" href="./assets/0.8.0/favicon.png" />
10
10
  </head>
11
11
 
12
12
  <body>
13
13
  <div id="loading">
14
- <img src="./assets/0.7.1/loading.gif" alt="loading"/>
14
+ <img src="./assets/0.8.0/loading.gif" alt="loading"/>
15
15
  </div>
16
16
  <div id="wrapper" style="display:none;">
17
- <div class="timestamp">Generated <abbr class="timeago" title="2014-06-12T14:59:27-07:00">2014-06-12T14:59:27-07:00</abbr></div>
17
+ <div class="timestamp">Generated <abbr class="timeago" title="2014-08-09T16:18:14-04:00">2014-08-09T16:18:14-04: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">67.95%</span></span>
24
+ (<span class="covered_percent"><span class="red">68.29%</span></span>
25
25
  covered at
26
26
  <span class="covered_strength">
27
27
  <span class="green">
28
- 3.75
28
+ 5.21
29
29
  </span>
30
30
  </span> hits/line)
31
31
  </h2>
32
32
  <a name="AllFiles"></a>
33
33
  <div>
34
34
  <b>4</b> files in total.
35
- <b>156</b> relevant lines.
36
- <span class="green"><b>106</b> lines covered</span> and
37
- <span class="red"><b>50</b> lines missed </span>
35
+ <b>164</b> relevant lines.
36
+ <span class="green"><b>112</b> lines covered</span> and
37
+ <span class="red"><b>52</b> lines missed </span>
38
38
  </div>
39
39
  <table class="file_list">
40
40
  <thead>
@@ -62,11 +62,11 @@
62
62
 
63
63
  <tr>
64
64
  <td class="strong"><a href="#a3eaf6c199f250e522479598f621cf8c25128a64" class="src_link" title="lib/houston/client.rb">lib/houston/client.rb</a></td>
65
- <td class="red strong">58.73 %</td>
66
- <td>100</td>
67
- <td>63</td>
65
+ <td class="red strong">57.81 %</td>
66
+ <td>101</td>
67
+ <td>64</td>
68
68
  <td>37</td>
69
- <td>26</td>
69
+ <td>27</td>
70
70
  <td>2.1</td>
71
71
  </tr>
72
72
 
@@ -82,12 +82,12 @@
82
82
 
83
83
  <tr>
84
84
  <td class="strong"><a href="#7ea710ee036930b7540634e0cd00f6d863839f93" class="src_link" title="lib/houston/notification.rb">lib/houston/notification.rb</a></td>
85
- <td class="green strong">97.96 %</td>
86
- <td>85</td>
87
- <td>49</td>
88
- <td>48</td>
89
- <td>1</td>
90
- <td>11.5</td>
85
+ <td class="green strong">96.43 %</td>
86
+ <td>110</td>
87
+ <td>56</td>
88
+ <td>54</td>
89
+ <td>2</td>
90
+ <td>12.5</td>
91
91
  </tr>
92
92
 
93
93
  </tbody>
@@ -99,8 +99,8 @@
99
99
  </div>
100
100
 
101
101
  <div id="footer">
102
- Generated by <a href="http://github.com/colszowka/simplecov">simplecov</a> v0.7.1
103
- and simplecov-html v0.7.1<br/>
102
+ Generated by <a href="http://github.com/colszowka/simplecov">simplecov</a> v0.9.0
103
+ and simplecov-html v0.8.0<br/>
104
104
  using RSpec
105
105
  </div>
106
106
 
@@ -151,11 +151,11 @@
151
151
  <div class="source_table" id="a3eaf6c199f250e522479598f621cf8c25128a64">
152
152
  <div class="header">
153
153
  <h3>lib/houston/client.rb</h3>
154
- <h4><span class="red">58.73 %</span> covered</h4>
154
+ <h4><span class="red">57.81 %</span> covered</h4>
155
155
  <div>
156
- <b>63</b> relevant lines.
156
+ <b>64</b> relevant lines.
157
157
  <span class="green"><b>37</b> lines covered</span> and
158
- <span class="red"><b>26</b> lines missed.</span>
158
+ <span class="red"><b>27</b> lines missed.</span>
159
159
  </div>
160
160
  </div>
161
161
 
@@ -609,154 +609,160 @@
609
609
  <li class="missed" data-hits="0" data-linenumber="75">
610
610
 
611
611
 
612
- <code class="ruby"> notifications.slice!(0..index)</code>
612
+ <code class="ruby"> notifications[index].apns_error_code = status</code>
613
613
  </li>
614
614
 
615
615
  <li class="missed" data-hits="0" data-linenumber="76">
616
616
 
617
617
 
618
- <code class="ruby"> notifications.each(&amp;:mark_as_unsent!)</code>
618
+ <code class="ruby"> notifications.slice!(0..index)</code>
619
619
  </li>
620
620
 
621
621
  <li class="missed" data-hits="0" data-linenumber="77">
622
622
 
623
623
 
624
+ <code class="ruby"> notifications.each(&amp;:mark_as_unsent!)</code>
625
+ </li>
626
+
627
+ <li class="missed" data-hits="0" data-linenumber="78">
628
+
629
+
624
630
  <code class="ruby"> push(*notifications)</code>
625
631
  </li>
626
632
 
627
- <li class="never" data-hits="" data-linenumber="78">
633
+ <li class="never" data-hits="" data-linenumber="79">
628
634
 
629
635
 
630
636
  <code class="ruby"> end</code>
631
637
  </li>
632
638
 
633
- <li class="never" data-hits="" data-linenumber="79">
639
+ <li class="never" data-hits="" data-linenumber="80">
634
640
 
635
641
 
636
642
  <code class="ruby"> end</code>
637
643
  </li>
638
644
 
639
- <li class="never" data-hits="" data-linenumber="80">
645
+ <li class="never" data-hits="" data-linenumber="81">
640
646
 
641
647
 
642
648
  <code class="ruby"></code>
643
649
  </li>
644
650
 
645
- <li class="covered" data-hits="1" data-linenumber="81">
651
+ <li class="covered" data-hits="1" data-linenumber="82">
646
652
  <span class="hits">1</span>
647
653
 
648
654
  <code class="ruby"> def unregistered_devices</code>
649
655
  </li>
650
656
 
651
- <li class="covered" data-hits="2" data-linenumber="82">
657
+ <li class="covered" data-hits="2" data-linenumber="83">
652
658
  <span class="hits">2</span>
653
659
 
654
660
  <code class="ruby"> devices = []</code>
655
661
  </li>
656
662
 
657
- <li class="never" data-hits="" data-linenumber="83">
663
+ <li class="never" data-hits="" data-linenumber="84">
658
664
 
659
665
 
660
666
  <code class="ruby"></code>
661
667
  </li>
662
668
 
663
- <li class="covered" data-hits="2" data-linenumber="84">
669
+ <li class="covered" data-hits="2" data-linenumber="85">
664
670
  <span class="hits">2</span>
665
671
 
666
672
  <code class="ruby"> Connection.open(@feedback_uri, @certificate, @passphrase) do |connection|</code>
667
673
  </li>
668
674
 
669
- <li class="covered" data-hits="2" data-linenumber="85">
675
+ <li class="covered" data-hits="2" data-linenumber="86">
670
676
  <span class="hits">2</span>
671
677
 
672
678
  <code class="ruby"> while line = connection.read(38)</code>
673
679
  </li>
674
680
 
675
- <li class="covered" data-hits="4" data-linenumber="86">
681
+ <li class="covered" data-hits="4" data-linenumber="87">
676
682
  <span class="hits">4</span>
677
683
 
678
684
  <code class="ruby"> feedback = line.unpack(&#39;N1n1H140&#39;)</code>
679
685
  </li>
680
686
 
681
- <li class="covered" data-hits="4" data-linenumber="87">
687
+ <li class="covered" data-hits="4" data-linenumber="88">
682
688
  <span class="hits">4</span>
683
689
 
684
690
  <code class="ruby"> timestamp = feedback[0]</code>
685
691
  </li>
686
692
 
687
- <li class="covered" data-hits="4" data-linenumber="88">
693
+ <li class="covered" data-hits="4" data-linenumber="89">
688
694
  <span class="hits">4</span>
689
695
 
690
696
  <code class="ruby"> token = feedback[2].scan(/.{0,8}/).join(&#39; &#39;).strip</code>
691
697
  </li>
692
698
 
693
- <li class="covered" data-hits="4" data-linenumber="89">
699
+ <li class="covered" data-hits="4" data-linenumber="90">
694
700
  <span class="hits">4</span>
695
701
 
696
702
  <code class="ruby"> devices &lt;&lt; {token: token, timestamp: timestamp} if token &amp;&amp; timestamp</code>
697
703
  </li>
698
704
 
699
- <li class="never" data-hits="" data-linenumber="90">
705
+ <li class="never" data-hits="" data-linenumber="91">
700
706
 
701
707
 
702
708
  <code class="ruby"> end</code>
703
709
  </li>
704
710
 
705
- <li class="never" data-hits="" data-linenumber="91">
711
+ <li class="never" data-hits="" data-linenumber="92">
706
712
 
707
713
 
708
714
  <code class="ruby"> end</code>
709
715
  </li>
710
716
 
711
- <li class="never" data-hits="" data-linenumber="92">
717
+ <li class="never" data-hits="" data-linenumber="93">
712
718
 
713
719
 
714
720
  <code class="ruby"></code>
715
721
  </li>
716
722
 
717
- <li class="covered" data-hits="2" data-linenumber="93">
723
+ <li class="covered" data-hits="2" data-linenumber="94">
718
724
  <span class="hits">2</span>
719
725
 
720
726
  <code class="ruby"> devices</code>
721
727
  </li>
722
728
 
723
- <li class="never" data-hits="" data-linenumber="94">
729
+ <li class="never" data-hits="" data-linenumber="95">
724
730
 
725
731
 
726
732
  <code class="ruby"> end</code>
727
733
  </li>
728
734
 
729
- <li class="never" data-hits="" data-linenumber="95">
735
+ <li class="never" data-hits="" data-linenumber="96">
730
736
 
731
737
 
732
738
  <code class="ruby"></code>
733
739
  </li>
734
740
 
735
- <li class="covered" data-hits="1" data-linenumber="96">
741
+ <li class="covered" data-hits="1" data-linenumber="97">
736
742
  <span class="hits">1</span>
737
743
 
738
744
  <code class="ruby"> def devices</code>
739
745
  </li>
740
746
 
741
- <li class="covered" data-hits="3" data-linenumber="97">
747
+ <li class="covered" data-hits="3" data-linenumber="98">
742
748
  <span class="hits">3</span>
743
749
 
744
750
  <code class="ruby"> unregistered_devices.collect{|device| device[:token]}</code>
745
751
  </li>
746
752
 
747
- <li class="never" data-hits="" data-linenumber="98">
753
+ <li class="never" data-hits="" data-linenumber="99">
748
754
 
749
755
 
750
756
  <code class="ruby"> end</code>
751
757
  </li>
752
758
 
753
- <li class="never" data-hits="" data-linenumber="99">
759
+ <li class="never" data-hits="" data-linenumber="100">
754
760
 
755
761
 
756
762
  <code class="ruby"> end</code>
757
763
  </li>
758
764
 
759
- <li class="never" data-hits="" data-linenumber="100">
765
+ <li class="never" data-hits="" data-linenumber="101">
760
766
 
761
767
 
762
768
  <code class="ruby">end</code>
@@ -1177,11 +1183,11 @@
1177
1183
  <div class="source_table" id="7ea710ee036930b7540634e0cd00f6d863839f93">
1178
1184
  <div class="header">
1179
1185
  <h3>lib/houston/notification.rb</h3>
1180
- <h4><span class="green">97.96 %</span> covered</h4>
1186
+ <h4><span class="green">96.43 %</span> covered</h4>
1181
1187
  <div>
1182
- <b>49</b> relevant lines.
1183
- <span class="green"><b>48</b> lines covered</span> and
1184
- <span class="red"><b>1</b> lines missed.</span>
1188
+ <b>56</b> relevant lines.
1189
+ <span class="green"><b>54</b> lines covered</span> and
1190
+ <span class="red"><b>2</b> lines missed.</span>
1185
1191
  </div>
1186
1192
  </div>
1187
1193
 
@@ -1215,484 +1221,634 @@
1215
1221
  <li class="covered" data-hits="1" data-linenumber="5">
1216
1222
  <span class="hits">1</span>
1217
1223
 
1218
- <code class="ruby"> MAXIMUM_PAYLOAD_SIZE = 256</code>
1224
+ <code class="ruby"> class APNSError &lt; RuntimeError</code>
1219
1225
  </li>
1220
1226
 
1221
1227
  <li class="never" data-hits="" data-linenumber="6">
1222
1228
 
1223
1229
 
1224
- <code class="ruby"></code>
1230
+ <code class="ruby"> # See: https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/CommunicatingWIthAPS.html#//apple_ref/doc/uid/TP40008194-CH101-SW12</code>
1225
1231
  </li>
1226
1232
 
1227
1233
  <li class="covered" data-hits="1" data-linenumber="7">
1228
1234
  <span class="hits">1</span>
1229
1235
 
1230
- <code class="ruby"> attr_accessor :token, :alert, :badge, :sound, :content_available, :custom_data, :id, :expiry, :priority</code>
1236
+ <code class="ruby"> CODES = {</code>
1231
1237
  </li>
1232
1238
 
1233
- <li class="covered" data-hits="1" data-linenumber="8">
1239
+ <li class="never" data-hits="" data-linenumber="8">
1240
+
1241
+
1242
+ <code class="ruby"> 0 =&gt; &quot;No errors encountered&quot;,</code>
1243
+ </li>
1244
+
1245
+ <li class="never" data-hits="" data-linenumber="9">
1246
+
1247
+
1248
+ <code class="ruby"> 1 =&gt; &quot;Processing error&quot;,</code>
1249
+ </li>
1250
+
1251
+ <li class="never" data-hits="" data-linenumber="10">
1252
+
1253
+
1254
+ <code class="ruby"> 2 =&gt; &quot;Missing device token&quot;,</code>
1255
+ </li>
1256
+
1257
+ <li class="never" data-hits="" data-linenumber="11">
1258
+
1259
+
1260
+ <code class="ruby"> 3 =&gt; &quot;Missing topic&quot;,</code>
1261
+ </li>
1262
+
1263
+ <li class="never" data-hits="" data-linenumber="12">
1264
+
1265
+
1266
+ <code class="ruby"> 4 =&gt; &quot;Missing payload&quot;,</code>
1267
+ </li>
1268
+
1269
+ <li class="never" data-hits="" data-linenumber="13">
1270
+
1271
+
1272
+ <code class="ruby"> 5 =&gt; &quot;Invalid token size&quot;,</code>
1273
+ </li>
1274
+
1275
+ <li class="never" data-hits="" data-linenumber="14">
1276
+
1277
+
1278
+ <code class="ruby"> 6 =&gt; &quot;Invalid topic size&quot;,</code>
1279
+ </li>
1280
+
1281
+ <li class="never" data-hits="" data-linenumber="15">
1282
+
1283
+
1284
+ <code class="ruby"> 7 =&gt; &quot;Invalid payload size&quot;,</code>
1285
+ </li>
1286
+
1287
+ <li class="never" data-hits="" data-linenumber="16">
1288
+
1289
+
1290
+ <code class="ruby"> 8 =&gt; &quot;Invalid token&quot;,</code>
1291
+ </li>
1292
+
1293
+ <li class="never" data-hits="" data-linenumber="17">
1294
+
1295
+
1296
+ <code class="ruby"> 10 =&gt; &quot;Shutdown&quot;,</code>
1297
+ </li>
1298
+
1299
+ <li class="never" data-hits="" data-linenumber="18">
1300
+
1301
+
1302
+ <code class="ruby"> 255 =&gt; &quot;Unknown error&quot;</code>
1303
+ </li>
1304
+
1305
+ <li class="never" data-hits="" data-linenumber="19">
1306
+
1307
+
1308
+ <code class="ruby"> }</code>
1309
+ </li>
1310
+
1311
+ <li class="never" data-hits="" data-linenumber="20">
1312
+
1313
+
1314
+ <code class="ruby"> end</code>
1315
+ </li>
1316
+
1317
+ <li class="never" data-hits="" data-linenumber="21">
1318
+
1319
+
1320
+ <code class="ruby"></code>
1321
+ </li>
1322
+
1323
+ <li class="covered" data-hits="1" data-linenumber="22">
1324
+ <span class="hits">1</span>
1325
+
1326
+ <code class="ruby"> MAXIMUM_PAYLOAD_SIZE = 2048</code>
1327
+ </li>
1328
+
1329
+ <li class="never" data-hits="" data-linenumber="23">
1330
+
1331
+
1332
+ <code class="ruby"></code>
1333
+ </li>
1334
+
1335
+ <li class="covered" data-hits="1" data-linenumber="24">
1336
+ <span class="hits">1</span>
1337
+
1338
+ <code class="ruby"> attr_accessor :token, :alert, :badge, :sound, :category, :content_available, :custom_data, :id, :expiry, :priority</code>
1339
+ </li>
1340
+
1341
+ <li class="covered" data-hits="1" data-linenumber="25">
1234
1342
  <span class="hits">1</span>
1235
1343
 
1236
1344
  <code class="ruby"> attr_reader :sent_at</code>
1237
1345
  </li>
1238
1346
 
1239
- <li class="never" data-hits="" data-linenumber="9">
1347
+ <li class="covered" data-hits="1" data-linenumber="26">
1348
+ <span class="hits">1</span>
1349
+
1350
+ <code class="ruby"> attr_writer :apns_error_code</code>
1351
+ </li>
1352
+
1353
+ <li class="never" data-hits="" data-linenumber="27">
1240
1354
 
1241
1355
 
1242
1356
  <code class="ruby"></code>
1243
1357
  </li>
1244
1358
 
1245
- <li class="covered" data-hits="1" data-linenumber="10">
1359
+ <li class="covered" data-hits="1" data-linenumber="28">
1246
1360
  <span class="hits">1</span>
1247
1361
 
1248
1362
  <code class="ruby"> alias :device :token</code>
1249
1363
  </li>
1250
1364
 
1251
- <li class="covered" data-hits="1" data-linenumber="11">
1365
+ <li class="covered" data-hits="1" data-linenumber="29">
1252
1366
  <span class="hits">1</span>
1253
1367
 
1254
1368
  <code class="ruby"> alias :device= :token=</code>
1255
1369
  </li>
1256
1370
 
1257
- <li class="never" data-hits="" data-linenumber="12">
1371
+ <li class="never" data-hits="" data-linenumber="30">
1258
1372
 
1259
1373
 
1260
1374
  <code class="ruby"></code>
1261
1375
  </li>
1262
1376
 
1263
- <li class="covered" data-hits="1" data-linenumber="13">
1377
+ <li class="covered" data-hits="1" data-linenumber="31">
1264
1378
  <span class="hits">1</span>
1265
1379
 
1266
1380
  <code class="ruby"> def initialize(options = {})</code>
1267
1381
  </li>
1268
1382
 
1269
- <li class="covered" data-hits="31" data-linenumber="14">
1270
- <span class="hits">31</span>
1383
+ <li class="covered" data-hits="33" data-linenumber="32">
1384
+ <span class="hits">33</span>
1271
1385
 
1272
1386
  <code class="ruby"> @token = options.delete(:token) || options.delete(:device)</code>
1273
1387
  </li>
1274
1388
 
1275
- <li class="covered" data-hits="31" data-linenumber="15">
1276
- <span class="hits">31</span>
1389
+ <li class="covered" data-hits="33" data-linenumber="33">
1390
+ <span class="hits">33</span>
1277
1391
 
1278
1392
  <code class="ruby"> @alert = options.delete(:alert)</code>
1279
1393
  </li>
1280
1394
 
1281
- <li class="covered" data-hits="31" data-linenumber="16">
1282
- <span class="hits">31</span>
1395
+ <li class="covered" data-hits="33" data-linenumber="34">
1396
+ <span class="hits">33</span>
1283
1397
 
1284
1398
  <code class="ruby"> @badge = options.delete(:badge)</code>
1285
1399
  </li>
1286
1400
 
1287
- <li class="covered" data-hits="31" data-linenumber="17">
1288
- <span class="hits">31</span>
1401
+ <li class="covered" data-hits="33" data-linenumber="35">
1402
+ <span class="hits">33</span>
1289
1403
 
1290
1404
  <code class="ruby"> @sound = options.delete(:sound)</code>
1291
1405
  </li>
1292
1406
 
1293
- <li class="covered" data-hits="31" data-linenumber="18">
1294
- <span class="hits">31</span>
1407
+ <li class="covered" data-hits="33" data-linenumber="36">
1408
+ <span class="hits">33</span>
1409
+
1410
+ <code class="ruby"> @category = options.delete(:category)</code>
1411
+ </li>
1412
+
1413
+ <li class="covered" data-hits="33" data-linenumber="37">
1414
+ <span class="hits">33</span>
1295
1415
 
1296
1416
  <code class="ruby"> @expiry = options.delete(:expiry)</code>
1297
1417
  </li>
1298
1418
 
1299
- <li class="covered" data-hits="31" data-linenumber="19">
1300
- <span class="hits">31</span>
1419
+ <li class="covered" data-hits="33" data-linenumber="38">
1420
+ <span class="hits">33</span>
1301
1421
 
1302
1422
  <code class="ruby"> @id = options.delete(:id)</code>
1303
1423
  </li>
1304
1424
 
1305
- <li class="covered" data-hits="31" data-linenumber="20">
1306
- <span class="hits">31</span>
1425
+ <li class="covered" data-hits="33" data-linenumber="39">
1426
+ <span class="hits">33</span>
1307
1427
 
1308
1428
  <code class="ruby"> @priority = options.delete(:priority)</code>
1309
1429
  </li>
1310
1430
 
1311
- <li class="covered" data-hits="31" data-linenumber="21">
1312
- <span class="hits">31</span>
1431
+ <li class="covered" data-hits="33" data-linenumber="40">
1432
+ <span class="hits">33</span>
1313
1433
 
1314
1434
  <code class="ruby"> @content_available = options.delete(:content_available)</code>
1315
1435
  </li>
1316
1436
 
1317
- <li class="never" data-hits="" data-linenumber="22">
1437
+ <li class="never" data-hits="" data-linenumber="41">
1318
1438
 
1319
1439
 
1320
1440
  <code class="ruby"></code>
1321
1441
  </li>
1322
1442
 
1323
- <li class="covered" data-hits="31" data-linenumber="23">
1324
- <span class="hits">31</span>
1443
+ <li class="covered" data-hits="33" data-linenumber="42">
1444
+ <span class="hits">33</span>
1325
1445
 
1326
1446
  <code class="ruby"> @custom_data = options</code>
1327
1447
  </li>
1328
1448
 
1329
- <li class="never" data-hits="" data-linenumber="24">
1449
+ <li class="never" data-hits="" data-linenumber="43">
1330
1450
 
1331
1451
 
1332
1452
  <code class="ruby"> end</code>
1333
1453
  </li>
1334
1454
 
1335
- <li class="never" data-hits="" data-linenumber="25">
1455
+ <li class="never" data-hits="" data-linenumber="44">
1336
1456
 
1337
1457
 
1338
1458
  <code class="ruby"></code>
1339
1459
  </li>
1340
1460
 
1341
- <li class="covered" data-hits="1" data-linenumber="26">
1461
+ <li class="covered" data-hits="1" data-linenumber="45">
1342
1462
  <span class="hits">1</span>
1343
1463
 
1344
1464
  <code class="ruby"> def payload</code>
1345
1465
  </li>
1346
1466
 
1347
- <li class="covered" data-hits="21" data-linenumber="27">
1348
- <span class="hits">21</span>
1467
+ <li class="covered" data-hits="59" data-linenumber="46">
1468
+ <span class="hits">59</span>
1349
1469
 
1350
- <code class="ruby"> json = {}.merge(@custom_data || {})</code>
1470
+ <code class="ruby"> json = {}.merge(@custom_data || {}).inject({}){|h,(k,v)| h[k.to_s] = v; h}</code>
1351
1471
  </li>
1352
1472
 
1353
- <li class="covered" data-hits="21" data-linenumber="28">
1354
- <span class="hits">21</span>
1473
+ <li class="never" data-hits="" data-linenumber="47">
1474
+
1475
+
1476
+ <code class="ruby"></code>
1477
+ </li>
1478
+
1479
+ <li class="covered" data-hits="23" data-linenumber="48">
1480
+ <span class="hits">23</span>
1355
1481
 
1356
1482
  <code class="ruby"> json[&#39;aps&#39;] ||= {}</code>
1357
1483
  </li>
1358
1484
 
1359
- <li class="covered" data-hits="21" data-linenumber="29">
1360
- <span class="hits">21</span>
1485
+ <li class="covered" data-hits="23" data-linenumber="49">
1486
+ <span class="hits">23</span>
1361
1487
 
1362
1488
  <code class="ruby"> json[&#39;aps&#39;][&#39;alert&#39;] = @alert if @alert</code>
1363
1489
  </li>
1364
1490
 
1365
- <li class="covered" data-hits="21" data-linenumber="30">
1366
- <span class="hits">21</span>
1491
+ <li class="covered" data-hits="23" data-linenumber="50">
1492
+ <span class="hits">23</span>
1367
1493
 
1368
1494
  <code class="ruby"> json[&#39;aps&#39;][&#39;badge&#39;] = @badge.to_i rescue 0 if @badge</code>
1369
1495
  </li>
1370
1496
 
1371
- <li class="covered" data-hits="21" data-linenumber="31">
1372
- <span class="hits">21</span>
1497
+ <li class="covered" data-hits="23" data-linenumber="51">
1498
+ <span class="hits">23</span>
1373
1499
 
1374
1500
  <code class="ruby"> json[&#39;aps&#39;][&#39;sound&#39;] = @sound if @sound</code>
1375
1501
  </li>
1376
1502
 
1377
- <li class="covered" data-hits="21" data-linenumber="32">
1378
- <span class="hits">21</span>
1503
+ <li class="covered" data-hits="23" data-linenumber="52">
1504
+ <span class="hits">23</span>
1505
+
1506
+ <code class="ruby"> json[&#39;aps&#39;][&#39;category&#39;] = @category if @category</code>
1507
+ </li>
1508
+
1509
+ <li class="covered" data-hits="23" data-linenumber="53">
1510
+ <span class="hits">23</span>
1379
1511
 
1380
1512
  <code class="ruby"> json[&#39;aps&#39;][&#39;content-available&#39;] = 1 if @content_available</code>
1381
1513
  </li>
1382
1514
 
1383
- <li class="never" data-hits="" data-linenumber="33">
1515
+ <li class="never" data-hits="" data-linenumber="54">
1384
1516
 
1385
1517
 
1386
1518
  <code class="ruby"></code>
1387
1519
  </li>
1388
1520
 
1389
- <li class="covered" data-hits="21" data-linenumber="34">
1390
- <span class="hits">21</span>
1521
+ <li class="covered" data-hits="23" data-linenumber="55">
1522
+ <span class="hits">23</span>
1391
1523
 
1392
1524
  <code class="ruby"> json</code>
1393
1525
  </li>
1394
1526
 
1395
- <li class="never" data-hits="" data-linenumber="35">
1527
+ <li class="never" data-hits="" data-linenumber="56">
1396
1528
 
1397
1529
 
1398
1530
  <code class="ruby"> end</code>
1399
1531
  </li>
1400
1532
 
1401
- <li class="never" data-hits="" data-linenumber="36">
1533
+ <li class="never" data-hits="" data-linenumber="57">
1402
1534
 
1403
1535
 
1404
1536
  <code class="ruby"></code>
1405
1537
  </li>
1406
1538
 
1407
- <li class="covered" data-hits="1" data-linenumber="37">
1539
+ <li class="covered" data-hits="1" data-linenumber="58">
1408
1540
  <span class="hits">1</span>
1409
1541
 
1410
1542
  <code class="ruby"> def message</code>
1411
1543
  </li>
1412
1544
 
1413
- <li class="covered" data-hits="14" data-linenumber="38">
1414
- <span class="hits">14</span>
1545
+ <li class="covered" data-hits="15" data-linenumber="59">
1546
+ <span class="hits">15</span>
1415
1547
 
1416
1548
  <code class="ruby"> data = [device_token_item,</code>
1417
1549
  </li>
1418
1550
 
1419
- <li class="never" data-hits="" data-linenumber="39">
1551
+ <li class="never" data-hits="" data-linenumber="60">
1420
1552
 
1421
1553
 
1422
1554
  <code class="ruby"> payload_item,</code>
1423
1555
  </li>
1424
1556
 
1425
- <li class="never" data-hits="" data-linenumber="40">
1557
+ <li class="never" data-hits="" data-linenumber="61">
1426
1558
 
1427
1559
 
1428
1560
  <code class="ruby"> identifier_item,</code>
1429
1561
  </li>
1430
1562
 
1431
- <li class="never" data-hits="" data-linenumber="41">
1563
+ <li class="never" data-hits="" data-linenumber="62">
1432
1564
 
1433
1565
 
1434
1566
  <code class="ruby"> expiration_item,</code>
1435
1567
  </li>
1436
1568
 
1437
- <li class="never" data-hits="" data-linenumber="42">
1569
+ <li class="never" data-hits="" data-linenumber="63">
1438
1570
 
1439
1571
 
1440
1572
  <code class="ruby"> priority_item].compact.join</code>
1441
1573
  </li>
1442
1574
 
1443
- <li class="covered" data-hits="14" data-linenumber="43">
1444
- <span class="hits">14</span>
1575
+ <li class="covered" data-hits="15" data-linenumber="64">
1576
+ <span class="hits">15</span>
1445
1577
 
1446
1578
  <code class="ruby"> [2, data.bytes.count, data].pack(&#39;cNa*&#39;)</code>
1447
1579
  </li>
1448
1580
 
1449
- <li class="never" data-hits="" data-linenumber="44">
1581
+ <li class="never" data-hits="" data-linenumber="65">
1450
1582
 
1451
1583
 
1452
1584
  <code class="ruby"> end</code>
1453
1585
  </li>
1454
1586
 
1455
- <li class="never" data-hits="" data-linenumber="45">
1587
+ <li class="never" data-hits="" data-linenumber="66">
1456
1588
 
1457
1589
 
1458
1590
  <code class="ruby"></code>
1459
1591
  </li>
1460
1592
 
1461
- <li class="covered" data-hits="1" data-linenumber="46">
1593
+ <li class="covered" data-hits="1" data-linenumber="67">
1462
1594
  <span class="hits">1</span>
1463
1595
 
1464
1596
  <code class="ruby"> def mark_as_sent!</code>
1465
1597
  </li>
1466
1598
 
1467
- <li class="covered" data-hits="2" data-linenumber="47">
1599
+ <li class="covered" data-hits="2" data-linenumber="68">
1468
1600
  <span class="hits">2</span>
1469
1601
 
1470
1602
  <code class="ruby"> @sent_at = Time.now</code>
1471
1603
  </li>
1472
1604
 
1473
- <li class="never" data-hits="" data-linenumber="48">
1605
+ <li class="never" data-hits="" data-linenumber="69">
1474
1606
 
1475
1607
 
1476
1608
  <code class="ruby"> end</code>
1477
1609
  </li>
1478
1610
 
1479
- <li class="never" data-hits="" data-linenumber="49">
1611
+ <li class="never" data-hits="" data-linenumber="70">
1480
1612
 
1481
1613
 
1482
1614
  <code class="ruby"></code>
1483
1615
  </li>
1484
1616
 
1485
- <li class="covered" data-hits="1" data-linenumber="50">
1617
+ <li class="covered" data-hits="1" data-linenumber="71">
1486
1618
  <span class="hits">1</span>
1487
1619
 
1488
1620
  <code class="ruby"> def mark_as_unsent!</code>
1489
1621
  </li>
1490
1622
 
1491
- <li class="covered" data-hits="1" data-linenumber="51">
1623
+ <li class="covered" data-hits="1" data-linenumber="72">
1492
1624
  <span class="hits">1</span>
1493
1625
 
1494
1626
  <code class="ruby"> @sent_at = nil</code>
1495
1627
  </li>
1496
1628
 
1497
- <li class="never" data-hits="" data-linenumber="52">
1629
+ <li class="never" data-hits="" data-linenumber="73">
1498
1630
 
1499
1631
 
1500
1632
  <code class="ruby"> end</code>
1501
1633
  </li>
1502
1634
 
1503
- <li class="never" data-hits="" data-linenumber="53">
1635
+ <li class="never" data-hits="" data-linenumber="74">
1504
1636
 
1505
1637
 
1506
1638
  <code class="ruby"></code>
1507
1639
  </li>
1508
1640
 
1509
- <li class="covered" data-hits="1" data-linenumber="54">
1641
+ <li class="covered" data-hits="1" data-linenumber="75">
1510
1642
  <span class="hits">1</span>
1511
1643
 
1512
1644
  <code class="ruby"> def sent?</code>
1513
1645
  </li>
1514
1646
 
1515
- <li class="covered" data-hits="3" data-linenumber="55">
1647
+ <li class="covered" data-hits="3" data-linenumber="76">
1516
1648
  <span class="hits">3</span>
1517
1649
 
1518
1650
  <code class="ruby"> !!@sent_at</code>
1519
1651
  </li>
1520
1652
 
1521
- <li class="never" data-hits="" data-linenumber="56">
1653
+ <li class="never" data-hits="" data-linenumber="77">
1522
1654
 
1523
1655
 
1524
1656
  <code class="ruby"> end</code>
1525
1657
  </li>
1526
1658
 
1527
- <li class="never" data-hits="" data-linenumber="57">
1659
+ <li class="never" data-hits="" data-linenumber="78">
1528
1660
 
1529
1661
 
1530
1662
  <code class="ruby"></code>
1531
1663
  </li>
1532
1664
 
1533
- <li class="covered" data-hits="1" data-linenumber="58">
1665
+ <li class="covered" data-hits="1" data-linenumber="79">
1534
1666
  <span class="hits">1</span>
1535
1667
 
1536
1668
  <code class="ruby"> def valid?</code>
1537
1669
  </li>
1538
1670
 
1539
- <li class="missed" data-hits="0" data-linenumber="59">
1671
+ <li class="missed" data-hits="0" data-linenumber="80">
1540
1672
 
1541
1673
 
1542
1674
  <code class="ruby"> payload.to_json.bytesize &lt;= MAXIMUM_PAYLOAD_SIZE</code>
1543
1675
  </li>
1544
1676
 
1545
- <li class="never" data-hits="" data-linenumber="60">
1677
+ <li class="never" data-hits="" data-linenumber="81">
1546
1678
 
1547
1679
 
1548
1680
  <code class="ruby"> end</code>
1549
1681
  </li>
1550
1682
 
1551
- <li class="never" data-hits="" data-linenumber="61">
1683
+ <li class="never" data-hits="" data-linenumber="82">
1552
1684
 
1553
1685
 
1554
1686
  <code class="ruby"></code>
1555
1687
  </li>
1556
1688
 
1557
- <li class="covered" data-hits="1" data-linenumber="62">
1689
+ <li class="covered" data-hits="1" data-linenumber="83">
1690
+ <span class="hits">1</span>
1691
+
1692
+ <code class="ruby"> def error</code>
1693
+ </li>
1694
+
1695
+ <li class="missed" data-hits="0" data-linenumber="84">
1696
+
1697
+
1698
+ <code class="ruby"> APNSError.new(APNSError::CODES[@apns_error_code]) if @apns_error_code.nonzero?</code>
1699
+ </li>
1700
+
1701
+ <li class="never" data-hits="" data-linenumber="85">
1702
+
1703
+
1704
+ <code class="ruby"> end</code>
1705
+ </li>
1706
+
1707
+ <li class="never" data-hits="" data-linenumber="86">
1708
+
1709
+
1710
+ <code class="ruby"></code>
1711
+ </li>
1712
+
1713
+ <li class="covered" data-hits="1" data-linenumber="87">
1558
1714
  <span class="hits">1</span>
1559
1715
 
1560
1716
  <code class="ruby"> private</code>
1561
1717
  </li>
1562
1718
 
1563
- <li class="never" data-hits="" data-linenumber="63">
1719
+ <li class="never" data-hits="" data-linenumber="88">
1564
1720
 
1565
1721
 
1566
- <code class="ruby"> </code>
1722
+ <code class="ruby"></code>
1567
1723
  </li>
1568
1724
 
1569
- <li class="covered" data-hits="1" data-linenumber="64">
1725
+ <li class="covered" data-hits="1" data-linenumber="89">
1570
1726
  <span class="hits">1</span>
1571
1727
 
1572
1728
  <code class="ruby"> def device_token_item</code>
1573
1729
  </li>
1574
1730
 
1575
- <li class="covered" data-hits="14" data-linenumber="65">
1576
- <span class="hits">14</span>
1731
+ <li class="covered" data-hits="15" data-linenumber="90">
1732
+ <span class="hits">15</span>
1577
1733
 
1578
- <code class="ruby"> [1, 32, @token.gsub(/[&lt;\s&gt;]/, &#39;&#39;)].pack(&#39;cnH*&#39;)</code>
1734
+ <code class="ruby"> [1, 32, @token.gsub(/[&lt;\s&gt;]/, &#39;&#39;)].pack(&#39;cnH64&#39;)</code>
1579
1735
  </li>
1580
1736
 
1581
- <li class="never" data-hits="" data-linenumber="66">
1737
+ <li class="never" data-hits="" data-linenumber="91">
1582
1738
 
1583
1739
 
1584
1740
  <code class="ruby"> end</code>
1585
1741
  </li>
1586
1742
 
1587
- <li class="never" data-hits="" data-linenumber="67">
1743
+ <li class="never" data-hits="" data-linenumber="92">
1588
1744
 
1589
1745
 
1590
1746
  <code class="ruby"></code>
1591
1747
  </li>
1592
1748
 
1593
- <li class="covered" data-hits="1" data-linenumber="68">
1749
+ <li class="covered" data-hits="1" data-linenumber="93">
1594
1750
  <span class="hits">1</span>
1595
1751
 
1596
1752
  <code class="ruby"> def payload_item</code>
1597
1753
  </li>
1598
1754
 
1599
- <li class="covered" data-hits="14" data-linenumber="69">
1600
- <span class="hits">14</span>
1755
+ <li class="covered" data-hits="15" data-linenumber="94">
1756
+ <span class="hits">15</span>
1601
1757
 
1602
1758
  <code class="ruby"> json = payload.to_json</code>
1603
1759
  </li>
1604
1760
 
1605
- <li class="covered" data-hits="14" data-linenumber="70">
1606
- <span class="hits">14</span>
1761
+ <li class="covered" data-hits="15" data-linenumber="95">
1762
+ <span class="hits">15</span>
1607
1763
 
1608
1764
  <code class="ruby"> [2, json.bytes.count, json].pack(&#39;cna*&#39;)</code>
1609
1765
  </li>
1610
1766
 
1611
- <li class="never" data-hits="" data-linenumber="71">
1767
+ <li class="never" data-hits="" data-linenumber="96">
1612
1768
 
1613
1769
 
1614
1770
  <code class="ruby"> end</code>
1615
1771
  </li>
1616
1772
 
1617
- <li class="never" data-hits="" data-linenumber="72">
1773
+ <li class="never" data-hits="" data-linenumber="97">
1618
1774
 
1619
1775
 
1620
1776
  <code class="ruby"></code>
1621
1777
  </li>
1622
1778
 
1623
- <li class="covered" data-hits="1" data-linenumber="73">
1779
+ <li class="covered" data-hits="1" data-linenumber="98">
1624
1780
  <span class="hits">1</span>
1625
1781
 
1626
1782
  <code class="ruby"> def identifier_item</code>
1627
1783
  </li>
1628
1784
 
1629
- <li class="covered" data-hits="14" data-linenumber="74">
1630
- <span class="hits">14</span>
1785
+ <li class="covered" data-hits="15" data-linenumber="99">
1786
+ <span class="hits">15</span>
1631
1787
 
1632
1788
  <code class="ruby"> [3, 4, @id].pack(&#39;cnN&#39;) unless @id.nil?</code>
1633
1789
  </li>
1634
1790
 
1635
- <li class="never" data-hits="" data-linenumber="75">
1791
+ <li class="never" data-hits="" data-linenumber="100">
1636
1792
 
1637
1793
 
1638
1794
  <code class="ruby"> end</code>
1639
1795
  </li>
1640
1796
 
1641
- <li class="never" data-hits="" data-linenumber="76">
1797
+ <li class="never" data-hits="" data-linenumber="101">
1642
1798
 
1643
1799
 
1644
1800
  <code class="ruby"></code>
1645
1801
  </li>
1646
1802
 
1647
- <li class="covered" data-hits="1" data-linenumber="77">
1803
+ <li class="covered" data-hits="1" data-linenumber="102">
1648
1804
  <span class="hits">1</span>
1649
1805
 
1650
1806
  <code class="ruby"> def expiration_item</code>
1651
1807
  </li>
1652
1808
 
1653
- <li class="covered" data-hits="14" data-linenumber="78">
1654
- <span class="hits">14</span>
1809
+ <li class="covered" data-hits="15" data-linenumber="103">
1810
+ <span class="hits">15</span>
1655
1811
 
1656
1812
  <code class="ruby"> [4, 4, @expiry.to_i].pack(&#39;cnN&#39;) unless @expiry.nil?</code>
1657
1813
  </li>
1658
1814
 
1659
- <li class="never" data-hits="" data-linenumber="79">
1815
+ <li class="never" data-hits="" data-linenumber="104">
1660
1816
 
1661
1817
 
1662
1818
  <code class="ruby"> end</code>
1663
1819
  </li>
1664
1820
 
1665
- <li class="never" data-hits="" data-linenumber="80">
1821
+ <li class="never" data-hits="" data-linenumber="105">
1666
1822
 
1667
1823
 
1668
1824
  <code class="ruby"></code>
1669
1825
  </li>
1670
1826
 
1671
- <li class="covered" data-hits="1" data-linenumber="81">
1827
+ <li class="covered" data-hits="1" data-linenumber="106">
1672
1828
  <span class="hits">1</span>
1673
1829
 
1674
1830
  <code class="ruby"> def priority_item</code>
1675
1831
  </li>
1676
1832
 
1677
- <li class="covered" data-hits="14" data-linenumber="82">
1678
- <span class="hits">14</span>
1833
+ <li class="covered" data-hits="15" data-linenumber="107">
1834
+ <span class="hits">15</span>
1679
1835
 
1680
1836
  <code class="ruby"> [5, 1, @priority].pack(&#39;cnc&#39;) unless @priority.nil?</code>
1681
1837
  </li>
1682
1838
 
1683
- <li class="never" data-hits="" data-linenumber="83">
1839
+ <li class="never" data-hits="" data-linenumber="108">
1684
1840
 
1685
1841
 
1686
1842
  <code class="ruby"> end</code>
1687
1843
  </li>
1688
1844
 
1689
- <li class="never" data-hits="" data-linenumber="84">
1845
+ <li class="never" data-hits="" data-linenumber="109">
1690
1846
 
1691
1847
 
1692
1848
  <code class="ruby"> end</code>
1693
1849
  </li>
1694
1850
 
1695
- <li class="never" data-hits="" data-linenumber="85">
1851
+ <li class="never" data-hits="" data-linenumber="110">
1696
1852
 
1697
1853
 
1698
1854
  <code class="ruby">end</code>