Skip to content

fix: let additional headers take any type #302

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Dec 13, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .codecov.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ coverage:
status:
patch:
default:
target: auto
target: 56
changes: false
project:
default:
Expand Down
32 changes: 10 additions & 22 deletions Sources/ParseSwift/Extensions/URLCache.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,30 +16,18 @@ internal extension URLCache {
guard let cacheURL = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask).first else {
return URLCache(memoryCapacity: ParseSwift.configuration.cacheMemoryCapacity,
diskCapacity: ParseSwift.configuration.cacheDiskCapacity,
diskPath: "/")
diskPath: nil)
}
let parseCacheDirectory = "ParseCache"
let diskURL = cacheURL.appendingPathComponent(parseCacheDirectory, isDirectory: true)
if #available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *) {
#if !os(Linux) && !os(Android) && !os(Windows)
return URLCache(memoryCapacity: ParseSwift.configuration.cacheMemoryCapacity,
diskCapacity: ParseSwift.configuration.cacheDiskCapacity,
directory: diskURL)
#else
return URLCache(memoryCapacity: ParseSwift.configuration.cacheMemoryCapacity,
diskCapacity: ParseSwift.configuration.cacheDiskCapacity,
diskPath: diskURL.absoluteString)
#endif
} else {
#if os(macOS)
return URLCache(memoryCapacity: ParseSwift.configuration.cacheMemoryCapacity,
diskCapacity: ParseSwift.configuration.cacheDiskCapacity,
diskPath: diskURL.absoluteString)
#else
return URLCache(memoryCapacity: ParseSwift.configuration.cacheMemoryCapacity,
diskCapacity: ParseSwift.configuration.cacheDiskCapacity,
diskPath: parseCacheDirectory)
#endif
}
#if !os(Linux) && !os(Android) && !os(Windows)
return URLCache(memoryCapacity: ParseSwift.configuration.cacheMemoryCapacity,
diskCapacity: ParseSwift.configuration.cacheDiskCapacity,
directory: diskURL)
#else
return URLCache(memoryCapacity: ParseSwift.configuration.cacheMemoryCapacity,
diskCapacity: ParseSwift.configuration.cacheDiskCapacity,
diskPath: diskURL.absoluteString)
#endif
}()
}
4 changes: 1 addition & 3 deletions Sources/ParseSwift/Objects/ParseUser.swift
Original file line number Diff line number Diff line change
Expand Up @@ -124,9 +124,7 @@ public extension ParseUser {
internal static func deleteCurrentContainerFromKeychain() {
try? ParseStorage.shared.delete(valueFor: ParseStorage.Keys.currentUser)
#if !os(Linux) && !os(Android) && !os(Windows)
if #available(macOS 10.15, iOS 13.0, macCatalyst 13.0, watchOS 6.0, tvOS 13.0, *) {
URLSession.liveQuery.closeAll()
}
URLSession.liveQuery.closeAll()
try? KeychainStore.shared.delete(valueFor: ParseStorage.Keys.currentUser)
#endif
Self.currentContainer = nil
Expand Down
8 changes: 4 additions & 4 deletions Sources/ParseSwift/Parse.swift
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public struct ParseConfiguration {
/// A dictionary of additional headers to send with requests. See Apple's
/// [documentation](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1411532-httpadditionalheaders)
/// for more info.
public internal(set) var httpAdditionalHeaders: [String: String]?
public internal(set) var httpAdditionalHeaders: [AnyHashable: Any]?

/// The memory capacity of the cache, in bytes. Defaults to 512KB.
public internal(set) var cacheMemoryCapacity = 512_000
Expand Down Expand Up @@ -114,7 +114,7 @@ public struct ParseConfiguration {
cacheDiskCapacity: Int = 10_000_000,
migrateFromObjcSDK: Bool = false,
deleteKeychainIfNeeded: Bool = false,
httpAdditionalHeaders: [String: String]? = nil,
httpAdditionalHeaders: [AnyHashable: Any]? = nil,
maxConnectionAttempts: Int = 5,
authentication: ((URLAuthenticationChallenge,
(URLSession.AuthChallengeDisposition,
Expand Down Expand Up @@ -274,7 +274,7 @@ public struct ParseSwift {
cacheDiskCapacity: Int = 10_000_000,
migrateFromObjcSDK: Bool = false,
deleteKeychainIfNeeded: Bool = false,
httpAdditionalHeaders: [String: String]? = nil,
httpAdditionalHeaders: [AnyHashable: Any]? = nil,
maxConnectionAttempts: Int = 5,
authentication: ((URLAuthenticationChallenge,
(URLSession.AuthChallengeDisposition,
Expand Down Expand Up @@ -311,7 +311,7 @@ public struct ParseSwift {
cacheDiskCapacity: Int = 10_000_000,
migrateFromObjcSDK: Bool = false,
deleteKeychainIfNeeded: Bool = false,
httpAdditionalHeaders: [String: String]? = nil,
httpAdditionalHeaders: [AnyHashable: Any]? = nil,
maxConnectionAttempts: Int = 5,
testing: Bool = false,
authentication: ((URLAuthenticationChallenge,
Expand Down
14 changes: 11 additions & 3 deletions Tests/ParseSwiftTests/ExtensionsTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ class ExtensionsTests: XCTestCase {
clientKey: "clientKey",
masterKey: "masterKey",
serverURL: url,
testing: true)
testing: false)
}

override func tearDownWithError() throws {
Expand All @@ -34,11 +34,19 @@ class ExtensionsTests: XCTestCase {
}

#if !os(Linux) && !os(Android) && !os(Windows)
func testURLSession() throws {
ParseSwift.configuration.isTestingSDK = false
func testURLSessionTesting() throws {
XCTAssertNotNil(URLSession.parse.configuration.urlCache)
}

func testURLSession() throws {
let headerKey = "User-Agent"
let headerValue = "ParseSwift/\(ParseConstants.version) (\(ParseConstants.deviceType)"
ParseSwift.configuration.httpAdditionalHeaders = [headerKey: headerValue]
let session = URLSession.parse
XCTAssertNotNil(session.configuration.urlCache)
XCTAssertEqual(session.configuration.requestCachePolicy, ParseSwift.configuration.requestCachePolicy)
}

func testReconnectInterval() throws {
for index in 1 ..< 50 {
let time = URLSession.reconnectInterval(index)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -858,15 +858,13 @@ class TestParseEncoder: XCTestCase {
}
/*
func testInterceptURLWithoutEscapingOption() {
if #available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *) {
// Want to make sure JSONEncoder writes out single-value URLs, not the keyed encoding.
let expectedJSON = "\"http://swift.org\"".data(using: .utf8)!
let url = URL(string: "http://swift.org")!
_testRoundTrip(of: url, expectedJSON: expectedJSON, outputFormatting: [.withoutEscapingSlashes])

// Optional URLs should encode the same way.
_testRoundTrip(of: Optional(url), expectedJSON: expectedJSON, outputFormatting: [.withoutEscapingSlashes])
}
}*/

// MARK: - Type coercion
Expand Down
13 changes: 0 additions & 13 deletions Tests/ParseSwiftTests/ParseSessionTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -99,17 +99,4 @@ class ParseSessionTests: XCTestCase {
session.objectId = "me"
XCTAssertEqual(session.endpoint.urlComponent, "/sessions/me")
}

#if !os(Linux) && !os(Android) && !os(Windows)
func testURLSession() throws {
let session = URLSession.parse
XCTAssertNotNil(session.configuration.urlCache)
XCTAssertEqual(session.configuration.requestCachePolicy, ParseSwift.configuration.requestCachePolicy)
guard let headers = session.configuration.httpAdditionalHeaders as? [String: String]? else {
XCTFail("Should have casted")
return
}
XCTAssertEqual(headers, ParseSwift.configuration.httpAdditionalHeaders)
}
#endif
}