venice 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +29 -18
  3. data/README.md +1 -1
  4. data/Rakefile +4 -7
  5. data/coverage/assets/{0.10.0 → 0.10.2}/application.css +0 -0
  6. data/coverage/assets/{0.10.0 → 0.10.2}/application.js +0 -0
  7. data/coverage/assets/{0.10.0 → 0.10.2}/colorbox/border.png +0 -0
  8. data/coverage/assets/{0.10.0 → 0.10.2}/colorbox/controls.png +0 -0
  9. data/coverage/assets/{0.10.0 → 0.10.2}/colorbox/loading.gif +0 -0
  10. data/coverage/assets/{0.10.0 → 0.10.2}/colorbox/loading_background.png +0 -0
  11. data/coverage/assets/{0.10.0 → 0.10.2}/favicon_green.png +0 -0
  12. data/coverage/assets/{0.10.0 → 0.10.2}/favicon_red.png +0 -0
  13. data/coverage/assets/{0.10.0 → 0.10.2}/favicon_yellow.png +0 -0
  14. data/coverage/assets/{0.10.0 → 0.10.2}/loading.gif +0 -0
  15. data/coverage/assets/{0.10.0 → 0.10.2}/magnify.png +0 -0
  16. data/coverage/assets/{0.10.0 → 0.10.2}/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  17. data/coverage/assets/{0.10.0 → 0.10.2}/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  18. data/coverage/assets/{0.10.0 → 0.10.2}/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  19. data/coverage/assets/{0.10.0 → 0.10.2}/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  20. data/coverage/assets/{0.10.0 → 0.10.2}/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  21. data/coverage/assets/{0.10.0 → 0.10.2}/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  22. data/coverage/assets/{0.10.0 → 0.10.2}/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  23. data/coverage/assets/{0.10.0 → 0.10.2}/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  24. data/coverage/assets/{0.10.0 → 0.10.2}/smoothness/images/ui-icons_222222_256x240.png +0 -0
  25. data/coverage/assets/{0.10.0 → 0.10.2}/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  26. data/coverage/assets/{0.10.0 → 0.10.2}/smoothness/images/ui-icons_454545_256x240.png +0 -0
  27. data/coverage/assets/{0.10.0 → 0.10.2}/smoothness/images/ui-icons_888888_256x240.png +0 -0
  28. data/coverage/assets/{0.10.0 → 0.10.2}/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  29. data/coverage/index.html +874 -320
  30. data/lib/venice/in_app_receipt.rb +1 -1
  31. data/lib/venice/pending_renewal_info.rb +66 -0
  32. data/lib/venice/receipt.rb +13 -1
  33. data/lib/venice/version.rb +1 -1
  34. data/lib/venice.rb +1 -0
  35. data/spec/pending_renewal_info_spec.rb +41 -0
  36. data/spec/receipt_spec.rb +24 -1
  37. data/spec/spec_helper.rb +1 -0
  38. data/venice.gemspec +2 -1
  39. metadata +46 -29
data/coverage/index.html CHANGED
@@ -3,38 +3,38 @@
3
3
  <head>
4
4
  <title>Code coverage for Venice</title>
5
5
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
6
- <script src='./assets/0.10.0/application.js' type='text/javascript'></script>
7
- <link href='./assets/0.10.0/application.css' media='screen, projection, print' rel='stylesheet' type='text/css'>
8
- <link rel="shortcut icon" type="image/png" href="./assets/0.10.0/favicon_yellow.png" />
9
- <link rel="icon" type="image/png" href="./assets/0.10.0/favicon.png" />
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_yellow.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.0/loading.gif" alt="loading"/>
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="2016-08-08T09:26:02-07:00">2016-08-08T09:26:02-07:00</abbr></div>
17
+ <div class="timestamp">Generated <abbr class="timeago" title="2017-10-11T13:01:40+03:00">2017-10-11T13:01:40+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="yellow">81.25%</span></span>
24
+ (<span class="covered_percent"><span class="yellow">86.01%</span></span>
25
25
  covered at
26
26
  <span class="covered_strength">
27
27
  <span class="green">
28
- 3.01
28
+ 3.25
29
29
  </span>
30
30
  </span> hits/line)
31
31
  </h2>
32
32
  <a name="AllFiles"></a>
33
33
  <div>
34
- <b>4</b> files in total.
35
- <b>160</b> relevant lines.
36
- <span class="green"><b>130</b> lines covered</span> and
37
- <span class="red"><b>30</b> lines missed </span>
34
+ <b>6</b> files in total.
35
+ <b>193</b> relevant lines.
36
+ <span class="green"><b>166</b> lines covered</span> and
37
+ <span class="red"><b>27</b> lines missed </span>
38
38
  </div>
39
39
  <table class="file_list">
40
40
  <thead>
@@ -51,17 +51,17 @@
51
51
  <tbody>
52
52
 
53
53
  <tr>
54
- <td class="strong"><a href="#f3d99ead6e1e6f72f4dc51a57d3a42151ff6e184" class="src_link" title="lib/venice.rb">lib/venice.rb</a></td>
54
+ <td class="strong"><a href="#175f5aad0793e9750ae8298148ee6c32946b63ae" class="src_link" title="lib/venice.rb">lib/venice.rb</a></td>
55
55
  <td class="green strong">100.0 %</td>
56
- <td>4</td>
57
- <td>4</td>
58
- <td>4</td>
56
+ <td>5</td>
57
+ <td>5</td>
58
+ <td>5</td>
59
59
  <td>0</td>
60
60
  <td>1.0</td>
61
61
  </tr>
62
62
 
63
63
  <tr>
64
- <td class="strong"><a href="#cb8434e3100cd89a7f5504219b05ba8ca798ed15" class="src_link" title="lib/venice/client.rb">lib/venice/client.rb</a></td>
64
+ <td class="strong"><a href="#d79fadfe1306623a10822709e775b8c021f4fc4e" class="src_link" title="lib/venice/client.rb">lib/venice/client.rb</a></td>
65
65
  <td class="green strong">91.67 %</td>
66
66
  <td>85</td>
67
67
  <td>48</td>
@@ -71,23 +71,43 @@
71
71
  </tr>
72
72
 
73
73
  <tr>
74
- <td class="strong"><a href="#010c5d2864b3eb601a2349e49667696ba952a6a5" class="src_link" title="lib/venice/in_app_receipt.rb">lib/venice/in_app_receipt.rb</a></td>
74
+ <td class="strong"><a href="#080477ce0f6d0348fc87b2c6eb5ce94e3b5da4cd" class="src_link" title="lib/venice/in_app_receipt.rb">lib/venice/in_app_receipt.rb</a></td>
75
75
  <td class="green strong">97.06 %</td>
76
76
  <td>92</td>
77
77
  <td>34</td>
78
78
  <td>33</td>
79
79
  <td>1</td>
80
- <td>7.1</td>
80
+ <td>7.9</td>
81
+ </tr>
82
+
83
+ <tr>
84
+ <td class="strong"><a href="#17a12c36d26ef47e82b8c4a1684d8e945c9a9e89" class="src_link" title="lib/venice/pending_renewal_info.rb">lib/venice/pending_renewal_info.rb</a></td>
85
+ <td class="green strong">95.65 %</td>
86
+ <td>66</td>
87
+ <td>23</td>
88
+ <td>22</td>
89
+ <td>1</td>
90
+ <td>3.1</td>
91
+ </tr>
92
+
93
+ <tr>
94
+ <td class="strong"><a href="#10dfdb14e321a7bb364075307e5a80a2a62317af" class="src_link" title="lib/venice/receipt.rb">lib/venice/receipt.rb</a></td>
95
+ <td class="red strong">74.07 %</td>
96
+ <td>159</td>
97
+ <td>81</td>
98
+ <td>60</td>
99
+ <td>21</td>
100
+ <td>2.1</td>
81
101
  </tr>
82
102
 
83
103
  <tr>
84
- <td class="strong"><a href="#a911d370e49e700651ce37bf7aab56003cdc14de" class="src_link" title="lib/venice/receipt.rb">lib/venice/receipt.rb</a></td>
85
- <td class="red strong">66.22 %</td>
86
- <td>147</td>
87
- <td>74</td>
88
- <td>49</td>
89
- <td>25</td>
90
- <td>1.7</td>
104
+ <td class="strong"><a href="#cb684cfb744e20e9f55e0ef69140ba65fee90e3b" class="src_link" title="lib/venice/version.rb">lib/venice/version.rb</a></td>
105
+ <td class="green strong">100.0 %</td>
106
+ <td>3</td>
107
+ <td>2</td>
108
+ <td>2</td>
109
+ <td>0</td>
110
+ <td>1.0</td>
91
111
  </tr>
92
112
 
93
113
  </tbody>
@@ -99,20 +119,20 @@
99
119
  </div>
100
120
 
101
121
  <div id="footer">
102
- Generated by <a href="http://github.com/colszowka/simplecov">simplecov</a> v0.12.0
103
- and simplecov-html v0.10.0<br/>
122
+ Generated by <a href="http://github.com/colszowka/simplecov">simplecov</a> v0.15.1
123
+ and simplecov-html v0.10.2<br/>
104
124
  using RSpec
105
125
  </div>
106
126
 
107
127
  <div class="source_files">
108
128
 
109
- <div class="source_table" id="f3d99ead6e1e6f72f4dc51a57d3a42151ff6e184">
129
+ <div class="source_table" id="175f5aad0793e9750ae8298148ee6c32946b63ae">
110
130
  <div class="header">
111
131
  <h3>lib/venice.rb</h3>
112
132
  <h4><span class="green">100.0 %</span> covered</h4>
113
133
  <div>
114
- <b>4</b> relevant lines.
115
- <span class="green"><b>4</b> lines covered</span> and
134
+ <b>5</b> relevant lines.
135
+ <span class="green"><b>5</b> lines covered</span> and
116
136
  <span class="red"><b>0</b> lines missed.</span>
117
137
  </div>
118
138
  </div>
@@ -144,11 +164,18 @@
144
164
  <code class="ruby">require &#39;venice/receipt&#39;</code>
145
165
  </li>
146
166
 
167
+ <li class="covered" data-hits="1" data-linenumber="5">
168
+ <span class="hits">1</span>
169
+
170
+ <code class="ruby">require &#39;venice/pending_renewal_info&#39;</code>
171
+ </li>
172
+
147
173
  </ol>
148
174
  </pre>
149
175
  </div>
176
+
150
177
 
151
- <div class="source_table" id="cb8434e3100cd89a7f5504219b05ba8ca798ed15">
178
+ <div class="source_table" id="d79fadfe1306623a10822709e775b8c021f4fc4e">
152
179
  <div class="header">
153
180
  <h3>lib/venice/client.rb</h3>
154
181
  <h4><span class="green">91.67 %</span> covered</h4>
@@ -675,8 +702,9 @@
675
702
  </ol>
676
703
  </pre>
677
704
  </div>
705
+
678
706
 
679
- <div class="source_table" id="010c5d2864b3eb601a2349e49667696ba952a6a5">
707
+ <div class="source_table" id="080477ce0f6d0348fc87b2c6eb5ce94e3b5da4cd">
680
708
  <div class="header">
