Skip to content

Added new ReceiptParser.fetchAndParseLocalReceipt#2204

Merged
NachoSoto merged 1 commit into
mainfrom
receipt-parser-fetcher
Jan 17, 2023
Merged

Added new ReceiptParser.fetchAndParseLocalReceipt#2204
NachoSoto merged 1 commit into
mainfrom
receipt-parser-fetcher

Conversation

@NachoSoto

@NachoSoto NachoSoto commented Jan 10, 2023

Copy link
Copy Markdown
Contributor

Fixes CSDK-622.

Changes:

  • Extracted FileReader to be able to use it in ReceiptParser
  • Extracted MockBundle to be able to use it in ReceiptParser
  • Added new public ReceiptParser.fetchAndParseLocalReceipt(), only to ReceiptParser (this is not available through RevenueCat).
  • Added tests for the new API
  • Added new API to ReceiptParserAPITester

Initially I thought about moving ReceiptFetcher to the Receipt|Parser target. Unfortunately that would require moving a whole bunch of other dependencies (OperationDispatcher, etc, etc).
We have no easy way to create a third "Core" framework in which to place these common dependencies, so that wouldn't be trivial.

This solution adds a much simpler version of ReceiptFetcher that simply reads from Bundle.appStoreReceiptURL. As it's documented there, under normal circumstances SKReceiptRefreshRequest is not required, so this implementation should work for 99% of use cases, and so this way we avoid increasing the.codebase complexity unnecessarily.

@NachoSoto NachoSoto requested a review from a team January 10, 2023 22:20
@NachoSoto NachoSoto added the pr:feat A new feature label Jan 10, 2023
@NachoSoto NachoSoto force-pushed the receipt-parser-fetcher branch from ce7fbe1 to efb08c6 Compare January 10, 2023 22:26
@NachoSoto NachoSoto force-pushed the receipt-parser-fetcher branch 2 times, most recently from 0d6d95c to f8f5526 Compare January 12, 2023 18:27
@NachoSoto NachoSoto changed the base branch from main to receipt-parser-tests January 16, 2023 15:54
@NachoSoto NachoSoto force-pushed the receipt-parser-fetcher branch 2 times, most recently from eff898a to 66bb790 Compare January 16, 2023 17:59
@NachoSoto NachoSoto removed the blocked label Jan 16, 2023
@NachoSoto NachoSoto force-pushed the receipt-parser-tests branch from 9686627 to bc453f0 Compare January 17, 2023 04:29
@NachoSoto NachoSoto force-pushed the receipt-parser-fetcher branch from 66bb790 to 81f63fb Compare January 17, 2023 04:44

@tonidero tonidero left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

Comment thread Tests/ReceiptParserTests/ReceiptParserFetchingTests.swift Outdated
Comment thread Tests/ReceiptParserTests/ReceiptParserFetchingTests.swift Outdated
Base automatically changed from receipt-parser-tests to main January 17, 2023 13:52
@NachoSoto NachoSoto enabled auto-merge (squash) January 17, 2023 14:18
@NachoSoto NachoSoto disabled auto-merge January 17, 2023 14:18
Fixes [CSDK-622].

- Extracted `FileReader` to be able to use it in `ReceiptParser`
- Extracted `MockBundle` to be able to use it in `ReceiptParser`
- Added new `public` `ReceiptParser.fetchAndParseLocalReceipt()`, **only to `ReceiptParser`** (this is not available through `RevenueCat`).
- Added tests for the new API
- Added new API to `ReceiptParserAPITester`

Initially I thought about moving `ReceiptFetcher` to the `Receipt|Parser` target. Unfortunately that would require moving a whole bunch of other dependencies (`OperationDispatcher`, etc, etc).
We have no easy way to create a third "Core" framework in which to place these common dependencies, so that wouldn't be trivial.

This solution adds a much simpler version of `ReceiptFetcher` that simply reads from `Bundle.appStoreReceiptURL`. As it's documented there, under normal circumstances `SKReceiptRefreshRequest` is not required, so this implementation should work for 99% of use cases, and so this way we avoid increasing the.codebase complexity unnecessarily.

[CSDK-622]: https://revenuecats.atlassian.net/browse/CSDK-622?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
@NachoSoto NachoSoto force-pushed the receipt-parser-fetcher branch from 81f63fb to 2646633 Compare January 17, 2023 20:27
@NachoSoto NachoSoto enabled auto-merge (squash) January 17, 2023 20:28
@NachoSoto NachoSoto merged commit b87dfe5 into main Jan 17, 2023
@NachoSoto NachoSoto deleted the receipt-parser-fetcher branch January 17, 2023 20:35
NachoSoto pushed a commit that referenced this pull request Jan 17, 2023
**This is an automatic release.**

### New Features
* Added new `ReceiptParser.fetchAndParseLocalReceipt` (#2204) via
NachoSoto (@NachoSoto)
* `PurchasesReceiptParser`: added API to parse receipts from `base64`
string (#2200) via NachoSoto (@NachoSoto)
### Bugfixes
* `CustomerInfo`: support parsing schema version 2 to restore SDK `v3.x`
compatibility (#2213) via NachoSoto (@NachoSoto)
### Other Changes
* `JSONDecoder`: added decoding type when logging
`DecodingError.keyNotFound` (#2212) via NachoSoto (@NachoSoto)
* Added `ReceiptParserTests` (#2203) via NachoSoto (@NachoSoto)
* Deploy `PurchaseTester` for `macOS` (#2011) via NachoSoto (@NachoSoto)
* `ReceiptFetcher`: refactored implementation to log error when failing
to fetch receipt (#2202) via NachoSoto (@NachoSoto)
* `PostReceiptDataOperation`: replaced receipt `base64` with `hash` for
cache key (#2199) via NachoSoto (@NachoSoto)
* `PurchaseTester`: small refactor to simplify `Date` formatting (#2210)
via NachoSoto (@NachoSoto)
* `PurchasesReceiptParser`: improved documentation to reference
`default` (#2197) via NachoSoto (@NachoSoto)
* Created `CachingTrialOrIntroPriceEligibilityChecker` (#2007) via
NachoSoto (@NachoSoto)
* Update Gemfile.lock (#2205) via Cesar de la Vega (@vegaro)
* remove stalebot in favor of SLAs in Zendesk (#2196) via Andy Boedo
(@aboedo)
* Update fastlane-plugin-revenuecat_internal to latest version (#2194)
via Cesar de la Vega (@vegaro)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pr:feat A new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants