Skip to content

Commit

Permalink
fix: remove caching of files (#414)
Browse files Browse the repository at this point in the history
* fix: remove caching of files

* bump version and add change log
  • Loading branch information
cbaker6 committed Sep 14, 2022
1 parent baf70f6 commit e54a22c
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 62 deletions.
8 changes: 7 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,15 @@
# Parse-Swift Changelog

### main
[Full Changelog](https://github.com/parse-community/Parse-Swift/compare/4.13.0...main)
[Full Changelog](https://github.com/parse-community/Parse-Swift/compare/4.13.1...main)
* _Contributing to this repo? Add info about your change here to be included in the next release_

### 4.13.1
[Full Changelog](https://github.com/parse-community/Parse-Swift/compare/4.13.0...4.13.1)

__Fixes__
- Remove ParseFile caching due to OS not having a natural way to cache files. Instead, if developers want to access a saved ParseFile, they should check the download directory for the respective file name ([#414](https://github.com/parse-community/Parse-Swift/pull/414)), thanks to [Corey Baker](https://github.com/cbaker6).

### 4.13.0
[Full Changelog](https://github.com/parse-community/Parse-Swift/compare/4.12.0...4.13.0)

Expand Down
15 changes: 0 additions & 15 deletions Sources/ParseSwift/Extensions/URLSession.swift
Original file line number Diff line number Diff line change
Expand Up @@ -296,21 +296,6 @@ internal extension URLSession {
location: location,
urlResponse: urlResponse,
responseError: responseError, mapper: mapper)
if case .success(let file) = result {
guard let response = urlResponse,
let parseFile = file as? ParseFile,
let fileLocation = parseFile.localURL,
let data = try? ParseCoding.jsonEncoder().encode(fileLocation) else {
completion(result)
return
}
if URLSession.parse.configuration.urlCache?.cachedResponse(for: request) == nil {
URLSession.parse.configuration.urlCache?
.storeCachedResponse(.init(response: response,
data: data),
for: request)
}
}
completion(result)
}
#if compiler(>=5.5.2) && canImport(_Concurrency)
Expand Down
2 changes: 1 addition & 1 deletion Sources/ParseSwift/ParseConstants.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import Foundation

enum ParseConstants {
static let sdk = "swift"
static let version = "4.12.0"
static let version = "4.13.1"
static let fileManagementDirectory = "parse/"
static let fileManagementPrivateDocumentsDirectory = "Private Documents/"
static let fileManagementLibraryDirectory = "Library/"
Expand Down
62 changes: 17 additions & 45 deletions Tests/ParseSwiftTests/ParseFileTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -1123,34 +1123,20 @@ class ParseFileTests: XCTestCase { // swiftlint:disable:this type_body_length
XCTAssertEqual(fetchedFile.url, response.url)
XCTAssertNotNil(fetchedFile.localURL)

// Cache policy flakey on older Swift versions
#if compiler(>=5.5.0)
// Remove URL mocker so we can check cache
MockURLProtocol.removeAll()

let fetchedFile2 = try parseFile.fetch(options: [.cachePolicy(.returnCacheDataDontLoad)])
XCTAssertEqual(fetchedFile2.name, fetchedFile.name)
XCTAssertEqual(fetchedFile2.url, fetchedFile.url)
XCTAssertNotNil(fetchedFile2.localURL)

// More cache tests
guard let currentMemoryUsage = URLSession.parse.configuration.urlCache?.currentMemoryUsage,
let currentDiskUsage = URLSession.parse.configuration.urlCache?.currentDiskUsage else {
XCTFail("Should have unwrapped")
return
}
XCTAssertGreaterThan(currentMemoryUsage, 0)
XCTAssertGreaterThan(currentDiskUsage, 0)
ParseSwift.clearCache()
guard let updatedMemoryUsage = URLSession.parse.configuration.urlCache?.currentMemoryUsage else {
XCTFail("Should have unwrapped")
return
do {
_ = try parseFile.fetch(options: [.cachePolicy(.returnCacheDataDontLoad)])
} catch {
guard let parseError = error as? ParseError else {
XCTFail("Should have casted")
return
}
XCTAssertTrue(parseError.message.contains("No response"))
}
XCTAssertLessThan(updatedMemoryUsage, currentMemoryUsage)
#endif
}

func testFetchFileWithDirInName() throws {
func testFetchFileWithDirectoryInName() throws {
// swiftlint:disable:next line_length
guard let parseFileURL = URL(string: "http://localhost:1337/1/files/applicationId/d3a37aed0672a024595b766f97133615_logo.svg") else {
XCTFail("Should create URL")
Expand Down Expand Up @@ -1181,31 +1167,17 @@ class ParseFileTests: XCTestCase { // swiftlint:disable:this type_body_length
}
XCTAssertFalse(localURL.pathComponents.contains("myFolder"))

// Cache policy flakey on older Swift versions
#if compiler(>=5.5.0)
// Remove URL mocker so we can check cache
MockURLProtocol.removeAll()

let fetchedFile2 = try parseFile.fetch(options: [.cachePolicy(.returnCacheDataDontLoad)])
XCTAssertEqual(fetchedFile2.name, fetchedFile.name)
XCTAssertEqual(fetchedFile2.url, fetchedFile.url)
XCTAssertNotNil(fetchedFile2.localURL)

// More cache tests
guard let currentMemoryUsage = URLSession.parse.configuration.urlCache?.currentMemoryUsage,
let currentDiskUsage = URLSession.parse.configuration.urlCache?.currentDiskUsage else {
XCTFail("Should have unwrapped")
return
}
XCTAssertGreaterThan(currentMemoryUsage, 0)
XCTAssertGreaterThan(currentDiskUsage, 0)
ParseSwift.clearCache()
guard let updatedMemoryUsage = URLSession.parse.configuration.urlCache?.currentMemoryUsage else {
XCTFail("Should have unwrapped")
return
do {
_ = try parseFile.fetch(options: [.cachePolicy(.returnCacheDataDontLoad)])
} catch {
guard let parseError = error as? ParseError else {
XCTFail("Should have casted")
return
}
XCTAssertTrue(parseError.message.contains("No response"))
}
XCTAssertLessThan(updatedMemoryUsage, currentMemoryUsage)
#endif
}

func testFetchFileProgress() throws {
Expand Down

0 comments on commit e54a22c

Please sign in to comment.