681
709
  <h3>lib/venice/in_app_receipt.rb</h3>
682
710
  <h4><span class="green">97.06 %</span> covered</h4>
@@ -966,38 +994,38 @@
966
994
  <code class="ruby"> def initialize(attributes = {})</code>
967
995
  </li>
968
996
 
969
- <li class="covered" data-hits="22" data-linenumber="47">
970
- <span class="hits">22</span>
997
+ <li class="covered" data-hits="24" data-linenumber="47">
998
+ <span class="hits">24</span>
971
999
 
972
1000
  <code class="ruby"> @quantity = Integer(attributes[&#39;quantity&#39;]) if attributes[&#39;quantity&#39;]</code>
973
1001
  </li>
974
1002
 
975
- <li class="covered" data-hits="22" data-linenumber="48">
976
- <span class="hits">22</span>
1003
+ <li class="covered" data-hits="24" data-linenumber="48">
1004
+ <span class="hits">24</span>
977
1005
 
978
1006
  <code class="ruby"> @product_id = attributes[&#39;product_id&#39;]</code>
979
1007
  </li>
980
1008
 
981
- <li class="covered" data-hits="22" data-linenumber="49">
982
- <span class="hits">22</span>
1009
+ <li class="covered" data-hits="24" data-linenumber="49">
1010
+ <span class="hits">24</span>
983
1011
 
984
1012
  <code class="ruby"> @transaction_id = attributes[&#39;transaction_id&#39;]</code>
985
1013
  </li>
986
1014
 
987
- <li class="covered" data-hits="22" data-linenumber="50">
988
- <span class="hits">22</span>
1015
+ <li class="covered" data-hits="24" data-linenumber="50">
1016
+ <span class="hits">24</span>
989
1017
 
990
1018
  <code class="ruby"> @purchased_at = DateTime.parse(attributes[&#39;purchase_date&#39;]) if attributes[&#39;purchase_date&#39;]</code>
991
1019
  </li>
992
1020
 
993
- <li class="covered" data-hits="22" data-linenumber="51">
994
- <span class="hits">22</span>
1021
+ <li class="covered" data-hits="24" data-linenumber="51">
1022
+ <span class="hits">24</span>
995
1023
 
996
1024
  <code class="ruby"> @app_item_id = attributes[&#39;app_item_id&#39;]</code>
997
1025
  </li>
998
1026
 
999
- <li class="covered" data-hits="22" data-linenumber="52">
1000
- <span class="hits">22</span>
1027
+ <li class="covered" data-hits="24" data-linenumber="52">
1028
+ <span class="hits">24</span>
1001
1029
 
1002
1030
  <code class="ruby"> @version_external_identifier = attributes[&#39;version_external_identifier&#39;]</code>
1003
1031
  </li>
@@ -1014,8 +1042,8 @@
1014
1042
  <code class="ruby"> # expires_date is in ms since the Epoch, Time.at expects seconds</code>
1015
1043
  </li>
1016
1044
 
1017
- <li class="covered" data-hits="22" data-linenumber="55">
1018
- <span class="hits">22</span>
1045
+ <li class="covered" data-hits="24" data-linenumber="55">
1046
+ <span class="hits">24</span>
1019
1047
 
1020
1048
  <code class="ruby"> @expires_at = Time.at(attributes[&#39;expires_date_ms&#39;].to_i / 1000) if attributes[&#39;expires_date_ms&#39;]</code>
1021
1049
  </li>
@@ -1032,10 +1060,10 @@
1032
1060
  <code class="ruby"> # cancellation_date is in ms since the Epoch, Time.at expects seconds</code>
1033
1061
  </li>
1034
1062
 
1035
- <li class="covered" data-hits="22" data-linenumber="58">
1036
- <span class="hits">22</span>
1063
+ <li class="covered" data-hits="24" data-linenumber="58">
1064
+ <span class="hits">24</span>
1037
1065
 
1038
- <code class="ruby"> @cancellation_date = Time.at(attributes[&#39;cancellation_date&#39;].to_i / 1000) if attributes[&#39;cancellation_date&#39;]</code>
1066
+ <code class="ruby"> @cancellation_at = Time.at(attributes[&#39;cancellation_date_ms&#39;].to_i / 1000) if attributes[&#39;cancellation_date_ms&#39;]</code>
1039
1067
  </li>
1040
1068
 
1041
1069
  <li class="never" data-hits="" data-linenumber="59">
@@ -1044,14 +1072,14 @@
1044
1072
  <code class="ruby"></code>
1045
1073
  </li>
1046
1074
 
1047
- <li class="covered" data-hits="22" data-linenumber="60">
1048
- <span class="hits">22</span>
1075
+ <li class="covered" data-hits="24" data-linenumber="60">
1076
+ <span class="hits">24</span>
1049
1077
 
1050
1078
  <code class="ruby"> if attributes[&#39;original_transaction_id&#39;] || attributes[&#39;original_purchase_date&#39;]</code>
1051
1079
  </li>
1052
1080
 
1053
- <li class="covered" data-hits="11" data-linenumber="61">
1054
- <span class="hits">11</span>
1081
+ <li class="covered" data-hits="12" data-linenumber="61">
1082
+ <span class="hits">12</span>
1055
1083
 
1056
1084
  <code class="ruby"> original_attributes = {</code>
1057
1085
  </li>
@@ -1080,8 +1108,8 @@
1080
1108
  <code class="ruby"></code>
1081
1109
  </li>
1082
1110
 
1083
- <li class="covered" data-hits="11" data-linenumber="66">
1084
- <span class="hits">11</span>
1111
+ <li class="covered" data-hits="12" data-linenumber="66">
1112
+ <span class="hits">12</span>
1085
1113
 
1086
1114
  <code class="ruby"> self.original = InAppReceipt.new(original_attributes)</code>
1087
1115
  </li>
@@ -1140,20 +1168,20 @@
1140
1168
  <code class="ruby"> :transaction_id =&gt; @transaction_id,</code>
1141
1169
  </li>
1142
1170
 
1143
- <li class="covered" data-hits="1" data-linenumber="76">
1144
- <span class="hits">1</span>
1171
+ <li class="covered" data-hits="2" data-linenumber="76">
1172
+ <span class="hits">2</span>
1145
1173
 
1146
1174
  <code class="ruby"> :purchase_date =&gt; (@purchased_at.httpdate rescue nil),</code>
1147
1175
  </li>
1148
1176
 
1149
- <li class="covered" data-hits="1" data-linenumber="77">
1150
- <span class="hits">1</span>
1177
+ <li class="covered" data-hits="2" data-linenumber="77">
1178
+ <span class="hits">2</span>
1151
1179
 
1152
1180
  <code class="ruby"> :original_transaction_id =&gt; (@original.transaction_id rescue nil),</code>
1153
1181
  </li>
1154
1182
 
1155
- <li class="covered" data-hits="1" data-linenumber="78">
1156
- <span class="hits">1</span>
1183
+ <li class="covered" data-hits="2" data-linenumber="78">
1184
+ <span class="hits">2</span>
1157
1185
 
1158
1186
  <code class="ruby"> :original_purchase_date =&gt; (@original.purchased_at.httpdate rescue nil),</code>
1159
1187
  </li>
@@ -1170,20 +1198,20 @@
1170
1198
  <code class="ruby"> :version_external_identifier =&gt; @version_external_identifier,</code>
1171
1199
  </li>
1172
1200
 
1173
- <li class="covered" data-hits="1" data-linenumber="81">
1174
- <span class="hits">1</span>
1201
+ <li class="covered" data-hits="2" data-linenumber="81">
1202
+ <span class="hits">2</span>
1175
1203
 
1176
1204
  <code class="ruby"> :expires_at =&gt; (@expires_at.httpdate rescue nil),</code>
1177
1205
  </li>
1178
1206
 
1179
- <li class="covered" data-hits="1" data-linenumber="82">
1180
- <span class="hits">1</span>
1207
+ <li class="covered" data-hits="2" data-linenumber="82">
1208
+ <span class="hits">2</span>
1181
1209
 
1182
1210
  <code class="ruby"> :cancellation_at =&gt; (@cancellation_at.httpdate rescue nil)</code>
1183
1211
  </li>
1184
1212
 
1185
- <li class="covered" data-hits="1" data-linenumber="83">
1186
- <span class="hits">1</span>
1213
+ <li class="covered" data-hits="2" data-linenumber="83">
1214
+ <span class="hits">2</span>
1187
1215
 
1188
1216
  <code class="ruby"> }</code>
1189
1217
  </li>
@@ -1245,15 +1273,16 @@
1245
1273
  </ol>
1246
1274
  </pre>
1247
1275
  </div>
1276
+
1248
1277
 
1249
- <div class="source_table" id="a911d370e49e700651ce37bf7aab56003cdc14de">
1278
+ <div class="source_table" id="17a12c36d26ef47e82b8c4a1684d8e945c9a9e89">
1250
1279
  <div class="header">
1251
- <h3>lib/venice/receipt.rb</h3>
1252
- <h4><span class="red">66.22 %</span> covered</h4>
1280
+ <h3>lib/venice/pending_renewal_info.rb</h3>
1281
+ <h4><span class="green">95.65 %</span> covered</h4>
1253
1282
  <div>
1254
- <b>74</b> relevant lines.
1255
- <span class="green"><b>49</b> lines covered</span> and
1256
- <span class="red"><b>25</b> lines missed.</span>
1283
+ <b>23</b> relevant lines.
1284
+ <span class="green"><b>22</b> lines covered</span> and
1285
+ <span class="red"><b>1</b> lines missed.</span>
1257
1286
  </div>
1258
1287
  </div>
1259
1288
 
@@ -1263,37 +1292,37 @@
1263
1292
  <li class="covered" data-hits="1" data-linenumber="1">
1264
1293
  <span class="hits">1</span>
1265
1294
 
1266
- <code class="ruby">require &#39;time&#39;</code>
1295
+ <code class="ruby">module Venice</code>
1267
1296
  </li>
1268
1297
 
1269
- <li class="never" data-hits="" data-linenumber="2">
1270
-
1298
+ <li class="covered" data-hits="1" data-linenumber="2">
1299
+ <span class="hits">1</span>
1271
1300
 
1272
- <code class="ruby"></code>
1301
+ <code class="ruby"> class PendingRenewalInfo</code>
1273
1302
  </li>
1274
1303
 
1275
- <li class="covered" data-hits="1" data-linenumber="3">
1276
- <span class="hits">1</span>
1304
+ <li class="never" data-hits="" data-linenumber="3">
1277
1305
 
1278
- <code class="ruby">module Venice</code>
1306
+
1307
+ <code class="ruby"></code>
1279
1308
  </li>
1280
1309
 
1281
- <li class="covered" data-hits="1" data-linenumber="4">
1282
- <span class="hits">1</span>
1310
+ <li class="never" data-hits="" data-linenumber="4">
1283
1311
 
1284
- <code class="ruby"> class Receipt</code>
1312
+
1313
+ <code class="ruby"> # For an expired subscription, the reason for the subscription expiration.</code>
1285
1314
  </li>
1286
1315
 
1287
1316
  <li class="never" data-hits="" data-linenumber="5">
1288
1317
 
1289
1318
 
1290
- <code class="ruby"> # For detailed explanations on these keys/values, see</code>
1319
+ <code class="ruby"> # This key is only present for a receipt containing an expired auto-renewable subscription. </code>
1291
1320
  </li>
1292
1321
 
1293
- <li class="never" data-hits="" data-linenumber="6">
1294
-
1322
+ <li class="covered" data-hits="1" data-linenumber="6">
1323
+ <span class="hits">1</span>
1295
1324
 
1296
- <code class="ruby"> # https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ReceiptFields.html#//apple_ref/doc/uid/TP40010573-CH106-SW1</code>
1325
+ <code class="ruby"> attr_reader :expiration_intent</code>
1297
1326
  </li>
1298
1327
 
1299
1328
  <li class="never" data-hits="" data-linenumber="7">
@@ -1305,67 +1334,67 @@
1305
1334
  <li class="never" data-hits="" data-linenumber="8">
1306
1335
 
1307
1336
 
1308
- <code class="ruby"> # The app’s bundle identifier.</code>
1337
+ <code class="ruby"> # The current renewal status for the auto-renewable subscription.</code>
1309
1338
  </li>
1310
1339
 
1311
- <li class="covered" data-hits="1" data-linenumber="9">
1312
- <span class="hits">1</span>
1340
+ <li class="never" data-hits="" data-linenumber="9">
1313
1341
 
1314
- <code class="ruby"> attr_reader :bundle_id</code>
1342
+
1343
+ <code class="ruby"> # This key is only present for auto-renewable subscription receipts, for active or expired subscriptions</code>
1315
1344
  </li>
1316
1345
 
1317
- <li class="never" data-hits="" data-linenumber="10">
1318
-
1346
+ <li class="covered" data-hits="1" data-linenumber="10">
1347
+ <span class="hits">1</span>
1319
1348
 
1320
- <code class="ruby"></code>
1349
+ <code class="ruby"> attr_reader :auto_renew_status</code>
1321
1350
  </li>
1322
1351
 
1323
1352
  <li class="never" data-hits="" data-linenumber="11">
1324
1353
 
1325
1354
 
1326
- <code class="ruby"> # The app’s version number.</code>
1355
+ <code class="ruby"></code>
1327
1356
  </li>
1328
1357
 
1329
- <li class="covered" data-hits="1" data-linenumber="12">
1330
- <span class="hits">1</span>
1358
+ <li class="never" data-hits="" data-linenumber="12">
1331
1359
 
1332
- <code class="ruby"> attr_reader :application_version</code>
1360
+
1361
+ <code class="ruby"> # The current renewal preference for the auto-renewable subscription.</code>
1333
1362
  </li>
1334
1363
 
1335
1364
  <li class="never" data-hits="" data-linenumber="13">
1336
1365
 
1337
1366
 
1338
- <code class="ruby"></code>
1367
+ <code class="ruby"> # The value for this key corresponds to the productIdentifier property of the product that the customer’s subscription renews.</code>
1339
1368
  </li>
1340
1369
 
1341
- <li class="never" data-hits="" data-linenumber="14">
1342
-
1370
+ <li class="covered" data-hits="1" data-linenumber="14">
1371
+ <span class="hits">1</span>
1343
1372
 
1344
- <code class="ruby"> # The receipt for an in-app purchase.</code>
1373
+ <code class="ruby"> attr_reader :auto_renew_product_id</code>
1345
1374
  </li>
1346
1375
 
1347
- <li class="covered" data-hits="1" data-linenumber="15">
1348
- <span class="hits">1</span>
1376
+ <li class="never" data-hits="" data-linenumber="15">
1349
1377
 
1350
- <code class="ruby"> attr_reader :in_app</code>
1378
+
1379
+ <code class="ruby"></code>
1351
1380
  </li>
1352
1381
 
1353
1382
  <li class="never" data-hits="" data-linenumber="16">
1354
1383
 
1355
1384
 
1356
- <code class="ruby"></code>
1385
+ <code class="ruby"> # For an expired subscription, whether or not Apple is still attempting to automatically renew the subscription.</code>
1357
1386
  </li>
1358
1387
 
1359
1388
  <li class="never" data-hits="" data-linenumber="17">
1360
1389
 
1361
1390
 
1362
- <code class="ruby"> # The version of the app that was originally purchased.</code>
1391
+ <code class="ruby"> # If the customer’s subscription failed to renew because the App Store was unable to complete the transaction, this value will reflect whether or not the App Store is still trying to renew the subscription.</code>
1363
1392
  </li>
1364
1393
 
1365
1394
  <li class="covered" data-hits="1" data-linenumber="18">
1366
1395
  <span class="hits">1</span>
1367
1396
 
1368
- <code class="ruby"> attr_reader :original_application_version</code>
1397
+ <code class="ruby"> attr_reader :is_in_billing_retry_period</code>
1369
1398
  </li>
1370
1399
 
1371
1400
  <li class="never" data-hits="" data-linenumber="19">
@@ -1377,67 +1406,67 @@
1377
1406
  <li class="never" data-hits="" data-linenumber="20">
1378
1407
 
1379
1408
 
1380
- <code class="ruby"> # The original purchase date</code>
1409
+ <code class="ruby"> # The product identifier of the item that was purchased.</code>
1381
1410
  </li>
1382
1411
 
1383
- <li class="covered" data-hits="1" data-linenumber="21">
1384
- <span class="hits">1</span>
1412
+ <li class="never" data-hits="" data-linenumber="21">
1385
1413
 
1386
- <code class="ruby"> attr_reader :original_purchase_date</code>
1414
+
1415
+ <code class="ruby"> # This value corresponds to the productIdentifier property of the SKPayment object stored in the transaction’s payment property.</code>
1387
1416
  </li>
1388
1417
 
1389
- <li class="never" data-hits="" data-linenumber="22">
1390
-
1418
+ <li class="covered" data-hits="1" data-linenumber="22">
1419
+ <span class="hits">1</span>
1391
1420
 
1392
- <code class="ruby"></code>
1421
+ <code class="ruby"> attr_reader :product_id</code>
1393
1422
  </li>
1394
1423
 
1395
1424
  <li class="never" data-hits="" data-linenumber="23">
1396
1425
 
1397
1426
 
1398
- <code class="ruby"> # The date that the app receipt expires.</code>
1427
+ <code class="ruby"></code>
1399
1428
  </li>
1400
1429
 
1401
- <li class="covered" data-hits="1" data-linenumber="24">
1402
- <span class="hits">1</span>
1430
+ <li class="never" data-hits="" data-linenumber="24">
1403
1431
 
1404
- <code class="ruby"> attr_reader :expires_at</code>
1432
+
1433
+ <code class="ruby"> # The current price consent status for a subscription price increase</code>
1405
1434
  </li>
1406
1435
 
1407
1436
  <li class="never" data-hits="" data-linenumber="25">
1408
1437
 
1409
1438
 
1410
- <code class="ruby"></code>
1439
+ <code class="ruby"> # This key is only present for auto-renewable subscription receipts if the subscription price was increased without keeping the existing price for active subscribers</code>
1411
1440
  </li>
1412
1441
 
1413
- <li class="never" data-hits="" data-linenumber="26">
1414
-
1442
+ <li class="covered" data-hits="1" data-linenumber="26">
1443
+ <span class="hits">1</span>
1415
1444
 
1416
- <code class="ruby"> # Non-Documented receipt keys/values</code>
1445
+ <code class="ruby"> attr_reader :price_consent_status</code>
1417
1446
  </li>
1418
1447
 
1419
- <li class="covered" data-hits="1" data-linenumber="27">
1420
- <span class="hits">1</span>
1448
+ <li class="never" data-hits="" data-linenumber="27">
1421
1449
 
1422
- <code class="ruby"> attr_reader :receipt_type</code>
1450
+
1451
+ <code class="ruby"></code>
1423
1452
  </li>
1424
1453
 
1425
- <li class="covered" data-hits="1" data-linenumber="28">
1426
- <span class="hits">1</span>
1454
+ <li class="never" data-hits="" data-linenumber="28">
1427
1455
 
1428
- <code class="ruby"> attr_reader :adam_id</code>
1456
+
1457
+ <code class="ruby"> # For a transaction that was cancelled, the reason for cancellation.</code>
1429
1458
  </li>
1430
1459
 
1431
- <li class="covered" data-hits="1" data-linenumber="29">
1432
- <span class="hits">1</span>
1460
+ <li class="never" data-hits="" data-linenumber="29">
1433
1461
 
1434
- <code class="ruby"> attr_reader :download_id</code>
1462
+
1463
+ <code class="ruby"> # Use this value along with the cancellation date to identify possible issues in your app that may lead customers to contact Apple customer support.</code>
1435
1464
  </li>
1436
1465
 
1437
1466
  <li class="covered" data-hits="1" data-linenumber="30">
1438
1467
  <span class="hits">1</span>
1439
1468
 
1440
- <code class="ruby"> attr_reader :requested_at</code>
1469
+ <code class="ruby"> attr_reader :cancellation_reason</code>
1441
1470
  </li>
1442
1471
 
1443
1472
  <li class="never" data-hits="" data-linenumber="31">
@@ -1449,31 +1478,31 @@
1449
1478
  <li class="never" data-hits="" data-linenumber="32">
1450
1479
 
1451
1480
 
1452
- <code class="ruby"> # Original json response from AppStore</code>
1481
+ <code class="ruby"></code>
1453
1482
  </li>
1454
1483
 
1455
1484
  <li class="covered" data-hits="1" data-linenumber="33">
1456
1485
  <span class="hits">1</span>
1457
1486
 
1458
- <code class="ruby"> attr_reader :original_json_response</code>
1487
+ <code class="ruby"> def initialize(attributes)</code>
1459
1488
  </li>
1460
1489
 
1461
- <li class="never" data-hits="" data-linenumber="34">
1462
-
1490
+ <li class="covered" data-hits="7" data-linenumber="34">
1491
+ <span class="hits">7</span>
1463
1492
 
1464
- <code class="ruby"></code>
1493
+ <code class="ruby"> @expiration_intent = Integer(attributes[&#39;expiration_intent&#39;]) if attributes[&#39;expiration_intent&#39;]</code>
1465
1494
  </li>
1466
1495
 
1467
- <li class="never" data-hits="" data-linenumber="35">
1496
+ <li class="covered" data-hits="7" data-linenumber="35">
1497
+ <span class="hits">7</span>
1468
1498
 
1469
-
1470
- <code class="ruby"></code>
1499
+ <code class="ruby"> @auto_renew_status = Integer(attributes[&#39;auto_renew_status&#39;]) if attributes[&#39;auto_renew_status&#39;]</code>
1471
1500
  </li>
1472
1501
 
1473
- <li class="covered" data-hits="1" data-linenumber="36">
1474
- <span class="hits">1</span>
1502
+ <li class="covered" data-hits="7" data-linenumber="36">
1503
+ <span class="hits">7</span>
1475
1504
 
1476
- <code class="ruby"> attr_accessor :latest_receipt_info</code>
1505
+ <code class="ruby"> @auto_renew_product_id = attributes[&#39;auto_renew_product_id&#39;]</code>
1477
1506
  </li>
1478
1507
 
1479
1508
  <li class="never" data-hits="" data-linenumber="37">
@@ -1482,661 +1511,1148 @@
1482
1511
  <code class="ruby"></code>
1483
1512
  </li>
1484
1513
 
1485
- <li class="covered" data-hits="1" data-linenumber="38">
1486
- <span class="hits">1</span>
1514
+ <li class="covered" data-hits="7" data-linenumber="38">
1515
+ <span class="hits">7</span>
1487
1516
 
1488
- <code class="ruby"> def initialize(attributes = {})</code>
1517
+ <code class="ruby"> if attributes[&#39;is_in_billing_retry_period&#39;]</code>
1489
1518
  </li>
1490
1519
 
1491
- <li class="covered" data-hits="6" data-linenumber="39">
1492
- <span class="hits">6</span>
1520
+ <li class="covered" data-hits="7" data-linenumber="39">
1521
+ <span class="hits">7</span>
1493
1522
 
1494
- <code class="ruby"> @original_json_response = attributes[&#39;original_json_response&#39;]</code>
1523
+ <code class="ruby"> @is_in_billing_retry_period = (attributes[is_in_billing_retry_period] == &quot;1&quot; ? true : false)</code>
1495
1524
  </li>
1496
1525
 
1497
1526
  <li class="never" data-hits="" data-linenumber="40">
1498
1527
 
1499
1528
 
1500
- <code class="ruby"></code>
1529
+ <code class="ruby"> end</code>
1501
1530
  </li>
1502
1531
 
1503
- <li class="covered" data-hits="6" data-linenumber="41">
1504
- <span class="hits">6</span>
1532
+ <li class="never" data-hits="" data-linenumber="41">
1505
1533
 
1506
- <code class="ruby"> @bundle_id = attributes[&#39;bundle_id&#39;]</code>
1534
+
1535
+ <code class="ruby"></code>
1507
1536
  </li>
1508
1537
 
1509
- <li class="covered" data-hits="6" data-linenumber="42">
1510
- <span class="hits">6</span>
1538
+ <li class="covered" data-hits="7" data-linenumber="42">
1539
+ <span class="hits">7</span>
1511
1540
 
1512
- <code class="ruby"> @application_version = attributes[&#39;application_version&#39;]</code>
1541
+ <code class="ruby"> @product_id = attributes[&#39;product_id&#39;]</code>
1513
1542
  </li>
1514
1543
 
1515
- <li class="covered" data-hits="6" data-linenumber="43">
1516
- <span class="hits">6</span>
1544
+ <li class="never" data-hits="" data-linenumber="43">
1517
1545
 
1518
- <code class="ruby"> @original_application_version = attributes[&#39;original_application_version&#39;]</code>
1546
+
1547
+ <code class="ruby"></code>
1519
1548
  </li>
1520
1549
 
1521
- <li class="covered" data-hits="6" data-linenumber="44">
1522
- <span class="hits">6</span>
1550
+ <li class="covered" data-hits="7" data-linenumber="44">
1551
+ <span class="hits">7</span>
1523
1552
 
1524
- <code class="ruby"> if attributes[&#39;original_purchase_date&#39;]</code>
1553
+ <code class="ruby"> @price_consent_status = Integer(attributes[&#39;price_consent_status&#39;]) if attributes[&#39;price_consent_status&#39;]</code>
1525
1554
  </li>
1526
1555
 
1527
- <li class="covered" data-hits="5" data-linenumber="45">
1528
- <span class="hits">5</span>
1556
+ <li class="covered" data-hits="7" data-linenumber="45">
1557
+ <span class="hits">7</span>
1529
1558
 
1530
- <code class="ruby"> @original_purchase_date = DateTime.parse(attributes[&#39;original_purchase_date&#39;])</code>
1559
+ <code class="ruby"> @cancellation_reason = Integer(attributes[&#39;cancellation_reason&#39;]) if attributes[&#39;cancellation_reason&#39;]</code>
1531
1560
  </li>
1532
1561
 
1533
1562
  <li class="never" data-hits="" data-linenumber="46">
1534
1563
 
1535
1564
 
1536
- <code class="ruby"> end</code>
1565
+ <code class="ruby"> end</code>
1537
1566
  </li>
1538
1567
 
1539
- <li class="covered" data-hits="6" data-linenumber="47">
1540
- <span class="hits">6</span>
1568
+ <li class="never" data-hits="" data-linenumber="47">
1541
1569
 
1542
- <code class="ruby"> if attributes[&#39;expiration_date&#39;]</code>
1570
+
1571
+ <code class="ruby"></code>
1543
1572
  </li>
1544
1573
 
1545
- <li class="covered" data-hits="5" data-linenumber="48">
1546
- <span class="hits">5</span>
1574
+ <li class="covered" data-hits="1" data-linenumber="48">
1575
+ <span class="hits">1</span>
1547
1576
 
1548
- <code class="ruby"> @expires_at = Time.at(attributes[&#39;expiration_date&#39;].to_i / 1000).to_datetime</code>
1577
+ <code class="ruby"> def to_hash</code>
1549
1578
  </li>
1550
1579
 
1551
1580
  <li class="never" data-hits="" data-linenumber="49">
1552
1581
 
1553
1582
 
1554
- <code class="ruby"> end</code>
1583
+ <code class="ruby"> {</code>
1555
1584
  </li>
1556
1585
 
1557
1586
  <li class="never" data-hits="" data-linenumber="50">
1558
1587
 
1559
1588
 
1560
- <code class="ruby"></code>
1561
- </li>
1562
-
1563
- <li class="covered" data-hits="6" data-linenumber="51">
1564
- <span class="hits">6</span>
1565
-
1566
- <code class="ruby"> @receipt_type = attributes[&#39;receipt_type&#39;]</code>
1567
- </li>
1568
-
1569
- <li class="covered" data-hits="6" data-linenumber="52">
1570
- <span class="hits">6</span>
1571
-
1572
- <code class="ruby"> @adam_id = attributes[&#39;adam_id&#39;]</code>
1589
+ <code class="ruby"> expiration_intent: @expiration_intent,</code>
1573
1590
  </li>
1574
1591
 
1575
- <li class="covered" data-hits="6" data-linenumber="53">
1576
- <span class="hits">6</span>
1592
+ <li class="never" data-hits="" data-linenumber="51">
1577
1593
 
1578
- <code class="ruby"> @download_id = attributes[&#39;download_id&#39;]</code>
1579
- </li>
1580
-
1581
- <li class="covered" data-hits="6" data-linenumber="54">
1582
- <span class="hits">6</span>
1583
1594
 
1584
- <code class="ruby"> @requested_at = DateTime.parse(attributes[&#39;request_date&#39;]) if attributes[&#39;request_date&#39;]</code>
1595
+ <code class="ruby"> auto_renew_status: @auto_renew_status,</code>
1585
1596
  </li>
1586
1597
 
1587
- <li class="never" data-hits="" data-linenumber="55">
1598
+ <li class="never" data-hits="" data-linenumber="52">
1588
1599
 
1589
1600
 
1590
- <code class="ruby"></code>
1601
+ <code class="ruby"> auto_renew_product_id: @auto_renew_product_id,</code>
1591
1602
  </li>
1592
1603
 
1593
- <li class="covered" data-hits="6" data-linenumber="56">
1594
- <span class="hits">6</span>
1604
+ <li class="never" data-hits="" data-linenumber="53">
1595
1605
 
1596
- <code class="ruby"> @in_app = []</code>
1597
- </li>
1598
-
1599
- <li class="covered" data-hits="6" data-linenumber="57">
1600
- <span class="hits">6</span>
1601
1606
 
1602
- <code class="ruby"> if attributes[&#39;in_app&#39;]</code>
1607
+ <code class="ruby"> is_in_billing_retry_period: @is_in_billing_retry_period,</code>
1603
1608
  </li>
1604
1609
 
1605
- <li class="covered" data-hits="5" data-linenumber="58">
1606
- <span class="hits">5</span>
1610
+ <li class="never" data-hits="" data-linenumber="54">
1607
1611
 
1608
- <code class="ruby"> attributes[&#39;in_app&#39;].each do |in_app_purchase_attributes|</code>
1609
- </li>
1610
-
1611
- <li class="covered" data-hits="5" data-linenumber="59">
1612
- <span class="hits">5</span>
1613
1612
 
1614
- <code class="ruby"> @in_app &lt;&lt; InAppReceipt.new(in_app_purchase_attributes)</code>
1613
+ <code class="ruby"> product_id: @product_id,</code>
1615
1614
  </li>
1616
1615
 
1617
- <li class="never" data-hits="" data-linenumber="60">
1616
+ <li class="never" data-hits="" data-linenumber="55">
1618
1617
 
1619
1618
 
1620
- <code class="ruby"> end</code>
1619
+ <code class="ruby"> price_consent_status: @price_consent_status,</code>
1621
1620
  </li>
1622
1621
 
1623
- <li class="never" data-hits="" data-linenumber="61">
1622
+ <li class="never" data-hits="" data-linenumber="56">
1624
1623
 
1625
1624
 
1626
- <code class="ruby"> end</code>
1625
+ <code class="ruby"> cancellation_reason: @cancellation_reason</code>
1627
1626
  </li>
1628
1627
 
1629
- <li class="never" data-hits="" data-linenumber="62">
1628
+ <li class="covered" data-hits="2" data-linenumber="57">
1629
+ <span class="hits">2</span>
1630
1630
 
1631
-
1632
- <code class="ruby"></code>
1631
+ <code class="ruby"> }</code>
1633
1632
  </li>
1634
1633
 
1635
- <li class="never" data-hits="" data-linenumber="63">
1634
+ <li class="never" data-hits="" data-linenumber="58">
1636
1635
 
1637
1636
 
1638
1637
  <code class="ruby"> end</code>
1639
1638
  </li>
1640
1639
 
1641
- <li class="never" data-hits="" data-linenumber="64">
1640
+ <li class="never" data-hits="" data-linenumber="59">
1642
1641
 
1643
1642
 
1644
1643
  <code class="ruby"></code>
1645
1644
  </li>
1646
1645
 
1647
- <li class="covered" data-hits="1" data-linenumber="65">
1646
+ <li class="covered" data-hits="1" data-linenumber="60">
1648
1647
  <span class="hits">1</span>
1649
1648
 
1650
- <code class="ruby"> def to_hash</code>
1649
+ <code class="ruby"> alias_method :to_h, :to_hash</code>
1651
1650
  </li>
1652
1651
 
1653
- <li class="never" data-hits="" data-linenumber="66">
1652
+ <li class="never" data-hits="" data-linenumber="61">
1654
1653
 
1655
1654
 
1656
- <code class="ruby"> {</code>
1655
+ <code class="ruby"></code>
1657
1656
  </li>
1658
1657
 
1659
- <li class="never" data-hits="" data-linenumber="67">
1660
-
1658
+ <li class="covered" data-hits="1" data-linenumber="62">
1659
+ <span class="hits">1</span>
1661
1660
 
1662
- <code class="ruby"> :bundle_id =&gt; @bundle_id,</code>
1661
+ <code class="ruby"> def to_json</code>
1663
1662
  </li>
1664
1663
 
1665
- <li class="never" data-hits="" data-linenumber="68">
1664
+ <li class="missed" data-hits="0" data-linenumber="63">
1666
1665
 
1667
1666
 
1668
- <code class="ruby"> :application_version =&gt; @application_version,</code>
1667
+ <code class="ruby"> self.to_hash.to_json</code>
1669
1668
  </li>
1670
1669
 
1671
- <li class="never" data-hits="" data-linenumber="69">
1670
+ <li class="never" data-hits="" data-linenumber="64">
1672
1671
 
1673
1672
 
1674
- <code class="ruby"> :original_application_version =&gt; @original_application_version,</code>
1673
+ <code class="ruby"> end</code>
1675
1674
  </li>
1676
1675
 
1677
- <li class="missed" data-hits="0" data-linenumber="70">
1676
+ <li class="never" data-hits="" data-linenumber="65">
1678
1677
 
1679
1678
 
1680
- <code class="ruby"> :original_purchase_date =&gt; (@original_purchase_date.httpdate rescue nil),</code>
1679
+ <code class="ruby"> end</code>
1681
1680
  </li>
1682
1681
 
1683
- <li class="missed" data-hits="0" data-linenumber="71">
1682
+ <li class="never" data-hits="" data-linenumber="66">
1684
1683
 
1685
1684
 
1686
- <code class="ruby"> :expires_at =&gt; (@expires_at.httpdate rescue nil),</code>
1685
+ <code class="ruby">end</code>
1687
1686
  </li>
1688
1687
 
1689
- <li class="never" data-hits="" data-linenumber="72">
1690
-
1691
-
1692
- <code class="ruby"> :receipt_type =&gt; @receipt_type,</code>
1693
- </li>
1688
+ </ol>
1689
+ </pre>
1690
+ </div>
1691
+
1692
+
1693
+ <div class="source_table" id="10dfdb14e321a7bb364075307e5a80a2a62317af">
1694
+ <div class="header">
1695
+ <h3>lib/venice/receipt.rb</h3>
1696
+ <h4><span class="red">74.07 %</span> covered</h4>
1697
+ <div>
1698
+ <b>81</b> relevant lines.
1699
+ <span class="green"><b>60</b> lines covered</span> and
1700
+ <span class="red"><b>21</b> lines missed.</span>
1701
+ </div>
1702
+ </div>
1703
+
1704
+ <pre>
1705
+ <ol>
1706
+
1707
+ <li class="covered" data-hits="1" data-linenumber="1">
1708
+ <span class="hits">1</span>
1709
+
1710
+ <code class="ruby">require &#39;time&#39;</code>
1711
+ </li>
1712
+
1713
+ <li class="never" data-hits="" data-linenumber="2">
1714
+
1715
+
1716
+ <code class="ruby"></code>
1717
+ </li>
1718
+
1719
+ <li class="covered" data-hits="1" data-linenumber="3">
1720
+ <span class="hits">1</span>
1721
+
1722
+ <code class="ruby">module Venice</code>
1723
+ </li>
1724
+
1725
+ <li class="covered" data-hits="1" data-linenumber="4">
1726
+ <span class="hits">1</span>
1727
+
1728
+ <code class="ruby"> class Receipt</code>
1729
+ </li>
1730
+
1731
+ <li class="never" data-hits="" data-linenumber="5">
1732
+
1733
+
1734
+ <code class="ruby"> # For detailed explanations on these keys/values, see</code>
1735
+ </li>
1736
+
1737
+ <li class="never" data-hits="" data-linenumber="6">
1738
+
1739
+
1740
+ <code class="ruby"> # https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ReceiptFields.html#//apple_ref/doc/uid/TP40010573-CH106-SW1</code>
1741
+ </li>
1742
+
1743
+ <li class="never" data-hits="" data-linenumber="7">
1744
+
1745
+
1746
+ <code class="ruby"></code>
1747
+ </li>
1748
+
1749
+ <li class="never" data-hits="" data-linenumber="8">
1750
+
1751
+
1752
+ <code class="ruby"> # The app’s bundle identifier.</code>
1753
+ </li>
1754
+
1755
+ <li class="covered" data-hits="1" data-linenumber="9">
1756
+ <span class="hits">1</span>
1757
+
1758
+ <code class="ruby"> attr_reader :bundle_id</code>
1759
+ </li>
1760
+
1761
+ <li class="never" data-hits="" data-linenumber="10">
1762
+
1763
+
1764
+ <code class="ruby"></code>
1765
+ </li>
1766
+
1767
+ <li class="never" data-hits="" data-linenumber="11">
1768
+
1769
+
1770
+ <code class="ruby"> # The app’s version number.</code>
1771
+ </li>
1772
+
1773
+ <li class="covered" data-hits="1" data-linenumber="12">
1774
+ <span class="hits">1</span>
1775
+
1776
+ <code class="ruby"> attr_reader :application_version</code>
1777
+ </li>
1778
+
1779
+ <li class="never" data-hits="" data-linenumber="13">
1780
+
1781
+
1782
+ <code class="ruby"></code>
1783
+ </li>
1784
+
1785
+ <li class="never" data-hits="" data-linenumber="14">
1786
+
1787
+
1788
+ <code class="ruby"> # The receipt for an in-app purchase.</code>
1789
+ </li>
1790
+
1791
+ <li class="covered" data-hits="1" data-linenumber="15">
1792
+ <span class="hits">1</span>
1793
+
1794
+ <code class="ruby"> attr_reader :in_app</code>
1795
+ </li>
1796
+
1797
+ <li class="never" data-hits="" data-linenumber="16">
1798
+
1799
+
1800
+ <code class="ruby"></code>
1801
+ </li>
1802
+
1803
+ <li class="never" data-hits="" data-linenumber="17">
1804
+
1805
+
1806
+ <code class="ruby"> # The version of the app that was originally purchased.</code>
1807
+ </li>
1808
+
1809
+ <li class="covered" data-hits="1" data-linenumber="18">
1810
+ <span class="hits">1</span>
1811
+
1812
+ <code class="ruby"> attr_reader :original_application_version</code>
1813
+ </li>
1814
+
1815
+ <li class="never" data-hits="" data-linenumber="19">
1816
+
1817
+
1818
+ <code class="ruby"></code>
1819
+ </li>
1820
+
1821
+ <li class="never" data-hits="" data-linenumber="20">
1822
+
1823
+
1824
+ <code class="ruby"> # The original purchase date</code>
1825
+ </li>
1826
+
1827
+ <li class="covered" data-hits="1" data-linenumber="21">
1828
+ <span class="hits">1</span>
1829
+
1830
+ <code class="ruby"> attr_reader :original_purchase_date</code>
1831
+ </li>
1832
+
1833
+ <li class="never" data-hits="" data-linenumber="22">
1834
+
1835
+
1836
+ <code class="ruby"></code>
1837
+ </li>
1838
+
1839
+ <li class="never" data-hits="" data-linenumber="23">
1840
+
1841
+
1842
+ <code class="ruby"> # The date that the app receipt expires.</code>
1843
+ </li>
1844
+
1845
+ <li class="covered" data-hits="1" data-linenumber="24">
1846
+ <span class="hits">1</span>
1847
+
1848
+ <code class="ruby"> attr_reader :expires_at</code>
1849
+ </li>
1850
+
1851
+ <li class="never" data-hits="" data-linenumber="25">
1852
+
1853
+
1854
+ <code class="ruby"></code>
1855
+ </li>
1856
+
1857
+ <li class="never" data-hits="" data-linenumber="26">
1858
+
1859
+
1860
+ <code class="ruby"> # Non-Documented receipt keys/values</code>
1861
+ </li>
1862
+
1863
+ <li class="covered" data-hits="1" data-linenumber="27">
1864
+ <span class="hits">1</span>
1865
+
1866
+ <code class="ruby"> attr_reader :receipt_type</code>
1867
+ </li>
1868
+
1869
+ <li class="covered" data-hits="1" data-linenumber="28">
1870
+ <span class="hits">1</span>
1871
+
1872
+ <code class="ruby"> attr_reader :adam_id</code>
1873
+ </li>
1874
+
1875
+ <li class="covered" data-hits="1" data-linenumber="29">
1876
+ <span class="hits">1</span>
1877
+
1878
+ <code class="ruby"> attr_reader :download_id</code>
1879
+ </li>
1880
+
1881
+ <li class="covered" data-hits="1" data-linenumber="30">
1882
+ <span class="hits">1</span>
1883
+
1884
+ <code class="ruby"> attr_reader :requested_at</code>
1885
+ </li>
1886
+
1887
+ <li class="never" data-hits="" data-linenumber="31">
1888
+
1889
+
1890
+ <code class="ruby"></code>
1891
+ </li>
1892
+
1893
+ <li class="never" data-hits="" data-linenumber="32">
1894
+
1895
+
1896
+ <code class="ruby"> # Original json response from AppStore</code>
1897
+ </li>
1898
+
1899
+ <li class="covered" data-hits="1" data-linenumber="33">
1900
+ <span class="hits">1</span>
1901
+
1902
+ <code class="ruby"> attr_reader :original_json_response</code>
1903
+ </li>
1904
+
1905
+ <li class="never" data-hits="" data-linenumber="34">
1906
+
1907
+
1908
+ <code class="ruby"></code>
1909
+ </li>
1910
+
1911
+ <li class="covered" data-hits="1" data-linenumber="35">
1912
+ <span class="hits">1</span>
1913
+
1914
+ <code class="ruby"> attr_accessor :latest_receipt_info</code>
1915
+ </li>
1916
+
1917
+ <li class="never" data-hits="" data-linenumber="36">
1918
+
1919
+
1920
+ <code class="ruby"></code>
1921
+ </li>
1922
+
1923
+ <li class="never" data-hits="" data-linenumber="37">
1924
+
1925
+
1926
+ <code class="ruby"> # Information about the status of the customer&#39;s auto-renewable subscriptions</code>
1927
+ </li>
1928
+
1929
+ <li class="covered" data-hits="1" data-linenumber="38">
1930
+ <span class="hits">1</span>
1931
+
1932
+ <code class="ruby"> attr_reader :pending_renewal_info</code>
1933
+ </li>
1934
+
1935
+ <li class="never" data-hits="" data-linenumber="39">
1936
+
1937
+
1938
+ <code class="ruby"></code>
1939
+ </li>
1940
+
1941
+ <li class="covered" data-hits="1" data-linenumber="40">
1942
+ <span class="hits">1</span>
1943
+
1944
+ <code class="ruby"> def initialize(attributes = {})</code>
1945
+ </li>
1946
+
1947
+ <li class="covered" data-hits="7" data-linenumber="41">
1948
+ <span class="hits">7</span>
1949
+
1950
+ <code class="ruby"> @original_json_response = attributes[&#39;original_json_response&#39;]</code>
1951
+ </li>
1952
+
1953
+ <li class="never" data-hits="" data-linenumber="42">
1954
+
1955
+
1956
+ <code class="ruby"></code>
1957
+ </li>
1958
+
1959
+ <li class="covered" data-hits="7" data-linenumber="43">
1960
+ <span class="hits">7</span>
1961
+
1962
+ <code class="ruby"> @bundle_id = attributes[&#39;bundle_id&#39;]</code>
1963
+ </li>
1964
+
1965
+ <li class="covered" data-hits="7" data-linenumber="44">
1966
+ <span class="hits">7</span>
1967
+
1968
+ <code class="ruby"> @application_version = attributes[&#39;application_version&#39;]</code>
1969
+ </li>
1970
+
1971
+ <li class="covered" data-hits="7" data-linenumber="45">
1972
+ <span class="hits">7</span>
1973
+
1974
+ <code class="ruby"> @original_application_version = attributes[&#39;original_application_version&#39;]</code>
1975
+ </li>
1976
+
1977
+ <li class="covered" data-hits="7" data-linenumber="46">
1978
+ <span class="hits">7</span>
1979
+
1980
+ <code class="ruby"> if attributes[&#39;original_purchase_date&#39;]</code>
1981
+ </li>
1982
+
1983
+ <li class="covered" data-hits="6" data-linenumber="47">
1984
+ <span class="hits">6</span>
1985
+
1986
+ <code class="ruby"> @original_purchase_date = DateTime.parse(attributes[&#39;original_purchase_date&#39;])</code>
1987
+ </li>
1988
+
1989
+ <li class="never" data-hits="" data-linenumber="48">
1990
+
1991
+
1992
+ <code class="ruby"> end</code>
1993
+ </li>
1994
+
1995
+ <li class="covered" data-hits="7" data-linenumber="49">
1996
+ <span class="hits">7</span>
1997
+
1998
+ <code class="ruby"> if attributes[&#39;expiration_date&#39;]</code>
1999
+ </li>
2000
+
2001
+ <li class="covered" data-hits="6" data-linenumber="50">
2002
+ <span class="hits">6</span>
2003
+
2004
+ <code class="ruby"> @expires_at = Time.at(attributes[&#39;expiration_date&#39;].to_i / 1000).to_datetime</code>
2005
+ </li>
2006
+
2007
+ <li class="never" data-hits="" data-linenumber="51">
2008
+
2009
+
2010
+ <code class="ruby"> end</code>
2011
+ </li>
2012
+
2013
+ <li class="never" data-hits="" data-linenumber="52">
2014
+
2015
+
2016
+ <code class="ruby"></code>
2017
+ </li>
2018
+
2019
+ <li class="covered" data-hits="7" data-linenumber="53">
2020
+ <span class="hits">7</span>
2021
+
2022
+ <code class="ruby"> @receipt_type = attributes[&#39;receipt_type&#39;]</code>
2023
+ </li>
2024
+
2025
+ <li class="covered" data-hits="7" data-linenumber="54">
2026
+ <span class="hits">7</span>
2027
+
2028
+ <code class="ruby"> @adam_id = attributes[&#39;adam_id&#39;]</code>
2029
+ </li>
2030
+
2031
+ <li class="covered" data-hits="7" data-linenumber="55">
2032
+ <span class="hits">7</span>
2033
+
2034
+ <code class="ruby"> @download_id = attributes[&#39;download_id&#39;]</code>
2035
+ </li>
2036
+
2037
+ <li class="covered" data-hits="7" data-linenumber="56">
2038
+ <span class="hits">7</span>
2039
+
2040
+ <code class="ruby"> @requested_at = DateTime.parse(attributes[&#39;request_date&#39;]) if attributes[&#39;request_date&#39;]</code>
2041
+ </li>
2042
+
2043
+ <li class="never" data-hits="" data-linenumber="57">
2044
+
2045
+
2046
+ <code class="ruby"></code>
2047
+ </li>
2048
+
2049
+ <li class="covered" data-hits="7" data-linenumber="58">
2050
+ <span class="hits">7</span>
2051
+
2052
+ <code class="ruby"> @in_app = []</code>
2053
+ </li>
2054
+
2055
+ <li class="covered" data-hits="7" data-linenumber="59">
2056
+ <span class="hits">7</span>
2057
+
2058
+ <code class="ruby"> if attributes[&#39;in_app&#39;]</code>
2059
+ </li>
2060
+
2061
+ <li class="covered" data-hits="6" data-linenumber="60">
2062
+ <span class="hits">6</span>
2063
+
2064
+ <code class="ruby"> attributes[&#39;in_app&#39;].each do |in_app_purchase_attributes|</code>
2065
+ </li>
2066
+
2067
+ <li class="covered" data-hits="6" data-linenumber="61">
2068
+ <span class="hits">6</span>
2069
+
2070
+ <code class="ruby"> @in_app &lt;&lt; InAppReceipt.new(in_app_purchase_attributes)</code>
2071
+ </li>
2072
+
2073
+ <li class="never" data-hits="" data-linenumber="62">
2074
+
2075
+
2076
+ <code class="ruby"> end</code>
2077
+ </li>
2078
+
2079
+ <li class="never" data-hits="" data-linenumber="63">
2080
+
2081
+
2082
+ <code class="ruby"> end</code>
2083
+ </li>
2084
+
2085
+ <li class="never" data-hits="" data-linenumber="64">
2086
+
2087
+
2088
+ <code class="ruby"></code>
2089
+ </li>
2090
+
2091
+ <li class="covered" data-hits="7" data-linenumber="65">
2092
+ <span class="hits">7</span>
2093
+
2094
+ <code class="ruby"> @pending_renewal_info = []</code>
2095
+ </li>
2096
+
2097
+ <li class="covered" data-hits="7" data-linenumber="66">
2098
+ <span class="hits">7</span>
2099
+
2100
+ <code class="ruby"> if original_json_response &amp;&amp; original_json_response[&#39;pending_renewal_info&#39;]</code>
2101
+ </li>
2102
+
2103
+ <li class="covered" data-hits="5" data-linenumber="67">
2104
+ <span class="hits">5</span>
2105
+
2106
+ <code class="ruby"> original_json_response[&#39;pending_renewal_info&#39;].each do |pending_renewal_attributes|</code>
2107
+ </li>
2108
+
2109
+ <li class="covered" data-hits="5" data-linenumber="68">
2110
+ <span class="hits">5</span>
2111
+
2112
+ <code class="ruby"> @pending_renewal_info &lt;&lt; PendingRenewalInfo.new(pending_renewal_attributes)</code>
2113
+ </li>
2114
+
2115
+ <li class="never" data-hits="" data-linenumber="69">
2116
+
2117
+
2118
+ <code class="ruby"> end</code>
2119
+ </li>
2120
+
2121
+ <li class="never" data-hits="" data-linenumber="70">
2122
+
2123
+
2124
+ <code class="ruby"> end</code>
2125
+ </li>
2126
+
2127
+ <li class="never" data-hits="" data-linenumber="71">
2128
+
2129
+
2130
+ <code class="ruby"></code>
2131
+ </li>
2132
+
2133
+ <li class="never" data-hits="" data-linenumber="72">
2134
+
2135
+
2136
+ <code class="ruby"> end</code>
2137
+ </li>
1694
2138
 
1695
2139
  <li class="never" data-hits="" data-linenumber="73">
1696
2140
 
1697
2141
 
2142
+ <code class="ruby"></code>
2143
+ </li>
2144
+
2145
+ <li class="covered" data-hits="1" data-linenumber="74">
2146
+ <span class="hits">1</span>
2147
+
2148
+ <code class="ruby"> def to_hash</code>
2149
+ </li>
2150
+
2151
+ <li class="never" data-hits="" data-linenumber="75">
2152
+
2153
+
2154
+ <code class="ruby"> {</code>
2155
+ </li>
2156
+
2157
+ <li class="never" data-hits="" data-linenumber="76">
2158
+
2159
+
2160
+ <code class="ruby"> :bundle_id =&gt; @bundle_id,</code>
2161
+ </li>
2162
+
2163
+ <li class="never" data-hits="" data-linenumber="77">
2164
+
2165
+
2166
+ <code class="ruby"> :application_version =&gt; @application_version,</code>
2167
+ </li>
2168
+
2169
+ <li class="never" data-hits="" data-linenumber="78">
2170
+
2171
+
2172
+ <code class="ruby"> :original_application_version =&gt; @original_application_version,</code>
2173
+ </li>
2174
+
2175
+ <li class="covered" data-hits="1" data-linenumber="79">
2176
+ <span class="hits">1</span>
2177
+
2178
+ <code class="ruby"> :original_purchase_date =&gt; (@original_purchase_date.httpdate rescue nil),</code>
2179
+ </li>
2180
+
2181
+ <li class="covered" data-hits="1" data-linenumber="80">
2182
+ <span class="hits">1</span>
2183
+
2184
+ <code class="ruby"> :expires_at =&gt; (@expires_at.httpdate rescue nil),</code>
2185
+ </li>
2186
+
2187
+ <li class="never" data-hits="" data-linenumber="81">
2188
+
2189
+
2190
+ <code class="ruby"> :receipt_type =&gt; @receipt_type,</code>
2191
+ </li>
2192
+
2193
+ <li class="never" data-hits="" data-linenumber="82">
2194
+
2195
+
1698
2196
  <code class="ruby"> :adam_id =&gt; @adam_id,</code>
1699
2197
  </li>
1700
2198
 
1701
- <li class="never" data-hits="" data-linenumber="74">
2199
+ <li class="never" data-hits="" data-linenumber="83">
1702
2200
 
1703
2201
 
1704
2202
  <code class="ruby"> :download_id =&gt; @download_id,</code>
1705
2203
  </li>
1706
2204
 
1707
- <li class="missed" data-hits="0" data-linenumber="75">
1708
-
2205
+ <li class="covered" data-hits="1" data-linenumber="84">
2206
+ <span class="hits">1</span>
1709
2207
 
1710
2208
  <code class="ruby"> :requested_at =&gt; (@requested_at.httpdate rescue nil),</code>
1711
2209
  </li>
1712
2210
 
1713
- <li class="missed" data-hits="0" data-linenumber="76">
1714
-
2211
+ <li class="covered" data-hits="1" data-linenumber="85">
2212
+ <span class="hits">1</span>
1715
2213
 
1716
2214
  <code class="ruby"> :in_app =&gt; @in_app.map{|iap| iap.to_h },</code>
1717
2215
  </li>
1718
2216
 
1719
- <li class="never" data-hits="" data-linenumber="77">
2217
+ <li class="covered" data-hits="1" data-linenumber="86">
2218
+ <span class="hits">1</span>
2219
+
2220
+ <code class="ruby"> :pending_renewal_info =&gt; @pending_renewal_info.map { |pend_info| pend_info.to_h },</code>
2221
+ </li>
2222
+
2223
+ <li class="never" data-hits="" data-linenumber="87">
1720
2224
 
1721
2225
 
1722
2226
  <code class="ruby"> :latest_receipt_info =&gt; @latest_receipt_info</code>
1723
2227
  </li>
1724
2228
 
1725
- <li class="missed" data-hits="0" data-linenumber="78">
1726
-
2229
+ <li class="covered" data-hits="1" data-linenumber="88">
2230
+ <span class="hits">1</span>
1727
2231
 
1728
2232
  <code class="ruby"> }</code>
1729
2233
  </li>
1730
2234
 
1731
- <li class="never" data-hits="" data-linenumber="79">
2235
+ <li class="never" data-hits="" data-linenumber="89">
1732
2236
 
1733
2237
 
1734
2238
  <code class="ruby"> end</code>
1735
2239
  </li>
1736
2240
 
1737
- <li class="covered" data-hits="1" data-linenumber="80">
2241
+ <li class="covered" data-hits="1" data-linenumber="90">
1738
2242
  <span class="hits">1</span>
1739
2243
 
1740
2244
  <code class="ruby"> alias_method :to_h, :to_hash</code>
1741
2245
  </li>
1742
2246
 
1743
- <li class="never" data-hits="" data-linenumber="81">
2247
+ <li class="never" data-hits="" data-linenumber="91">
1744
2248
 
1745
2249
 
1746
2250
  <code class="ruby"></code>
1747
2251
  </li>
1748
2252
 
1749
- <li class="covered" data-hits="1" data-linenumber="82">
2253
+ <li class="covered" data-hits="1" data-linenumber="92">
1750
2254
  <span class="hits">1</span>
1751
2255
 
1752
2256
  <code class="ruby"> def to_json</code>
1753
2257
  </li>
1754
2258
 
1755
- <li class="missed" data-hits="0" data-linenumber="83">
2259
+ <li class="missed" data-hits="0" data-linenumber="93">
1756
2260
 
1757
2261
 
1758
2262
  <code class="ruby"> self.to_hash.to_json</code>
1759
2263
  </li>
1760
2264
 
1761
- <li class="never" data-hits="" data-linenumber="84">
2265
+ <li class="never" data-hits="" data-linenumber="94">
1762
2266
 
1763
2267
 
1764
2268
  <code class="ruby"> end</code>
1765
2269
  </li>
1766
2270
 
1767
- <li class="never" data-hits="" data-linenumber="85">
2271
+ <li class="never" data-hits="" data-linenumber="95">
1768
2272
 
1769
2273
 
1770
2274
  <code class="ruby"></code>
1771
2275
  </li>
1772
2276
 
1773
- <li class="covered" data-hits="1" data-linenumber="86">
2277
+ <li class="covered" data-hits="1" data-linenumber="96">
1774
2278
  <span class="hits">1</span>
1775
2279
 
1776
2280
  <code class="ruby"> class &lt;&lt; self</code>
1777
2281
  </li>
1778
2282
 
1779
- <li class="covered" data-hits="1" data-linenumber="87">
2283
+ <li class="covered" data-hits="1" data-linenumber="97">
1780
2284
  <span class="hits">1</span>
1781
2285
 
1782
2286
  <code class="ruby"> def verify(data, options = {})</code>
1783
2287
  </li>
1784
2288
 
1785
- <li class="covered" data-hits="1" data-linenumber="88">
2289
+ <li class="covered" data-hits="1" data-linenumber="98">
1786
2290
  <span class="hits">1</span>
1787
2291
 
1788
2292
  <code class="ruby"> verify!(data, options) rescue false</code>
1789
2293
  </li>
1790
2294
 
1791
- <li class="never" data-hits="" data-linenumber="89">
2295
+ <li class="never" data-hits="" data-linenumber="99">
1792
2296
 
1793
2297
 
1794
2298
  <code class="ruby"> end</code>
1795
2299
  </li>
1796
2300
 
1797
- <li class="never" data-hits="" data-linenumber="90">
2301
+ <li class="never" data-hits="" data-linenumber="100">
1798
2302
 
1799
2303
 
1800
2304
  <code class="ruby"></code>
1801
2305
  </li>
1802
2306
 
1803
- <li class="covered" data-hits="1" data-linenumber="91">
2307
+ <li class="covered" data-hits="1" data-linenumber="101">
1804
2308
  <span class="hits">1</span>
1805
2309
 
1806
2310
  <code class="ruby"> def verify!(data, options = {})</code>
1807
2311
  </li>
1808
2312
 
1809
- <li class="covered" data-hits="1" data-linenumber="92">
2313
+ <li class="covered" data-hits="1" data-linenumber="102">
1810
2314
  <span class="hits">1</span>
1811
2315
 
1812
2316
  <code class="ruby"> client = Client.production</code>
1813
2317
  </li>
1814
2318
 
1815
- <li class="never" data-hits="" data-linenumber="93">
2319
+ <li class="never" data-hits="" data-linenumber="103">
1816
2320
 
1817
2321
 
1818
2322
  <code class="ruby"></code>
1819
2323
  </li>
1820
2324
 
1821
- <li class="covered" data-hits="1" data-linenumber="94">
2325
+ <li class="covered" data-hits="1" data-linenumber="104">
1822
2326
  <span class="hits">1</span>
1823
2327
 
1824
2328
  <code class="ruby"> begin</code>
1825
2329
  </li>
1826
2330
 
1827
- <li class="covered" data-hits="1" data-linenumber="95">
2331
+ <li class="covered" data-hits="1" data-linenumber="105">
1828
2332
  <span class="hits">1</span>
1829
2333
 
1830
2334
  <code class="ruby"> client.verify!(data, options)</code>
1831
2335
  </li>
1832
2336
 
1833
- <li class="missed" data-hits="0" data-linenumber="96">
2337
+ <li class="missed" data-hits="0" data-linenumber="106">
1834
2338
 
1835
2339
 
1836
2340
  <code class="ruby"> rescue VerificationError =&gt; error</code>
1837
2341
  </li>
1838
2342
 
1839
- <li class="missed" data-hits="0" data-linenumber="97">
2343
+ <li class="missed" data-hits="0" data-linenumber="107">
1840
2344
 
1841
2345
 
1842
2346
  <code class="ruby"> case error.code</code>
1843
2347
  </li>
1844
2348
 
1845
- <li class="never" data-hits="" data-linenumber="98">
2349
+ <li class="never" data-hits="" data-linenumber="108">
1846
2350
 
1847
2351
 
1848
2352
  <code class="ruby"> when 21007</code>
1849
2353
  </li>
1850
2354
 
1851
- <li class="missed" data-hits="0" data-linenumber="99">
2355
+ <li class="missed" data-hits="0" data-linenumber="109">
1852
2356
 
1853
2357
 
1854
2358
  <code class="ruby"> client = Client.development</code>
1855
2359
  </li>
1856
2360
 
1857
- <li class="missed" data-hits="0" data-linenumber="100">
2361
+ <li class="missed" data-hits="0" data-linenumber="110">
1858
2362
 
1859
2363
 
1860
2364
  <code class="ruby"> retry</code>
1861
2365
  </li>
1862
2366
 
1863
- <li class="never" data-hits="" data-linenumber="101">
2367
+ <li class="never" data-hits="" data-linenumber="111">
1864
2368
 
1865
2369
 
1866
2370
  <code class="ruby"> when 21008</code>
1867
2371
  </li>
1868
2372
 
1869
- <li class="missed" data-hits="0" data-linenumber="102">
2373
+ <li class="missed" data-hits="0" data-linenumber="112">
1870
2374
 
1871
2375
 
1872
2376
  <code class="ruby"> client = Client.production</code>
1873
2377
  </li>
1874
2378
 
1875
- <li class="missed" data-hits="0" data-linenumber="103">
2379
+ <li class="missed" data-hits="0" data-linenumber="113">
1876
2380
 
1877
2381
 
1878
2382
  <code class="ruby"> retry</code>
1879
2383
  </li>
1880
2384
 
1881
- <li class="never" data-hits="" data-linenumber="104">
2385
+ <li class="never" data-hits="" data-linenumber="114">
1882
2386
 
1883
2387
 
1884
2388
  <code class="ruby"> else</code>
1885
2389
  </li>
1886
2390
 
1887
- <li class="missed" data-hits="0" data-linenumber="105">
2391
+ <li class="missed" data-hits="0" data-linenumber="115">
1888
2392
 
1889
2393
 
1890
2394
  <code class="ruby"> raise error</code>
1891
2395
  </li>
1892
2396
 
1893
- <li class="never" data-hits="" data-linenumber="106">
2397
+ <li class="never" data-hits="" data-linenumber="116">
1894
2398
 
1895
2399
 
1896
2400
  <code class="ruby"> end</code>
1897
2401
  </li>
1898
2402
 
1899
- <li class="never" data-hits="" data-linenumber="107">
2403
+ <li class="never" data-hits="" data-linenumber="117">
1900
2404
 
1901
2405
 
1902
2406
  <code class="ruby"> end</code>
1903
2407
  </li>
1904
2408
 
1905
- <li class="never" data-hits="" data-linenumber="108">
2409
+ <li class="never" data-hits="" data-linenumber="118">
1906
2410
 
1907
2411
 
1908
2412
  <code class="ruby"> end</code>
1909
2413
  </li>
1910
2414
 
1911
- <li class="never" data-hits="" data-linenumber="109">
2415
+ <li class="never" data-hits="" data-linenumber="119">
1912
2416
 
1913
2417
 
1914
2418
  <code class="ruby"></code>
1915
2419
  </li>
1916
2420
 
1917
- <li class="covered" data-hits="1" data-linenumber="110">
2421
+ <li class="covered" data-hits="1" data-linenumber="120">
1918
2422
  <span class="hits">1</span>
1919
2423
 
1920
2424
  <code class="ruby"> alias :validate :verify</code>
1921
2425
  </li>
1922
2426
 
1923
- <li class="covered" data-hits="1" data-linenumber="111">
2427
+ <li class="covered" data-hits="1" data-linenumber="121">
1924
2428
  <span class="hits">1</span>
1925
2429
 
1926
2430
  <code class="ruby"> alias :validate! :verify!</code>
1927
2431
  </li>
1928
2432
 
1929
- <li class="never" data-hits="" data-linenumber="112">
2433
+ <li class="never" data-hits="" data-linenumber="122">
1930
2434
 
1931
2435
 
1932
2436
  <code class="ruby"> end</code>
1933
2437
  </li>
1934
2438
 
1935
- <li class="never" data-hits="" data-linenumber="113">
2439
+ <li class="never" data-hits="" data-linenumber="123">
1936
2440
 
1937
2441
 
1938
2442
  <code class="ruby"></code>
1939
2443
  </li>
1940
2444
 
1941
- <li class="covered" data-hits="1" data-linenumber="114">
2445
+ <li class="covered" data-hits="1" data-linenumber="124">
1942
2446
  <span class="hits">1</span>
1943
2447
 
1944
2448
  <code class="ruby"> class VerificationError &lt; StandardError</code>
1945
2449
  </li>
1946
2450
 
1947
- <li class="covered" data-hits="1" data-linenumber="115">
2451
+ <li class="covered" data-hits="1" data-linenumber="125">
1948
2452
  <span class="hits">1</span>
1949
2453
 
1950
2454
  <code class="ruby"> attr_accessor :code</code>
1951
2455
  </li>
1952
2456
 
1953
- <li class="covered" data-hits="1" data-linenumber="116">
2457
+ <li class="covered" data-hits="1" data-linenumber="126">
1954
2458
  <span class="hits">1</span>
1955
2459
 
1956
2460
  <code class="ruby"> attr_accessor :receipt</code>
1957
2461
  </li>
1958
2462
 
1959
- <li class="never" data-hits="" data-linenumber="117">
2463
+ <li class="never" data-hits="" data-linenumber="127">
1960
2464
 
1961
2465
 
1962
2466
  <code class="ruby"></code>
1963
2467
  </li>
1964
2468
 
1965
- <li class="covered" data-hits="1" data-linenumber="118">
2469
+ <li class="covered" data-hits="1" data-linenumber="128">
1966
2470
  <span class="hits">1</span>
1967
2471
 
1968
2472
  <code class="ruby"> def initialize(code, receipt)</code>
1969
2473
  </li>
1970
2474
 
1971
- <li class="missed" data-hits="0" data-linenumber="119">
2475
+ <li class="missed" data-hits="0" data-linenumber="129">
1972
2476
 
1973
2477
 
1974
2478
  <code class="ruby"> @code = Integer(code)</code>
1975
2479
  </li>
1976
2480
 
1977
- <li class="missed" data-hits="0" data-linenumber="120">
2481
+ <li class="missed" data-hits="0" data-linenumber="130">
1978
2482
 
1979
2483
 
1980
2484
  <code class="ruby"> @receipt = receipt</code>
1981
2485
  </li>
1982
2486
 
1983
- <li class="never" data-hits="" data-linenumber="121">
2487
+ <li class="never" data-hits="" data-linenumber="131">
1984
2488
 
1985
2489
 
1986
2490
  <code class="ruby"> end</code>
1987
2491
  </li>
1988
2492
 
1989
- <li class="never" data-hits="" data-linenumber="122">
2493
+ <li class="never" data-hits="" data-linenumber="132">
1990
2494
 
1991
2495
 
1992
2496
  <code class="ruby"></code>
1993
2497
  </li>
1994
2498
 
1995
- <li class="covered" data-hits="1" data-linenumber="123">
2499
+ <li class="covered" data-hits="1" data-linenumber="133">
1996
2500
  <span class="hits">1</span>
1997
2501
 
1998
2502
  <code class="ruby"> def message</code>
1999
2503
  </li>
2000
2504
 
2001
- <li class="missed" data-hits="0" data-linenumber="124">
2505
+ <li class="missed" data-hits="0" data-linenumber="134">
2002
2506
 
2003
2507
 
2004
2508
  <code class="ruby"> case @code</code>
2005
2509
  </li>
2006
2510
 
2007
- <li class="never" data-hits="" data-linenumber="125">
2511
+ <li class="never" data-hits="" data-linenumber="135">
2008
2512
 
2009
2513
 
2010
2514
  <code class="ruby"> when 21000</code>
2011
2515
  </li>
2012
2516
 
2013
- <li class="missed" data-hits="0" data-linenumber="126">
2517
+ <li class="missed" data-hits="0" data-linenumber="136">
2014
2518
 
2015
2519
 
2016
2520
  <code class="ruby"> &quot;The App Store could not read the JSON object you provided.&quot;</code>
2017
2521
  </li>
2018
2522
 
2019
- <li class="never" data-hits="" data-linenumber="127">
2523
+ <li class="never" data-hits="" data-linenumber="137">
2020
2524
 
2021
2525
 
2022
2526
  <code class="ruby"> when 21002</code>
2023
2527
  </li>
2024
2528
 
2025
- <li class="missed" data-hits="0" data-linenumber="128">
2529
+ <li class="missed" data-hits="0" data-linenumber="138">
2026
2530
 
2027
2531
 
2028
2532
  <code class="ruby"> &quot;The data in the receipt-data property was malformed.&quot;</code>
2029
2533
  </li>
2030
2534
 
2031
- <li class="never" data-hits="" data-linenumber="129">
2535
+ <li class="never" data-hits="" data-linenumber="139">
2032
2536
 
2033
2537
 
2034
2538
  <code class="ruby"> when 21003</code>
2035
2539
  </li>
2036
2540
 
2037
- <li class="missed" data-hits="0" data-linenumber="130">
2541
+ <li class="missed" data-hits="0" data-linenumber="140">
2038
2542
 
2039
2543
 
2040
2544
  <code class="ruby"> &quot;The receipt could not be authenticated.&quot;</code>
2041
2545
  </li>
2042
2546
 
2043
- <li class="never" data-hits="" data-linenumber="131">
2547
+ <li class="never" data-hits="" data-linenumber="141">
2044
2548
 
2045
2549
 
2046
2550
  <code class="ruby"> when 21004</code>
2047
2551
  </li>
2048
2552
 
2049
- <li class="missed" data-hits="0" data-linenumber="132">
2553
+ <li class="missed" data-hits="0" data-linenumber="142">
2050
2554
 
2051
2555
 
2052
2556
  <code class="ruby"> &quot;The shared secret you provided does not match the shared secret on file for your account.&quot;</code>
2053
2557
  </li>
2054
2558
 
2055
- <li class="never" data-hits="" data-linenumber="133">
2559
+ <li class="never" data-hits="" data-linenumber="143">
2056
2560
 
2057
2561
 
2058
2562
  <code class="ruby"> when 21005</code>
2059
2563
  </li>
2060
2564
 
2061
- <li class="missed" data-hits="0" data-linenumber="134">
2565
+ <li class="missed" data-hits="0" data-linenumber="144">
2062
2566
 
2063
2567
 
2064
2568
  <code class="ruby"> &quot;The receipt server is not currently available.&quot;</code>
2065
2569
  </li>
2066
2570
 
2067
- <li class="never" data-hits="" data-linenumber="135">
2571
+ <li class="never" data-hits="" data-linenumber="145">
2068
2572
 
2069
2573
 
2070
2574
  <code class="ruby"> when 21006</code>
2071
2575
  </li>
2072
2576
 
2073
- <li class="missed" data-hits="0" data-linenumber="136">
2577
+ <li class="missed" data-hits="0" data-linenumber="146">
2074
2578
 
2075
2579
 
2076
2580
  <code class="ruby"> &quot;This receipt is valid but the subscription has expired. When this status code is returned to your server, the receipt data is also decoded and returned as part of the response.&quot;</code>
2077
2581
  </li>
2078
2582
 
2079
- <li class="never" data-hits="" data-linenumber="137">
2583
+ <li class="never" data-hits="" data-linenumber="147">
2080
2584
 
2081
2585
 
2082
2586
  <code class="ruby"> when 21007</code>
2083
2587
  </li>
2084
2588
 
2085
- <li class="missed" data-hits="0" data-linenumber="138">
2589
+ <li class="missed" data-hits="0" data-linenumber="148">
2086
2590
 
2087
2591
 
2088
2592
  <code class="ruby"> &quot;This receipt is a sandbox receipt, but it was sent to the production service for verification.&quot;</code>
2089
2593
  </li>
2090
2594
 
2091
- <li class="never" data-hits="" data-linenumber="139">
2595
+ <li class="never" data-hits="" data-linenumber="149">
2092
2596
 
2093
2597
 
2094
2598
  <code class="ruby"> when 21008</code>
2095
2599
  </li>
2096
2600
 
2097
- <li class="missed" data-hits="0" data-linenumber="140">
2601
+ <li class="missed" data-hits="0" data-linenumber="150">
2098
2602
 
2099
2603
 
2100
2604
  <code class="ruby"> &quot;This receipt is a production receipt, but it was sent to the sandbox service for verification.&quot;</code>
2101
2605
  </li>
2102
2606
 
2103
- <li class="never" data-hits="" data-linenumber="141">
2607
+ <li class="never" data-hits="" data-linenumber="151">
2608
+
2609
+
2610
+ <code class="ruby"> when 21010</code>
2611
+ </li>
2612
+
2613
+ <li class="missed" data-hits="0" data-linenumber="152">
2614
+
2615
+
2616
+ <code class="ruby"> &quot;This receipt could not be authorized. Treat this the same as if a purchase was never made.&quot;</code>
2617
+ </li>
2618
+
2619
+ <li class="never" data-hits="" data-linenumber="153">
2104
2620
 
2105
2621
 
2106
2622
  <code class="ruby"> else</code>
2107
2623
  </li>
2108
2624
 
2109
- <li class="missed" data-hits="0" data-linenumber="142">
2625
+ <li class="missed" data-hits="0" data-linenumber="154">
2110
2626
 
2111
2627
 
2112
2628
  <code class="ruby"> &quot;Unknown Error: #{@code}&quot;</code>
2113
2629
  </li>
2114
2630
 
2115
- <li class="never" data-hits="" data-linenumber="143">
2631
+ <li class="never" data-hits="" data-linenumber="155">
2116
2632
 
2117
2633
 
2118
2634
  <code class="ruby"> end</code>
2119
2635
  </li>
2120
2636
 
2121
- <li class="never" data-hits="" data-linenumber="144">
2637
+ <li class="never" data-hits="" data-linenumber="156">
2122
2638
 
2123
2639
 
2124
2640
  <code class="ruby"> end</code>
2125
2641
  </li>
2126
2642
 
2127
- <li class="never" data-hits="" data-linenumber="145">
2643
+ <li class="never" data-hits="" data-linenumber="157">
2128
2644
 
2129
2645
 
2130
2646
  <code class="ruby"> end</code>
2131
2647
  </li>
2132
2648
 
2133
- <li class="never" data-hits="" data-linenumber="146">
2649
+ <li class="never" data-hits="" data-linenumber="158">
2134
2650
 
2135
2651
 
2136
2652
  <code class="ruby"> end</code>
2137
2653
  </li>
2138
2654
 
2139
- <li class="never" data-hits="" data-linenumber="147">
2655
+ <li class="never" data-hits="" data-linenumber="159">
2140
2656
 
2141
2657
 
2142
2658
  <code class="ruby">end</code>
@@ -2145,6 +2661,44 @@
2145
2661
  </ol>
2146
2662
  </pre>
2147
2663
  </div>
2664
+
2665
+
2666
+ <div class="source_table" id="cb684cfb744e20e9f55e0ef69140ba65fee90e3b">
2667
+ <div class="header">
2668
+ <h3>lib/venice/version.rb</h3>
2669
+ <h4><span class="green">100.0 %</span> covered</h4>
2670
+ <div>
2671
+ <b>2</b> relevant lines.
2672
+ <span class="green"><b>2</b> lines covered</span> and
2673
+ <span class="red"><b>0</b> lines missed.</span>
2674
+ </div>
2675
+ </div>
2676
+
2677
+ <pre>
2678
+ <ol>
2679
+
2680
+ <li class="covered" data-hits="1" data-linenumber="1">
2681
+ <span class="hits">1</span>
2682
+
2683
+ <code class="ruby">module Venice</code>
2684
+ </li>
2685
+
2686
+ <li class="covered" data-hits="1" data-linenumber="2">
2687
+ <span class="hits">1</span>
2688
+
2689
+ <code class="ruby"> VERSION = &quot;0.4.0&quot;</code>
2690
+ </li>
2691
+
2692
+ <li class="never" data-hits="" data-linenumber="3">
2693
+
2694
+
2695
+ <code class="ruby">end</code>
2696
+ </li>
2697
+
2698
+ </ol>
2699
+ </pre>
2700
+ </div>
2701
+
2148
2702
 
2149
2703
  </div>
2150
2704
  </div>