monza 1.3.9 → 1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 352558d4ab4014083ece9624e7361abf178e7930b85f734eadc1b7bf7f2ae251
4
- data.tar.gz: 59fbaee7463a1e76f28cca6ab8f8d677b6461249d7f5e84d6eb1fe75f21117ee
3
+ metadata.gz: 2a3e8797fbfd911982c72952571bf74f4a2bc43d661ab5453e75c7094a5c58b8
4
+ data.tar.gz: f6cc849f16e7d9043fde46a8e8a89a1b410305d1f71e3520d73d7a24b34ddefa
5
5
  SHA512:
6
- metadata.gz: ab12f4fa179c45495ada0bd05b6a706cdd94948aff4af9dd9f8e84c00adc19b49fec36b52483687989b92a2c25e679a5a7ce205d47d713ee22e15140dae4de30
7
- data.tar.gz: 1911b4a5e8dea7cfd152394fcb92b58affc6a5a0c610f9b8a48ff70a073296889209de90d06725ab640b9aab074126e98d91089338c3a42e6412b7dbe7f70995
6
+ metadata.gz: ba834db0521e45098e1234d314c68a33b01e0d21ba46be4f119ca4a65d8d78e7a0170697fec7439995ff5367058eebf1e5585725931fdf9ddb7d362f94bde5fc
7
+ data.tar.gz: a873a6aa9d162d2557a348d9a9438edeb6172f03283d9f5a278cfb1506ce89796b3fb10df9b8a970b24e57b1804a258258858f2d348bb20a41c4a03fe5783c6b
data/.travis.yml CHANGED
@@ -3,8 +3,7 @@ sudo: false
3
3
  cache: bundler
4
4
 
5
5
  rvm:
6
- - 2.2.7
7
6
  - 2.3.4
8
7
  - 2.4.1
9
8
 
10
- before_install: gem install bundler -v 1.10.6
9
+ before_install: gem install bundler
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'time'
3
4
 
4
5
  module Monza
@@ -7,7 +8,7 @@ module Monza
7
8
 
8
9
  # https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html
9
10
  # https://developer.apple.com/documentation/appstoreservernotifications/responsebody
10
- module Type
11
+ module Type
11
12
  CANCEL = 'CANCEL'
12
13
  DID_CHANGE_RENEWAL_PREF = 'DID_CHANGE_RENEWAL_PREF'
13
14
  DID_CHANGE_RENEWAL_STATUS = 'DID_CHANGE_RENEWAL_STATUS'
@@ -19,7 +20,6 @@ module Monza
19
20
  REFUND = 'REFUND'
20
21
  end
21
22
 
22
-
23
23
  attr_reader :auto_renew_product_id
24
24
  attr_reader :auto_renew_status
25
25
  attr_reader :auto_renew_status_change_date
@@ -78,21 +78,27 @@ module Monza
78
78
  @environment = attributes['environment']
79
79
  @expiration_intent = attributes['expiration_intent']
80
80
 
81
- @latest_receipt = attributes['latest_receipt'] || attributes['latest_expired_receipt']
81
+ @latest_receipt = attributes.dig('unified_receipt', 'latest_receipt')
82
82
  @notification_type = attributes['notification_type']
83
83
 
84
- if attributes['password']
85
- @password = attributes['password']
86
- end
87
-
88
- # There'll only be one latest receipt info, so lets just flatten it out here
89
- latest_receipt_info = attributes['latest_receipt_info']
84
+ @password = attributes['password'] if attributes['password']
90
85
 
91
- # If the receipt is cancelled / expired, we'll get this instead
92
- if latest_receipt_info.nil?
93
- latest_receipt_info = attributes['latest_expired_receipt_info']
86
+ latest_receipt_info = []
87
+ case attributes.dig('unified_receipt', 'latest_receipt_info')
88
+ when Array
89
+ attributes.dig('unified_receipt', 'latest_receipt_info').each do |transaction_receipt_attributes|
90
+ latest_receipt_info << transaction_receipt_attributes
91
+ end
92
+ when Hash
93
+ latest_receipt_info << attributes.dig('unified_receipt', 'latest_receipt_info')
94
+ end
95
+ @renewal_info = []
96
+ attributes.dig('unified_receipt', 'pending_renewal_info')&.each do |renewal_info_attributes|
97
+ renewal_info << RenewalInfo.new(renewal_info_attributes)
94
98
  end
