venice 0.4.3 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +4 -4
  3. data/README.md +1 -0
  4. data/coverage/assets/0.10.2/application.css +799 -0
  5. data/coverage/assets/0.10.2/application.js +1707 -0
  6. data/coverage/assets/0.10.2/colorbox/border.png +0 -0
  7. data/coverage/assets/0.10.2/colorbox/controls.png +0 -0
  8. data/coverage/assets/0.10.2/colorbox/loading.gif +0 -0
  9. data/coverage/assets/0.10.2/colorbox/loading_background.png +0 -0
  10. data/coverage/assets/0.10.2/favicon_green.png +0 -0
  11. data/coverage/assets/0.10.2/favicon_red.png +0 -0
  12. data/coverage/assets/0.10.2/favicon_yellow.png +0 -0
  13. data/coverage/assets/0.10.2/loading.gif +0 -0
  14. data/coverage/assets/0.10.2/magnify.png +0 -0
  15. data/coverage/assets/0.10.2/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  16. data/coverage/assets/0.10.2/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  17. data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  18. data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  19. data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  20. data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  21. data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  22. data/coverage/assets/0.10.2/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  23. data/coverage/assets/0.10.2/smoothness/images/ui-icons_222222_256x240.png +0 -0
  24. data/coverage/assets/0.10.2/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  25. data/coverage/assets/0.10.2/smoothness/images/ui-icons_454545_256x240.png +0 -0
  26. data/coverage/assets/0.10.2/smoothness/images/ui-icons_888888_256x240.png +0 -0
  27. data/coverage/assets/0.10.2/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  28. data/coverage/index.html +2988 -0
  29. data/lib/venice/client.rb +8 -4
  30. data/lib/venice/in_app_receipt.rb +5 -3
  31. data/lib/venice/version.rb +1 -1
  32. data/spec/client_spec.rb +1 -1
  33. data/spec/in_app_receipt_spec.rb +5 -3
  34. data/venice.gemspec +2 -3
  35. metadata +28 -3
@@ -49,10 +49,14 @@ module Venice
49
49
  latest_receipt_info_attributes = [latest_receipt_info_attributes] if latest_receipt_info_attributes.is_a?(Hash)
50
50
 
51
51
  # AppStore returns 'latest_receipt_info' even if we use over iOS 6. Besides, its format is an Array.
52
- receipt.latest_receipt_info = []
53
- latest_receipt_info_attributes.each do |latest_receipt_info_attribute|
54
- # latest_receipt_info format is identical with in_app
55
- receipt.latest_receipt_info << InAppReceipt.new(latest_receipt_info_attribute)
52
+ if latest_receipt_info_attributes.is_a?(Array)
53
+ receipt.latest_receipt_info = []
54
+ latest_receipt_info_attributes.each do |latest_receipt_info_attribute|
55
+ # latest_receipt_info format is identical with in_app
56
+ receipt.latest_receipt_info << InAppReceipt.new(latest_receipt_info_attribute)
57
+ end
58
+ else
59
+ receipt.latest_receipt_info = latest_receipt_info_attributes
56
60
  end
57
61
  end
58
62
 
@@ -54,10 +54,11 @@ module Venice
54
54
  @purchased_at = DateTime.parse(attributes['purchase_date']) if attributes['purchase_date']
55
55
  @app_item_id = attributes['app_item_id']
56
56
  @version_external_identifier = attributes['version_external_identifier']
57
+ @is_trial_period = attributes['is_trial_period'].to_s == 'true'
57
58
 
58
59
  # expires_date is in ms since the Epoch, Time.at expects seconds
59
60
  if attributes['expires_date_ms']
60
- @expires_at = Time.at(attributes['expires_date_ms'].to_i / 1000)
61
+ @expires_at = Time.at(attributes['expires_date_ms'].to_i / 1000)
61
62
  elsif attributes['expires_date'] && is_number?(attributes['expires_date'])
62
63
  @expires_at = Time.at(attributes['expires_date'].to_i / 1000)
63
64
  end
@@ -86,6 +87,7 @@ module Venice
86
87
  original_purchase_date: (@original.purchased_at.httpdate rescue nil),
87
88
  app_item_id: @app_item_id,
88
89
  version_external_identifier: @version_external_identifier,
90
+ is_trial_period: @is_trial_period,
89
91
  expires_at: (@expires_at.httpdate rescue nil),
90
92
  cancellation_at: (@cancellation_at.httpdate rescue nil)
91
93
  }
@@ -95,9 +97,9 @@ module Venice
95
97
  def to_json
96
98
  to_hash.to_json
97
99
  end
98
-
100
+
99
101
  private
100
-
102
+
101
103
  def is_number?(string)
102
104
  !!(string && string.to_s =~ /^[0-9]+$/)
103
105
  end
@@ -1,3 +1,3 @@
1
1
  module Venice
2
- VERSION = '0.4.3'
2
+ VERSION = '0.5.0'
3
3
  end
@@ -109,7 +109,7 @@ describe Venice::Client do
109
109
  receipt.latest_receipt_info.should_not be_nil
110
110
  receipt.latest_receipt_info.first.product_id.should eq 'com.ficklebits.nsscreencast.monthly_sub'
111
111
  end
112
-
112
+
113
113
  context 'when latest_receipt_info is a hash instead of an array' do
114
114
  it 'should still create a latest receipt' do
115
115
  response['latest_receipt_info'] = response['latest_receipt_info'].first
@@ -15,7 +15,7 @@ describe Venice::InAppReceipt do
15
15
  'original_purchase_date' => '2014-05-28 14:47:53 Etc/GMT',
16
16
  'original_purchase_date_ms' => '1401288473000',
17
17
  'original_purchase_date_pst' => '2014-05-28 07:47:53 America/Los_Angeles',
18
- 'is_trial_period' => false,
18
+ 'is_trial_period' => 'false',
19
19
  'version_external_identifier' => '123',
20
20
  'app_item_id' => 'com.foo.app1',
21
21
  'expires_date' => '2014-06-28 07:47:53 America/Los_Angeles',
@@ -34,6 +34,7 @@ describe Venice::InAppReceipt do
34
34
  its(:purchased_at) { should be_instance_of DateTime }
35
35
  its(:app_item_id) { 'com.foo.app1' }
36
36
  its(:version_external_identifier) { '123' }
37
+ its(:is_trial_period) { false }
37
38
  its(:original) { should be_instance_of Venice::InAppReceipt }
38
39
  its(:expires_at) { should be_instance_of Time }
39
40
 
@@ -42,8 +43,8 @@ describe Venice::InAppReceipt do
42
43
  subject.original.transaction_id.should == '140xxx867509'
43
44
  subject.original.purchased_at.should be_instance_of DateTime
44
45
  end
45
-
46
- it "should parse expires_date when expires_date_ms is missing and expires_date is the ms epoch" do
46
+
47
+ it 'should parse expires_date when expires_date_ms is missing and expires_date is the ms epoch' do
47
48
  attributes.delete('expires_date_ms')
48
49
  attributes['expires_date'] = '1403941685000'
49
50
  in_app_receipt.expires_at.should eq Time.at(1403941685000 / 1000)
@@ -54,6 +55,7 @@ describe Venice::InAppReceipt do
54
55
  product_id: 'com.foo.product1',
55
56
  transaction_id: '1000000070107235',
56
57
  web_order_line_item_id: '1000000026812043',
58
+ is_trial_period: false,
57
59
  purchase_date: 'Wed, 28 May 2014 14:47:53 GMT',
58
60
  original_purchase_date: 'Wed, 28 May 2014 14:47:53 GMT')
59
61
  end
@@ -1,6 +1,5 @@
1
- # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
3
- require "venice/version"
1
+ $LOAD_PATH.push File.expand_path('lib', __dir__)
2
+ require 'venice/version'
4
3
 
5
4
  Gem::Specification.new do |s|
6
5
  s.name = 'venice'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: venice
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mattt Thompson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-09 00:00:00.000000000 Z
11
+ date: 2018-07-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: commander
@@ -120,6 +120,31 @@ files:
120
120
  - "./LICENSE"
121
121
  - "./README.md"
122
122
  - "./Rakefile"
123
+ - "./coverage/assets/0.10.2/application.css"
124
+ - "./coverage/assets/0.10.2/application.js"
125
+ - "./coverage/assets/0.10.2/colorbox/border.png"
126
+ - "./coverage/assets/0.10.2/colorbox/controls.png"
127
+ - "./coverage/assets/0.10.2/colorbox/loading.gif"
128
+ - "./coverage/assets/0.10.2/colorbox/loading_background.png"
129
+ - "./coverage/assets/0.10.2/favicon_green.png"
130
+ - "./coverage/assets/0.10.2/favicon_red.png"
131
+ - "./coverage/assets/0.10.2/favicon_yellow.png"
132
+ - "./coverage/assets/0.10.2/loading.gif"
133
+ - "./coverage/assets/0.10.2/magnify.png"
134
+ - "./coverage/assets/0.10.2/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png"
135
+ - "./coverage/assets/0.10.2/smoothness/images/ui-bg_flat_75_ffffff_40x100.png"
136
+ - "./coverage/assets/0.10.2/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png"
137
+ - "./coverage/assets/0.10.2/smoothness/images/ui-bg_glass_65_ffffff_1x400.png"
138
+ - "./coverage/assets/0.10.2/smoothness/images/ui-bg_glass_75_dadada_1x400.png"
139
+ - "./coverage/assets/0.10.2/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png"
140
+ - "./coverage/assets/0.10.2/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png"
141
+ - "./coverage/assets/0.10.2/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
142
+ - "./coverage/assets/0.10.2/smoothness/images/ui-icons_222222_256x240.png"
143
+ - "./coverage/assets/0.10.2/smoothness/images/ui-icons_2e83ff_256x240.png"
144
+ - "./coverage/assets/0.10.2/smoothness/images/ui-icons_454545_256x240.png"
145
+ - "./coverage/assets/0.10.2/smoothness/images/ui-icons_888888_256x240.png"
146
+ - "./coverage/assets/0.10.2/smoothness/images/ui-icons_cd0a0a_256x240.png"
147
+ - "./coverage/index.html"
123
148
  - "./lib/venice.rb"
124
149
  - "./lib/venice/client.rb"
125
150
  - "./lib/venice/in_app_receipt.rb"
@@ -154,7 +179,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
154
179
  version: '0'
155
180
  requirements: []
156
181
  rubyforge_project:
157
- rubygems_version: 2.7.3
182
+ rubygems_version: 2.7.6
158
183
  signing_key:
159
184
  specification_version: 4
160
185
  summary: iTunes In-App Purchase Receipt Verification