Skip to content

Commit 847bdf8

Browse files
authored
fix: let additional headers take any type (#302)
* fix: let additional headers take any type * don't test additionalHeaders as URLSession is ref type * Update .codecov.yml * Remove OS checks for < iOS 13 as those are unsupported
1 parent a15114b commit 847bdf8

File tree

7 files changed

+27
-48
lines changed

7 files changed

+27
-48
lines changed

.codecov.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ coverage:
66
status:
77
patch:
88
default:
9-
target: auto
9+
target: 56
1010
changes: false
1111
project:
1212
default:

Sources/ParseSwift/Extensions/URLCache.swift

Lines changed: 10 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -16,30 +16,18 @@ internal extension URLCache {
1616
guard let cacheURL = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask).first else {
1717
return URLCache(memoryCapacity: ParseSwift.configuration.cacheMemoryCapacity,
1818
diskCapacity: ParseSwift.configuration.cacheDiskCapacity,
19-
diskPath: "/")
19+
diskPath: nil)
2020
}
2121
let parseCacheDirectory = "ParseCache"
2222
let diskURL = cacheURL.appendingPathComponent(parseCacheDirectory, isDirectory: true)
23-
if #available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *) {
24-
#if !os(Linux) && !os(Android) && !os(Windows)
25-
return URLCache(memoryCapacity: ParseSwift.configuration.cacheMemoryCapacity,
26-
diskCapacity: ParseSwift.configuration.cacheDiskCapacity,
27-
directory: diskURL)
28-
#else
29-
return URLCache(memoryCapacity: ParseSwift.configuration.cacheMemoryCapacity,
30-
diskCapacity: ParseSwift.configuration.cacheDiskCapacity,
31-
diskPath: diskURL.absoluteString)
32-
#endif
33-
} else {
34-
#if os(macOS)
35-
return URLCache(memoryCapacity: ParseSwift.configuration.cacheMemoryCapacity,
36-
diskCapacity: ParseSwift.configuration.cacheDiskCapacity,
37-
diskPath: diskURL.absoluteString)
38-
#else
39-
return URLCache(memoryCapacity: ParseSwift.configuration.cacheMemoryCapacity,
40-
diskCapacity: ParseSwift.configuration.cacheDiskCapacity,
41-
diskPath: parseCacheDirectory)
42-
#endif
43-
}
23+
#if !os(Linux) && !os(Android) && !os(Windows)
24+
return URLCache(memoryCapacity: ParseSwift.configuration.cacheMemoryCapacity,
25+
diskCapacity: ParseSwift.configuration.cacheDiskCapacity,
26+
directory: diskURL)
27+
#else
28+
return URLCache(memoryCapacity: ParseSwift.configuration.cacheMemoryCapacity,
29+
diskCapacity: ParseSwift.configuration.cacheDiskCapacity,
30+
diskPath: diskURL.absoluteString)
31+
#endif
4432
}()
4533
}