95
99
 
100
+ latest_receipt_info = latest_receipt_info.first
101
+
96
102
  @bundle_id = latest_receipt_info['bid']
97
103
  @bvrs = latest_receipt_info['bvrs'].to_i
98
104
  @item_id = latest_receipt_info['item_id'].to_i
@@ -101,10 +107,16 @@ module Monza
101
107
  @original_transaction_id = latest_receipt_info['original_transaction_id']
102
108
  @purchase_date = DateTime.parse(latest_receipt_info['purchase_date']) if latest_receipt_info['purchase_date']
103
109
  @purchase_date_ms = Time.zone.at(latest_receipt_info['purchase_date_ms'].to_i / 1000)
104
- @purchase_date_pst = date_for_pacific_time(latest_receipt_info['purchase_date_pst']) if latest_receipt_info['purchase_date_pst']
105
- @original_purchase_date = DateTime.parse(latest_receipt_info['original_purchase_date']) if latest_receipt_info['original_purchase_date']
106
- @original_purchase_date_ms = Time.zone.at(latest_receipt_info['original_purchase_date_ms'].to_i / 1000)
107
- @original_purchase_date_pst = date_for_pacific_time(latest_receipt_info['original_purchase_date_pst']) if latest_receipt_info['original_purchase_date_pst']
110
+ if latest_receipt_info['purchase_date_pst']
111
+ @purchase_date_pst = date_for_pacific_time(latest_receipt_info['purchase_date_pst'])
112
+ end
113
+ if latest_receipt_info['original_purchase_date']
114
+ @original_purchase_date = DateTime.parse(latest_receipt_info['original_purchase_date'])
115
+ end
116
+ @original_purchase_date_ms = Time.zone.at(latest_receipt_info['original_purchase_date_ms'].to_i / 1000)
117
+ if latest_receipt_info['original_purchase_date_pst']
118
+ @original_purchase_date_pst = date_for_pacific_time(latest_receipt_info['original_purchase_date_pst'])
119
+ end
108
120
  @web_order_line_item_id = latest_receipt_info['web_order_line_item_id']
109
121
  @quantity = latest_receipt_info['quantity'].to_i
110
122
 
@@ -116,10 +128,14 @@ module Monza
116
128
  @expires_date = DateTime.parse(latest_receipt_info['expires_date_formatted'])
117
129
  end
118
130
  if latest_receipt_info['expires_date']
119
- @expires_date_ms = Time.zone.at(latest_receipt_info['expires_date'].to_i / 1000)
131
+ @expires_date_ms = if latest_receipt_info['expires_date'].size == 13
132
+ Time.zone.at(latest_receipt_info['expires_date'].to_i / 1000)
133
+ else
134
+ DateTime.parse(latest_receipt_info['expires_date'])
135
+ end
120
136
  end
121
137
  if latest_receipt_info['expires_date_formatted_pst']
122
- @expires_date_pst = date_for_pacific_time(latest_receipt_info['expires_date_formatted_pst'])
138
+ @expires_date_pst = date_for_pacific_time(latest_receipt_info['expires_date_formatted_pst'] || latest_receipt_info['expires_date_pst'])
123
139
  end
124
140
  if latest_receipt_info['is_in_intro_offer_period']
125
141
  @is_in_intro_offer_period = latest_receipt_info['is_in_intro_offer_period'].to_bool
@@ -189,7 +205,6 @@ module Monza
189
205
  def refund?
190
206
  notification_type == Type::REFUND
191
207
  end
192
-
193
208
  end # class
194
209
  end # module
195
210
 
@@ -199,29 +214,31 @@ end # module
199
214
  # "auto_renew_product_id": "product_id.quarterly",
200
215
  # "auto_renew_status": "true",
201
216
  # "environment": "Sandbox",
