Skip to content

Commit

Permalink
fix: allow fully qualified ParseSwift types (#397)
Browse files Browse the repository at this point in the history
* fix: Allow fully qualified ParseSwift types

* improve file organization

* import for linux

* add test
  • Loading branch information
cbaker6 committed Aug 30, 2022
1 parent a143c0f commit ed74494
Show file tree
Hide file tree
Showing 37 changed files with 896 additions and 841 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.9.1...main)
[Full Changelog](https://github.com/parse-community/Parse-Swift/compare/4.9.2...main)
* _Contributing to this repo? Add info about your change here to be included in the next release_

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

__Fixes__
- Allow fully qualified ParseSwift types to be used externally by fixing clash with module name ([#397](https://github.com/parse-community/Parse-Swift/pull/397)), thanks to [Corey Baker](https://github.com/cbaker6).

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

Expand Down
10 changes: 10 additions & 0 deletions ParseSwift.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -315,6 +315,10 @@
7045769E26BD934000F86F71 /* ParseFile+async.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7045769C26BD934000F86F71 /* ParseFile+async.swift */; };
7045769F26BD934000F86F71 /* ParseFile+async.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7045769C26BD934000F86F71 /* ParseFile+async.swift */; };
704576A026BD934000F86F71 /* ParseFile+async.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7045769C26BD934000F86F71 /* ParseFile+async.swift */; };
704C886C28BE69A8008E6B01 /* ParseConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 704C886B28BE69A8008E6B01 /* ParseConfiguration.swift */; };
704C886D28BE69A8008E6B01 /* ParseConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 704C886B28BE69A8008E6B01 /* ParseConfiguration.swift */; };
704C886E28BE69A8008E6B01 /* ParseConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 704C886B28BE69A8008E6B01 /* ParseConfiguration.swift */; };
704C886F28BE69A8008E6B01 /* ParseConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 704C886B28BE69A8008E6B01 /* ParseConfiguration.swift */; };
705025992842FD3B008D6624 /* ParseCLPTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 705025982842FD3B008D6624 /* ParseCLPTests.swift */; };
7050259A2842FD3B008D6624 /* ParseCLPTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 705025982842FD3B008D6624 /* ParseCLPTests.swift */; };
7050259B2842FD3B008D6624 /* ParseCLPTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 705025982842FD3B008D6624 /* ParseCLPTests.swift */; };
Expand Down Expand Up @@ -1229,6 +1233,7 @@
7045769226BD8F8100F86F71 /* ParseInstallation+async.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ParseInstallation+async.swift"; sourceTree = "<group>"; };
7045769726BD917500F86F71 /* Query+async.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Query+async.swift"; sourceTree = "<group>"; };
7045769C26BD934000F86F71 /* ParseFile+async.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ParseFile+async.swift"; sourceTree = "<group>"; };
704C886B28BE69A8008E6B01 /* ParseConfiguration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParseConfiguration.swift; sourceTree = "<group>"; };
705025982842FD3B008D6624 /* ParseCLPTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParseCLPTests.swift; sourceTree = "<group>"; };
7050259C2843F0CF008D6624 /* ParseSchemaAsyncTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParseSchemaAsyncTests.swift; sourceTree = "<group>"; };
705025A02843F0E7008D6624 /* ParseSchemaCombineTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParseSchemaCombineTests.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -2112,6 +2117,7 @@
70D1BDB925BB17A600A42E7C /* ParseConfig.swift */,
703B090B26BD984D005A112F /* ParseConfig+async.swift */,
7044C18225C4EFC10011F6E7 /* ParseConfig+combine.swift */,
704C886B28BE69A8008E6B01 /* ParseConfiguration.swift */,
F97B45BF24D9C6F200F4A88B /* ParseError.swift */,
709A148628396B1C00BF85E5 /* ParseField.swift */,
705025A828441C96008D6624 /* ParseFieldOptions.swift */,
Expand Down Expand Up @@ -2733,6 +2739,7 @@
705A9A2F25991C1400B3547F /* Fileable.swift in Sources */,
89899D342603CF36002E2043 /* ParseTwitter.swift in Sources */,
7C55F9F12860CEEF002A352D /* ParseSpotify+combine.swift in Sources */,
704C886C28BE69A8008E6B01 /* ParseConfiguration.swift in Sources */,
70B4E0BC2762F1D5004C9757 /* QueryConstraint.swift in Sources */,
70C167B427304F09009F4E30 /* Pointer+async.swift in Sources */,
705025AE28456106008D6624 /* ParsePushStatusable.swift in Sources */,
Expand Down Expand Up @@ -3041,6 +3048,7 @@
89899D332603CF36002E2043 /* ParseTwitter.swift in Sources */,
70B4E0BD2762F1D5004C9757 /* QueryConstraint.swift in Sources */,
7C55F9F22860CEEF002A352D /* ParseSpotify+combine.swift in Sources */,
704C886D28BE69A8008E6B01 /* ParseConfiguration.swift in Sources */,
70C167B527304F09009F4E30 /* Pointer+async.swift in Sources */,
F97B464B24D9C78B00F4A88B /* Delete.swift in Sources */,
705025AF28456106008D6624 /* ParsePushStatusable.swift in Sources */,
Expand Down Expand Up @@ -3481,6 +3489,7 @@
705A9A3225991C1400B3547F /* Fileable.swift in Sources */,
70B4E0BF2762F1D5004C9757 /* QueryConstraint.swift in Sources */,
7C55F9F42860CEEF002A352D /* ParseSpotify+combine.swift in Sources */,
704C886F28BE69A8008E6B01 /* ParseConfiguration.swift in Sources */,
89899D282603CF35002E2043 /* ParseTwitter.swift in Sources */,
70C167B727304F09009F4E30 /* Pointer+async.swift in Sources */,
705025B128456106008D6624 /* ParsePushStatusable.swift in Sources */,
Expand Down Expand Up @@ -3666,6 +3675,7 @@
705A9A3125991C1400B3547F /* Fileable.swift in Sources */,
70B4E0BE2762F1D5004C9757 /* QueryConstraint.swift in Sources */,
7C55F9F32860CEEF002A352D /* ParseSpotify+combine.swift in Sources */,
704C886E28BE69A8008E6B01 /* ParseConfiguration.swift in Sources */,
89899D322603CF35002E2043 /* ParseTwitter.swift in Sources */,
70C167B627304F09009F4E30 /* Pointer+async.swift in Sources */,
705025B028456106008D6624 /* ParsePushStatusable.swift in Sources */,
Expand Down
20 changes: 10 additions & 10 deletions Sources/ParseSwift/API/API+Command.swift
Original file line number Diff line number Diff line change
Expand Up @@ -60,16 +60,16 @@ internal extension API {
case .success(let urlRequest):
if method == .POST || method == .PUT || method == .PATCH {
let task = URLSession.parse.uploadTask(withStreamedRequest: urlRequest)
ParseSwift.sessionDelegate.streamDelegates[task] = stream
Parse.sessionDelegate.streamDelegates[task] = stream
#if compiler(>=5.5.2) && canImport(_Concurrency)
Task {
await ParseSwift.sessionDelegate.delegates.updateUpload(task, callback: uploadProgress)
await ParseSwift.sessionDelegate.delegates.updateTask(task, queue: callbackQueue)
await Parse.sessionDelegate.delegates.updateUpload(task, callback: uploadProgress)
await Parse.sessionDelegate.delegates.updateTask(task, queue: callbackQueue)
task.resume()
}
#else
ParseSwift.sessionDelegate.uploadDelegates[task] = uploadProgress
ParseSwift.sessionDelegate.taskCallbackQueues[task] = callbackQueue
Parse.sessionDelegate.uploadDelegates[task] = uploadProgress
Parse.sessionDelegate.taskCallbackQueues[task] = callbackQueue
task.resume()
#endif
return
Expand Down Expand Up @@ -274,7 +274,7 @@ internal extension API {
headers.removeValue(forKey: "X-Parse-Request-Id")
}
let url = parseURL == nil ?
ParseSwift.configuration.serverURL.appendingPathComponent(path.urlComponent) : parseURL!
Parse.configuration.serverURL.appendingPathComponent(path.urlComponent) : parseURL!

guard var components = URLComponents(url: url, resolvingAgainstBaseURL: false) else {
return .failure(ParseError(code: .unknownError,
Expand Down Expand Up @@ -319,7 +319,7 @@ internal extension API {
}

static func requestCachePolicy(options: API.Options) -> URLRequest.CachePolicy {
var policy: URLRequest.CachePolicy = ParseSwift.configuration.requestCachePolicy
var policy: URLRequest.CachePolicy = Parse.configuration.requestCachePolicy
options.forEach { option in
if case .cachePolicy(let updatedPolicy) = option {
policy = updatedPolicy
Expand Down Expand Up @@ -395,7 +395,7 @@ internal extension API.Command {
static func save<T>(_ object: T,
original data: Data?,
ignoringCustomObjectIdConfig: Bool) throws -> API.Command<T, T> where T: ParseObject {
if ParseSwift.configuration.isAllowingCustomObjectIds
if Parse.configuration.isAllowingCustomObjectIds
&& object.objectId == nil && !ignoringCustomObjectIdConfig {
throw ParseError(code: .missingObjectId, message: "objectId must not be nil")
}
Expand Down Expand Up @@ -501,7 +501,7 @@ internal extension API.Command where T: ParseObject {
static func batch(commands: [API.Command<T, T>],
transaction: Bool) -> RESTBatchCommandType<T> {
let batchCommands = commands.compactMap { (command) -> API.Command<T, T>? in
let path = ParseSwift.configuration.mountPath + command.path.urlComponent
let path = Parse.configuration.mountPath + command.path.urlComponent
guard let body = command.body else {
return nil
}
Expand Down Expand Up @@ -553,7 +553,7 @@ internal extension API.Command where T: ParseObject {
static func batch(commands: [API.NonParseBodyCommand<NoBody, NoBody>],
transaction: Bool) -> RESTBatchCommandNoBodyType<NoBody> {
let commands = commands.compactMap { (command) -> API.NonParseBodyCommand<NoBody, NoBody>? in
let path = ParseSwift.configuration.mountPath + command.path.urlComponent
let path = Parse.configuration.mountPath + command.path.urlComponent
return API.NonParseBodyCommand<NoBody, NoBody>(
method: command.method,
path: .any(path), mapper: command.mapper)
Expand Down
4 changes: 2 additions & 2 deletions Sources/ParseSwift/API/API+NonParseBodyCommand.swift
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ internal extension API {
if method == .GET || method == .DELETE {
headers.removeValue(forKey: "X-Parse-Request-Id")
}
let url = ParseSwift.configuration.serverURL.appendingPathComponent(path.urlComponent)
let url = Parse.configuration.serverURL.appendingPathComponent(path.urlComponent)

guard var components = URLComponents(url: url, resolvingAgainstBaseURL: false) else {
return .failure(ParseError(code: .unknownError,
Expand Down Expand Up @@ -169,7 +169,7 @@ internal extension API.NonParseBodyCommand {
return try objectable.toPointer()
}

let path = ParseSwift.configuration.mountPath + objectable.endpoint.urlComponent
let path = Parse.configuration.mountPath + objectable.endpoint.urlComponent
let encoded = try ParseCoding.parseEncoder().encode(object)
let body = try ParseCoding.jsonDecoder().decode(AnyCodable.self, from: encoded)
return API.BatchCommand<AnyCodable, PointerType>(method: method,
Expand Down
6 changes: 3 additions & 3 deletions Sources/ParseSwift/API/API.swift
Original file line number Diff line number Diff line change
Expand Up @@ -197,9 +197,9 @@ public struct API {

// swiftlint:disable:next cyclomatic_complexity
internal static func getHeaders(options: API.Options) -> [String: String] {
var headers: [String: String] = ["X-Parse-Application-Id": ParseSwift.configuration.applicationId,
var headers: [String: String] = ["X-Parse-Application-Id": Parse.configuration.applicationId,
"Content-Type": "application/json"]
if let clientKey = ParseSwift.configuration.clientKey {
if let clientKey = Parse.configuration.clientKey {
headers["X-Parse-Client-Key"] = clientKey
}

Expand All @@ -217,7 +217,7 @@ public struct API {
options.forEach { (option) in
switch option {
case .useMasterKey:
headers["X-Parse-Master-Key"] = ParseSwift.configuration.masterKey
headers["X-Parse-Master-Key"] = Parse.configuration.masterKey
case .sessionToken(let sessionToken):
headers["X-Parse-Session-Token"] = sessionToken
case .installationId(let installationId):
Expand Down
4 changes: 2 additions & 2 deletions Sources/ParseSwift/Coding/ParseEncoder.swift
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ public struct ParseEncoder {
unique: PointerType?,
unsavedChildren: [Encodable]) {
let keysToSkip: Set<String>!
if !ParseSwift.configuration.isAllowingCustomObjectIds {
if !Parse.configuration.isAllowingCustomObjectIds {
keysToSkip = SkipKeys.object.keys()
} else {
keysToSkip = SkipKeys.customObjectId.keys()
Expand All @@ -172,7 +172,7 @@ public struct ParseEncoder {
objectsSavedBeforeThisOne: [String: PointerType]?,
filesSavedBeforeThisOne: [UUID: ParseFile]?) throws -> (encoded: Data, unique: PointerType?, unsavedChildren: [Encodable]) {
let keysToSkip: Set<String>!
if !ParseSwift.configuration.isAllowingCustomObjectIds {
if !Parse.configuration.isAllowingCustomObjectIds {
keysToSkip = SkipKeys.object.keys()
} else {
keysToSkip = SkipKeys.customObjectId.keys()
Expand Down
12 changes: 6 additions & 6 deletions Sources/ParseSwift/Extensions/URLCache.swift
Original file line number Diff line number Diff line change
Expand Up @@ -14,19 +14,19 @@ import FoundationNetworking
internal extension URLCache {
static let parse: URLCache = {
guard let cacheURL = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask).first else {
return URLCache(memoryCapacity: ParseSwift.configuration.cacheMemoryCapacity,
diskCapacity: ParseSwift.configuration.cacheDiskCapacity,
return URLCache(memoryCapacity: Parse.configuration.cacheMemoryCapacity,
diskCapacity: Parse.configuration.cacheDiskCapacity,
diskPath: nil)
}
let parseCacheDirectory = "ParseCache"
let diskURL = cacheURL.appendingPathComponent(parseCacheDirectory, isDirectory: true)
#if !os(Linux) && !os(Android) && !os(Windows)
return URLCache(memoryCapacity: ParseSwift.configuration.cacheMemoryCapacity,
diskCapacity: ParseSwift.configuration.cacheDiskCapacity,
return URLCache(memoryCapacity: Parse.configuration.cacheMemoryCapacity,
diskCapacity: Parse.configuration.cacheDiskCapacity,
directory: diskURL)
#else
return URLCache(memoryCapacity: ParseSwift.configuration.cacheMemoryCapacity,
diskCapacity: ParseSwift.configuration.cacheDiskCapacity,
return URLCache(memoryCapacity: Parse.configuration.cacheMemoryCapacity,
diskCapacity: Parse.configuration.cacheDiskCapacity,
diskPath: diskURL.absoluteString)
#endif
}()
Expand Down
Loading

0 comments on commit ed74494

Please sign in to comment.