Sources/ParseSwift/Objects/ParseUser.swift

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,9 +124,7 @@ public extension ParseUser {
124124
internal static func deleteCurrentContainerFromKeychain() {
125125
try? ParseStorage.shared.delete(valueFor: ParseStorage.Keys.currentUser)
126126
#if !os(Linux) && !os(Android) && !os(Windows)
127-
if #available(macOS 10.15, iOS 13.0, macCatalyst 13.0, watchOS 6.0, tvOS 13.0, *) {
128-
URLSession.liveQuery.closeAll()
129-
}
127+
URLSession.liveQuery.closeAll()
130128
try? KeychainStore.shared.delete(valueFor: ParseStorage.Keys.currentUser)
131129
#endif
132130
Self.currentContainer = nil

Sources/ParseSwift/Parse.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public struct ParseConfiguration {
3939
/// A dictionary of additional headers to send with requests. See Apple's
4040
/// [documentation](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1411532-httpadditionalheaders)
4141
/// for more info.
42-
public internal(set) var httpAdditionalHeaders: [String: String]?
42+
public internal(set) var httpAdditionalHeaders: [AnyHashable: Any]?
4343

4444
/// The memory capacity of the cache, in bytes. Defaults to 512KB.
4545
public internal(set) var cacheMemoryCapacity = 512_000
@@ -114,7 +114,7 @@ public struct ParseConfiguration {
114114
cacheDiskCapacity: Int = 10_000_000,
115115
migrateFromObjcSDK: Bool = false,
116116
deleteKeychainIfNeeded: Bool = false,
117-
httpAdditionalHeaders: [String: String]? = nil,
117+
httpAdditionalHeaders: [AnyHashable: Any]? = nil,
118118
maxConnectionAttempts: Int = 5,
119119
authentication: ((URLAuthenticationChallenge,
120120
(URLSession.AuthChallengeDisposition,
@@ -274,7 +274,7 @@ public struct ParseSwift {
274274
cacheDiskCapacity: Int = 10_000_000,
275275
migrateFromObjcSDK: Bool = false,
276276
deleteKeychainIfNeeded: Bool = false,
277-
httpAdditionalHeaders: [String: String]? = nil,
277+
httpAdditionalHeaders: [AnyHashable: Any]? = nil,
278278
maxConnectionAttempts: Int = 5,
279279
authentication: ((URLAuthenticationChallenge,
280280
(URLSession.AuthChallengeDisposition,
@@ -311,7 +311,7 @@ public struct ParseSwift {
311311
cacheDiskCapacity: Int = 10_000_000,
312312
migrateFromObjcSDK: Bool = false,
313313
deleteKeychainIfNeeded: Bool = false,
314-
httpAdditionalHeaders: [String: String]? = nil,
314+
httpAdditionalHeaders: [AnyHashable: Any]? = nil,
315315
maxConnectionAttempts: Int = 5,
316316
testing: Bool = false,
317317
authentication: ((URLAuthenticationChallenge,

Tests/ParseSwiftTests/ExtensionsTests.swift

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class ExtensionsTests: XCTestCase {
2121
clientKey: "clientKey",
2222
masterKey: "masterKey",
2323
serverURL: url,
24-
testing: true)
24+
testing: false)
2525
}
2626

2727
override func tearDownWithError() throws {
@@ -34,11 +34,19 @@ class ExtensionsTests: XCTestCase {
3434
}
3535

3636
#if !os(Linux) && !os(Android) && !os(Windows)
37-
func testURLSession() throws {
38-
ParseSwift.configuration.isTestingSDK = false
37+
func testURLSessionTesting() throws {
3938
XCTAssertNotNil(URLSession.parse.configuration.urlCache)
4039
}
4140

41+
func testURLSession() throws {
42+
let headerKey = "User-Agent"
43+
let headerValue = "ParseSwift/\(ParseConstants.version) (\(ParseConstants.deviceType)"
44+
ParseSwift.configuration.httpAdditionalHeaders = [headerKey: headerValue]
45+
let session = URLSession.parse
46+
XCTAssertNotNil(session.configuration.urlCache)
47+
XCTAssertEqual(session.configuration.requestCachePolicy, ParseSwift.configuration.requestCachePolicy)
48+
}
49+
4250
func testReconnectInterval() throws {
4351
for index in 1 ..< 50 {
4452
let time = URLSession.reconnectInterval(index)

Tests/ParseSwiftTests/ParseEncoderTests/TestParseEncoder.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -858,15 +858,13 @@ class TestParseEncoder: XCTestCase {
858858
}
859859
/*
860860
func testInterceptURLWithoutEscapingOption() {
861-
if #available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *) {
862861
// Want to make sure JSONEncoder writes out single-value URLs, not the keyed encoding.
863862
let expectedJSON = "\"http://swift.org\"".data(using: .utf8)!
864863
let url = URL(string: "http://swift.org")!
865864
_testRoundTrip(of: url, expectedJSON: expectedJSON, outputFormatting: [.withoutEscapingSlashes])
866865

867866
// Optional URLs should encode the same way.
868867
_testRoundTrip(of: Optional(url), expectedJSON: expectedJSON, outputFormatting: [.withoutEscapingSlashes])
869-
}
870868
}*/
871869

872870
// MARK: - Type coercion

Tests/ParseSwiftTests/ParseSessionTests.swift

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -99,17 +99,4 @@ class ParseSessionTests: XCTestCase {
9999
session.objectId = "me"
100100
XCTAssertEqual(session.endpoint.urlComponent, "/sessions/me")
101101
}
102-
103-
#if !os(Linux) && !os(Android) && !os(Windows)
104-
func testURLSession() throws {
105-
let session = URLSession.parse
106-
XCTAssertNotNil(session.configuration.urlCache)
107-
XCTAssertEqual(session.configuration.requestCachePolicy, ParseSwift.configuration.requestCachePolicy)
108-
guard let headers = session.configuration.httpAdditionalHeaders as? [String: String]? else {
109-
XCTFail("Should have casted")
110-
return
111-
}
112-
XCTAssertEqual(headers, ParseSwift.configuration.httpAdditionalHeaders)
113-
}
114-
#endif
115102
}

0 commit comments

Comments
 (0)