217
+ # "unified_receipt": {
218
+ # "latest_receipt_info": {
219
+ # "bid": "co.bundle.id",
220
+ # "bvrs": "1004",
221
+ # "expires_date": "1521161603000",
222
+ # "expires_date_formatted": "2018-03-16 00:53:23 Etc/GMT",
223
+ # "expires_date_formatted_pst": "2018-03-15 17:53:23 America/Los_Angeles",
224
+ # "is_in_intro_offer_period": "false",
225
+ # "is_trial_period": "false",
226
+ # "item_id": "1359908036",
227
+ # "original_purchase_date": "2018-03-15 23:23:05 Etc/GMT",
228
+ # "original_purchase_date_ms": "1521156185000",
229
+ # "original_purchase_date_pst": "2018-03-15 16:23:05 America/Los_Angeles",
230
+ # "original_transaction_id": "1000000383185294",
231
+ # "product_id": "product_id.quarterly",
232
+ # "purchase_date": "2018-03-16 00:38:23 Etc/GMT",
233
+ # "purchase_date_ms": "1521160703000",
234
+ # "purchase_date_pst": "2018-03-15 17:38:23 America/Los_Angeles",
235
+ # "quantity": "1",
236
+ # "transaction_id": "1000000383189543",
237
+ # "unique_identifier": "3a142176fee52ba64ddc3ba3b685786bd58cb4fe",
238
+ # "unique_vendor_identifier": "D8E8B1EB-7A35-4E88-A21C-584E4FEB6543",
239
+ # "web_order_line_item_id": "1000000038128465"
240
+ # },
202
241
  # "latest_receipt": "<base 64>",
203
- # "latest_receipt_info": {
204
- # "bid": "co.bundle.id",
205
- # "bvrs": "1004",
206
- # "expires_date": "1521161603000",
207
- # "expires_date_formatted": "2018-03-16 00:53:23 Etc/GMT",
208
- # "expires_date_formatted_pst": "2018-03-15 17:53:23 America/Los_Angeles",
209
- # "is_in_intro_offer_period": "false",
210
- # "is_trial_period": "false",
211
- # "item_id": "1359908036",
212
- # "original_purchase_date": "2018-03-15 23:23:05 Etc/GMT",
213
- # "original_purchase_date_ms": "1521156185000",
214
- # "original_purchase_date_pst": "2018-03-15 16:23:05 America/Los_Angeles",
215
- # "original_transaction_id": "1000000383185294",
216
- # "product_id": "product_id.quarterly",
217
- # "purchase_date": "2018-03-16 00:38:23 Etc/GMT",
218
- # "purchase_date_ms": "1521160703000",
219
- # "purchase_date_pst": "2018-03-15 17:38:23 America/Los_Angeles",
220
- # "quantity": "1",
221
- # "transaction_id": "1000000383189543",
222
- # "unique_identifier": "3a142176fee52ba64ddc3ba3b685786bd58cb4fe",
223
- # "unique_vendor_identifier": "D8E8B1EB-7A35-4E88-A21C-584E4FEB6543",
224
- # "web_order_line_item_id": "1000000038128465"
225
242
  # },
226
243
  # "notification_type": "RENEWAL",
227
244
  # "password": "password"
@@ -19,13 +19,16 @@ module Monza
19
19
  @environment = attributes['environment']
20
20
  @receipt = Receipt.new(attributes['receipt'])
21
21
  @latest_receipt_info = []
22
- case attributes['latest_receipt_info']
22
+
23
+ latest_receipt_info = attributes['latest_receipt_info'] || attributes.dig('unified_receipt', 'latest_receipt_info')
24
+
25
+ case latest_receipt_info
23
26
  when Array
24
- attributes['latest_receipt_info'].each do |transaction_receipt_attributes|
27
+ latest_receipt_info.each do |transaction_receipt_attributes|
25
28
  @latest_receipt_info << TransactionReceipt.new(transaction_receipt_attributes)
26
29
  end
27
30
  when Hash
28
- @latest_receipt_info << TransactionReceipt.new(attributes['latest_receipt_info'])
31
+ @latest_receipt_info << TransactionReceipt.new(latest_receipt_info)
29
32
  end
30
33
  @renewal_info = []
31
34
  if attributes['pending_renewal_info']
@@ -33,7 +36,7 @@ module Monza
33
36
  @renewal_info << RenewalInfo.new(renewal_info_attributes)
34
37
  end
35
38
  end
36
- @latest_receipt = attributes['latest_receipt']
39
+ @latest_receipt = attributes['latest_receipt'] || attributes.dig('unified_receipt', 'latest_receipt')
37
40
  end
38
41
 
39
42
  def is_subscription_active?
data/lib/monza/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Monza
4
- VERSION = '1.3.9'
4
+ VERSION = '1.5.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: monza
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.9
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gabriel Garza
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-10-08 00:00:00.000000000 Z
11
+ date: 2021-05-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json