From 4a344ce9c90c07f7792a2d9ba26efc9d0c577532 Mon Sep 17 00:00:00 2001 From: Eric Dorphy Date: Mon, 18 Dec 2023 08:47:43 -0600 Subject: [PATCH] #14 - Removed the 'WS' from all types and updated the readme get started section. --- README.md | 11 +++++-- .../Asset/{CKWSAsset.swift => CKAsset.swift} | 6 ++-- ...SRemoteAsset.swift => CKRemoteAsset.swift} | 6 ++-- ....swift => CKContainer-Configuration.swift} | 4 +-- ...er.swift => CKContainer-CurrentUser.swift} | 20 ++++++------- ...{CKWSContainer.swift => CKContainer.swift} | 14 ++++----- .../{CKWSDatabase.swift => CKDatabase.swift} | 12 ++++---- .../Error/{CKWSError.swift => CKError.swift} | 14 ++++----- ...{CKWSOperation.swift => CKOperation.swift} | 6 ++-- ...ration.swift => CKDatabaseOperation.swift} | 10 +++---- ...on.swift => CKFetchRecordsOperation.swift} | 28 +++++++++--------- ...or.swift => CKQueryOperation-Cursor.swift} | 8 ++--- ...Operation.swift => CKQueryOperation.swift} | 24 +++++++-------- ...etProtocol.swift => CKAssetProtocol.swift} | 4 +-- .../Protocols/CKRecordValueProtocol.swift | 29 +++++++++++++++++++ .../Protocols/CKWSRecordValueProtocol.swift | 29 ------------------- ... => CKQuery-Filter-LocationDistance.swift} | 4 +-- ...uery-Filter.swift => CKQuery-Filter.swift} | 14 ++++----- .../Query/{CKWSQuery.swift => CKQuery.swift} | 8 ++--- ...{CKWSRecord-ID.swift => CKRecord-ID.swift} | 8 ++--- ...ference.swift => CKRecord-Reference.swift} | 12 ++++---- .../{CKWSRecord.swift => CKRecord.swift} | 22 +++++++------- ...s.swift => CKRecordZone-Capabilites.swift} | 4 +-- ...ordZone-ID.swift => CKRecordZone-ID.swift} | 6 ++-- ...KWSRecordZone.swift => CKRecordZone.swift} | 14 ++++----- .../Dictionaries/AssetDictionary.swift | 2 +- .../Dictionaries/FilterDictionary.swift | 4 +-- .../Dictionaries/QueryDictionary.swift | 2 +- .../Dictionaries/RecordFieldDictionary.swift | 14 ++++----- .../Dictionaries/ReferenceDictionary.swift | 2 +- ...inerTests.swift => CKContainerTests.swift} | 10 +++---- .../RecordFieldDictionaryTests.swift | 8 ++--- 32 files changed, 182 insertions(+), 177 deletions(-) rename Sources/CloudKitWebServices/Asset/{CKWSAsset.swift => CKAsset.swift} (88%) rename Sources/CloudKitWebServices/Asset/{CKWSRemoteAsset.swift => CKRemoteAsset.swift} (77%) rename Sources/CloudKitWebServices/Container/{CKWSContainer-Configuration.swift => CKContainer-Configuration.swift} (94%) rename Sources/CloudKitWebServices/Container/{CKWSContainer-CurrentUser.swift => CKContainer-CurrentUser.swift} (81%) rename Sources/CloudKitWebServices/Container/{CKWSContainer.swift => CKContainer.swift} (86%) rename Sources/CloudKitWebServices/Database/{CKWSDatabase.swift => CKDatabase.swift} (86%) rename Sources/CloudKitWebServices/Error/{CKWSError.swift => CKError.swift} (91%) rename Sources/CloudKitWebServices/Operations/{CKWSOperation.swift => CKOperation.swift} (96%) rename Sources/CloudKitWebServices/Operations/Database/{CKWSDatabaseOperation.swift => CKDatabaseOperation.swift} (54%) rename Sources/CloudKitWebServices/Operations/Database/Fetch/{CKWSFetchRecordsOperation.swift => CKFetchRecordsOperation.swift} (88%) rename Sources/CloudKitWebServices/Operations/Database/Query/{CKWSQueryOperation-Cursor.swift => CKQueryOperation-Cursor.swift} (73%) rename Sources/CloudKitWebServices/Operations/Database/Query/{CKWSQueryOperation.swift => CKQueryOperation.swift} (89%) rename Sources/CloudKitWebServices/Protocols/{CKWSAssetProtocol.swift => CKAssetProtocol.swift} (72%) create mode 100644 Sources/CloudKitWebServices/Protocols/CKRecordValueProtocol.swift delete mode 100644 Sources/CloudKitWebServices/Protocols/CKWSRecordValueProtocol.swift rename Sources/CloudKitWebServices/Query/{CKWSQuery-Filter-LocationDistance.swift => CKQuery-Filter-LocationDistance.swift} (84%) rename Sources/CloudKitWebServices/Query/{CKWSQuery-Filter.swift => CKQuery-Filter.swift} (78%) rename Sources/CloudKitWebServices/Query/{CKWSQuery.swift => CKQuery.swift} (67%) rename Sources/CloudKitWebServices/Record/{CKWSRecord-ID.swift => CKRecord-ID.swift} (88%) rename Sources/CloudKitWebServices/Record/{CKWSRecord-Reference.swift => CKRecord-Reference.swift} (78%) rename Sources/CloudKitWebServices/Record/{CKWSRecord.swift => CKRecord.swift} (74%) rename Sources/CloudKitWebServices/RecordZone/{CKWSRecordZone-Capabilites.swift => CKRecordZone-Capabilites.swift} (88%) rename Sources/CloudKitWebServices/RecordZone/{CKWSRecordZone-ID.swift => CKRecordZone-ID.swift} (73%) rename Sources/CloudKitWebServices/RecordZone/{CKWSRecordZone.swift => CKRecordZone.swift} (62%) rename Tests/CloudKitWebServicesTests/Container/{CKWSContainerTests.swift => CKContainerTests.swift} (61%) diff --git a/README.md b/README.md index bffa341..97381f7 100644 --- a/README.md +++ b/README.md @@ -19,15 +19,20 @@ The goal of this project is to provide developers with easy access to CloudKit w ## Getting Started -To get started with CloudKit Web Services, first create a `CKWSContainer`. +This package is designed to mirror Apple's CloudKit framework when possible. This will allow the library to be a drop-in replacement for the native CloudKit client when it isn't available. + +To get started with CloudKit Web Services, first create a `CKContainer`. ``` // Configuration + +import CloudKitWebServices + let identifier = "iCloud.{your-container-name}" let token = "{your-token-generated-from-cloudkit-console}" -let container = CKWSContainer(identifier: identifier, token: token, enviornment: .development) +let container = CKContainer(identifier: identifier, token: token, environment: .development) ``` @@ -36,7 +41,7 @@ Creating a query request ``` // Create an operation that queries all records of the "ExampleType" -let queryOperation = CKWSQueryOperation(query: CKWSQuery(recordType: "ExampleType")) +let queryOperation = CKQueryOperation(query: CKQuery(recordType: "ExampleType")) queryOperation.recordMatchedBlock = { recordID, result in switch result { diff --git a/Sources/CloudKitWebServices/Asset/CKWSAsset.swift b/Sources/CloudKitWebServices/Asset/CKAsset.swift similarity index 88% rename from Sources/CloudKitWebServices/Asset/CKWSAsset.swift rename to Sources/CloudKitWebServices/Asset/CKAsset.swift index 4c280c9..36dd4fc 100644 --- a/Sources/CloudKitWebServices/Asset/CKWSAsset.swift +++ b/Sources/CloudKitWebServices/Asset/CKAsset.swift @@ -1,5 +1,5 @@ // -// CKWSAsset.swift +// CKAsset.swift // CloudKitWebServices // // Created by Eric Dorphy on 6/19/21. @@ -9,7 +9,7 @@ import Foundation /// An external file that belongs to a record. -public struct CKWSAsset { +public struct CKAsset { /// The URL for accessing the asset. /// /// After you create an asset, use the URL in this property to access the asset's contents. The URL in this property is different from the one you specified when creating the asset. @@ -22,4 +22,4 @@ public struct CKWSAsset { } } -extension CKWSAsset: CKWSRecordValueProtocol { } +extension CKAsset: CKRecordValueProtocol { } diff --git a/Sources/CloudKitWebServices/Asset/CKWSRemoteAsset.swift b/Sources/CloudKitWebServices/Asset/CKRemoteAsset.swift similarity index 77% rename from Sources/CloudKitWebServices/Asset/CKWSRemoteAsset.swift rename to Sources/CloudKitWebServices/Asset/CKRemoteAsset.swift index f251299..a930587 100644 --- a/Sources/CloudKitWebServices/Asset/CKWSRemoteAsset.swift +++ b/Sources/CloudKitWebServices/Asset/CKRemoteAsset.swift @@ -1,5 +1,5 @@ // -// CKWSRemoteAsset.swift +// CKRemoteAsset.swift // CloudKitWebServices // // Created by Eric Dorphy on 12/26/21. @@ -8,7 +8,7 @@ import Foundation -public struct CKWSRemoteAsset: CKWSAssetProtocol { +public struct CKRemoteAsset: CKAssetProtocol { public let downloadURL: URL init(assetDictionary: AssetDictionary) { @@ -20,4 +20,4 @@ public struct CKWSRemoteAsset: CKWSAssetProtocol { } } -extension CKWSRemoteAsset: CKWSRecordValueProtocol { } +extension CKRemoteAsset: CKRecordValueProtocol { } diff --git a/Sources/CloudKitWebServices/Container/CKWSContainer-Configuration.swift b/Sources/CloudKitWebServices/Container/CKContainer-Configuration.swift similarity index 94% rename from Sources/CloudKitWebServices/Container/CKWSContainer-Configuration.swift rename to Sources/CloudKitWebServices/Container/CKContainer-Configuration.swift index 7397cca..2f06666 100644 --- a/Sources/CloudKitWebServices/Container/CKWSContainer-Configuration.swift +++ b/Sources/CloudKitWebServices/Container/CKContainer-Configuration.swift @@ -1,5 +1,5 @@ // -// CKWSContainer-Configuration.swift +// CKContainer-Configuration.swift // CloudKitWebServices // // Created by Eric Dorphy on 1/2/22. @@ -8,7 +8,7 @@ import Foundation -public extension CKWSContainer { +public extension CKContainer { struct Configuration { public let containerIdentifier: ContainerIdentifier public let apiToken: APIToken diff --git a/Sources/CloudKitWebServices/Container/CKWSContainer-CurrentUser.swift b/Sources/CloudKitWebServices/Container/CKContainer-CurrentUser.swift similarity index 81% rename from Sources/CloudKitWebServices/Container/CKWSContainer-CurrentUser.swift rename to Sources/CloudKitWebServices/Container/CKContainer-CurrentUser.swift index 15d8086..6546585 100644 --- a/Sources/CloudKitWebServices/Container/CKWSContainer-CurrentUser.swift +++ b/Sources/CloudKitWebServices/Container/CKContainer-CurrentUser.swift @@ -1,5 +1,5 @@ // -// CKWSContainer-CurrentUser.swift +// CKContainer-CurrentUser.swift // CloudKitWebServices // // Created by Eric Dorphy on 12/24/21. @@ -8,15 +8,15 @@ import Foundation -extension CKWSContainer { +extension CKContainer { // TODO: This error object is temporary and will be hidden internally once WSWebAuthenticationSession code is working with something like a `showSignIn` func. public struct LoginError: Error { public let redirectURL: URL } - public func fetchUserRecordID(completionHandler: @escaping (Result) -> Void) { - let operation = CKWSFetchCurrentUserRecordOperation(session: self.session, containerURL: self.getContainerURL(), apiToken: self.apiToken) { result in + public func fetchUserRecordID(completionHandler: @escaping (Result) -> Void) { + let operation = CKFetchCurrentUserRecordOperation(session: self.session, containerURL: self.getContainerURL(), apiToken: self.apiToken) { result in completionHandler(result) } @@ -24,17 +24,17 @@ extension CKWSContainer { } } -private class CKWSFetchCurrentUserRecordOperation: CKWSOperation { +private class CKFetchCurrentUserRecordOperation: CKOperation { private let session: URLSession private let containerURL: URL - private let apiToken: CKWSContainer.APIToken + private let apiToken: CKContainer.APIToken - private let resultBlock: (Result) -> Void + private let resultBlock: (Result) -> Void - init(session: URLSession, containerURL: URL, apiToken: CKWSContainer.APIToken, resultBlock: @escaping (Result) -> Void) { + init(session: URLSession, containerURL: URL, apiToken: CKContainer.APIToken, resultBlock: @escaping (Result) -> Void) { self.session = session self.containerURL = containerURL self.apiToken = apiToken @@ -62,7 +62,7 @@ private class CKWSFetchCurrentUserRecordOperation: CKWSOperation { do { let responseBody = try JSONDecoder().decode(OkResponseBody.self, from: data) - self.resultBlock(.success(CKWSRecord.ID(recordName: responseBody.userRecordName))) + self.resultBlock(.success(CKRecord.ID(recordName: responseBody.userRecordName))) } catch { assertionFailure("failed to decode ok response body with error: \(error)") self.resultBlock(.failure(error)) @@ -86,7 +86,7 @@ private class CKWSFetchCurrentUserRecordOperation: CKWSOperation { print("OAuth Token: \(responseBody.redirectURL.absoluteString)") - self.resultBlock(.failure(CKWSContainer.LoginError(redirectURL: responseBody.redirectURL))) + self.resultBlock(.failure(CKContainer.LoginError(redirectURL: responseBody.redirectURL))) } catch { } diff --git a/Sources/CloudKitWebServices/Container/CKWSContainer.swift b/Sources/CloudKitWebServices/Container/CKContainer.swift similarity index 86% rename from Sources/CloudKitWebServices/Container/CKWSContainer.swift rename to Sources/CloudKitWebServices/Container/CKContainer.swift index 1d4ef30..2d6ee42 100644 --- a/Sources/CloudKitWebServices/Container/CKWSContainer.swift +++ b/Sources/CloudKitWebServices/Container/CKContainer.swift @@ -1,5 +1,5 @@ // -// CKWSContainer.swift +// CKContainer.swift // CloudKitWebServices // // Created by Eric Dorphy on 6/12/21. @@ -8,7 +8,7 @@ import Foundation -public class CKWSContainer { +public class CKContainer { // MARK: - Types @@ -27,8 +27,8 @@ public class CKWSContainer { public let environment: Environment - public private(set) lazy var publicCloudDatabase: CKWSDatabase = { - CKWSDatabase(container: self, scope: .public) + public private(set) lazy var publicCloudDatabase: CKDatabase = { + CKDatabase(container: self, scope: .public) }() internal let apiToken: APIToken @@ -53,21 +53,21 @@ public class CKWSContainer { // MARK: - Public Functions - public func database(with scope: CKWSDatabase.Scope) -> CKWSDatabase { + public func database(with scope: CKDatabase.Scope) -> CKDatabase { switch scope { case .public: return self.publicCloudDatabase } } - public func add(_ operation: CKWSOperation) { + public func add(_ operation: CKOperation) { // TODO: Inspect the configuration and apply them to the operation before enqueuing. self.operationQueue.addOperation(operation) } } -extension CKWSContainer { +extension CKContainer { func getContainerURL() -> URL { diff --git a/Sources/CloudKitWebServices/Database/CKWSDatabase.swift b/Sources/CloudKitWebServices/Database/CKDatabase.swift similarity index 86% rename from Sources/CloudKitWebServices/Database/CKWSDatabase.swift rename to Sources/CloudKitWebServices/Database/CKDatabase.swift index e7c187d..dd7d8ca 100644 --- a/Sources/CloudKitWebServices/Database/CKWSDatabase.swift +++ b/Sources/CloudKitWebServices/Database/CKDatabase.swift @@ -1,5 +1,5 @@ // -// CKWSDatabase.swift +// CKDatabase.swift // CloudKitWebServices // // Created by Eric Dorphy on 6/12/21. @@ -8,7 +8,7 @@ import Foundation -public class CKWSDatabase { +public class CKDatabase { // MARK: - Types @@ -27,18 +27,18 @@ public class CKWSDatabase { // MARK: - Properties - internal private(set) weak var container: CKWSContainer? + internal private(set) weak var container: CKContainer? public let scope: Scope // MARK: - Initialization - init(container: CKWSContainer, scope: Scope) { + init(container: CKContainer, scope: Scope) { self.container = container self.scope = scope } - public func add(_ operation: CKWSDatabaseOperation) { + public func add(_ operation: CKDatabaseOperation) { guard operation.isCancelled == false else { // TODO: Check CloudKit behavior and see which completion handlers are still invoked in this case. return @@ -57,7 +57,7 @@ public class CKWSDatabase { } } -internal extension CKWSDatabase { +internal extension CKDatabase { func getURL() -> URL { guard let container = container else { fatalError("database is missing container") diff --git a/Sources/CloudKitWebServices/Error/CKWSError.swift b/Sources/CloudKitWebServices/Error/CKError.swift similarity index 91% rename from Sources/CloudKitWebServices/Error/CKWSError.swift rename to Sources/CloudKitWebServices/Error/CKError.swift index e21572a..d68c7cc 100644 --- a/Sources/CloudKitWebServices/Error/CKWSError.swift +++ b/Sources/CloudKitWebServices/Error/CKError.swift @@ -1,5 +1,5 @@ // -// CKWSError.swift +// CKError.swift // CloudKitWebServices // // Created by Eric Dorphy on 12/26/21. @@ -8,7 +8,7 @@ import Foundation -public struct CKWSError: Error { +public struct CKError: Error { public let code: Code public let userInfo: [String: Any] @@ -18,7 +18,7 @@ public struct CKWSError: Error { } } -public extension CKWSError { +public extension CKError { // https://developer.apple.com/documentation/cloudkit/ckerror/code @@ -61,11 +61,11 @@ public extension CKWSError { } } -extension CKWSError: LocalizedError { +extension CKError: LocalizedError { // TODO: Implement this } -extension CKWSError: CustomNSError { +extension CKError: CustomNSError { public var errorCode: Int { code.rawValue @@ -76,11 +76,11 @@ extension CKWSError: CustomNSError { } public static var errorDomain: String { - "CKWSErrorDomain" + "CKErrorDomain" } } -internal extension CKWSError { +internal extension CKError { init(errorDictionary: RecordFetchErrorDictionary) { switch errorDictionary.serverErrorCode { case .notFound: diff --git a/Sources/CloudKitWebServices/Operations/CKWSOperation.swift b/Sources/CloudKitWebServices/Operations/CKOperation.swift similarity index 96% rename from Sources/CloudKitWebServices/Operations/CKWSOperation.swift rename to Sources/CloudKitWebServices/Operations/CKOperation.swift index cdaafd2..f759d6e 100644 --- a/Sources/CloudKitWebServices/Operations/CKWSOperation.swift +++ b/Sources/CloudKitWebServices/Operations/CKOperation.swift @@ -1,5 +1,5 @@ // -// CKWSOperation.swift +// CKOperation.swift // CloudKitWebServices // // Created by Eric Dorphy on 6/12/21. @@ -8,7 +8,7 @@ import Foundation -public class CKWSOperation: Operation { +public class CKOperation: Operation { // MARK: - Types @@ -45,7 +45,7 @@ public class CKWSOperation: Operation { // MARK: - Operation Support -public extension CKWSOperation { +public extension CKOperation { override var isAsynchronous: Bool { true diff --git a/Sources/CloudKitWebServices/Operations/Database/CKWSDatabaseOperation.swift b/Sources/CloudKitWebServices/Operations/Database/CKDatabaseOperation.swift similarity index 54% rename from Sources/CloudKitWebServices/Operations/Database/CKWSDatabaseOperation.swift rename to Sources/CloudKitWebServices/Operations/Database/CKDatabaseOperation.swift index 95c30d6..64d76d6 100644 --- a/Sources/CloudKitWebServices/Operations/Database/CKWSDatabaseOperation.swift +++ b/Sources/CloudKitWebServices/Operations/Database/CKDatabaseOperation.swift @@ -1,5 +1,5 @@ // -// CKWSDatabaseOperation.swift +// CKDatabaseOperation.swift // CloudKitWebServices // // Created by Eric Dorphy on 6/12/21. @@ -8,12 +8,12 @@ import Foundation -public class CKWSDatabaseOperation: CKWSOperation { - var database: CKWSDatabase? +public class CKDatabaseOperation: CKOperation { + var database: CKDatabase? } -internal extension CKWSDatabaseOperation { - func getRecordsURL(database: CKWSDatabase) -> URL { +internal extension CKDatabaseOperation { + func getRecordsURL(database: CKDatabase) -> URL { let url = database.getURL() return url.appendingPathComponent("records") } diff --git a/Sources/CloudKitWebServices/Operations/Database/Fetch/CKWSFetchRecordsOperation.swift b/Sources/CloudKitWebServices/Operations/Database/Fetch/CKFetchRecordsOperation.swift similarity index 88% rename from Sources/CloudKitWebServices/Operations/Database/Fetch/CKWSFetchRecordsOperation.swift rename to Sources/CloudKitWebServices/Operations/Database/Fetch/CKFetchRecordsOperation.swift index 01d7144..c712494 100644 --- a/Sources/CloudKitWebServices/Operations/Database/Fetch/CKWSFetchRecordsOperation.swift +++ b/Sources/CloudKitWebServices/Operations/Database/Fetch/CKFetchRecordsOperation.swift @@ -1,5 +1,5 @@ // -// CKWSFetchRecordsOperation.swift +// CKFetchRecordsOperation.swift // CloudKitWebServices // // Created by Eric Dorphy on 6/12/21. @@ -8,21 +8,21 @@ import Foundation -public class CKWSFetchRecordsOperation: CKWSDatabaseOperation { +public class CKFetchRecordsOperation: CKDatabaseOperation { // MARK: - Properties - private let recordIDs: [CKWSRecord.ID] + private let recordIDs: [CKRecord.ID] - public var desiredKeys: [CKWSRecord.FieldKey]? + public var desiredKeys: [CKRecord.FieldKey]? - public var perRecordResultBlock: ((_ recordID: CKWSRecord.ID, _ recordResult: Result) -> Void)? + public var perRecordResultBlock: ((_ recordID: CKRecord.ID, _ recordResult: Result) -> Void)? public var fetchRecordsResultBlock: ((_ operationResult: Result) -> Void)? // MARK: - Initialization - public init(recordIDs: [CKWSRecord.ID]) { + public init(recordIDs: [CKRecord.ID]) { self.recordIDs = recordIDs } @@ -70,14 +70,14 @@ public class CKWSFetchRecordsOperation: CKWSDatabaseOperation { switch recordResult { case .success(let recordDictionary): - let record = CKWSRecord(recordDictionary: recordDictionary) + let record = CKRecord(recordDictionary: recordDictionary) // TODO: Automatically download the fields that are assets THEN invoke the result fetched block self.invokeRecordResultBlock((record.recordID, .success(record))) case .failure(let errorDictionary): // swiftlint:disable:next force_unwrapping - let recordID = CKWSRecord.ID(recordName: errorDictionary.recordName!) - let error = CKWSError(errorDictionary: errorDictionary) + let recordID = CKRecord.ID(recordName: errorDictionary.recordName!) + let error = CKError(errorDictionary: errorDictionary) self.invokeRecordResultBlock((recordID, .failure(error))) } @@ -86,7 +86,7 @@ public class CKWSFetchRecordsOperation: CKWSDatabaseOperation { self.invokeOperationResultBlock(nil) case 503: - self.invokeOperationResultBlock(CKWSError(code: .serviceUnavailable)) + self.invokeOperationResultBlock(CKError(code: .serviceUnavailable)) default: let errorResponse = try JSONDecoder().decode(RecordFetchErrorDictionary.self, from: data) @@ -101,7 +101,7 @@ public class CKWSFetchRecordsOperation: CKWSDatabaseOperation { task.resume() } - private func invokeRecordResultBlock(_ completion: @autoclosure () -> (recordID: CKWSRecord.ID, result: Result)) { + private func invokeRecordResultBlock(_ completion: @autoclosure () -> (recordID: CKRecord.ID, result: Result)) { if let perRecordResultBlock = self.perRecordResultBlock { let result = completion() perRecordResultBlock(result.recordID, result.result) @@ -142,7 +142,7 @@ public class CKWSFetchRecordsOperation: CKWSDatabaseOperation { } } -extension CKWSFetchRecordsOperation { +extension CKFetchRecordsOperation { func getURL() -> URL { guard let database = self.database else { fatalError("the operation was not configured with a database which is required") @@ -157,7 +157,7 @@ extension CKWSFetchRecordsOperation { // MARK: - Request/Response Body Types -internal extension CKWSFetchRecordsOperation { +internal extension CKFetchRecordsOperation { struct RequestBody: Encodable { /// Array of record dictionaries, described in Lookup Record Dictionary, identifying the records to fetch. @@ -166,7 +166,7 @@ internal extension CKWSFetchRecordsOperation { // TODO: ZoneID // TODO: DesiredKeys - let desiredKeys: [CKWSRecord.FieldKey]? + let desiredKeys: [CKRecord.FieldKey]? // Explicitly set this to false in case default behaivor changes. The Record Decoding is setup to expect this behavior. let numbersAsStrings: Bool = false diff --git a/Sources/CloudKitWebServices/Operations/Database/Query/CKWSQueryOperation-Cursor.swift b/Sources/CloudKitWebServices/Operations/Database/Query/CKQueryOperation-Cursor.swift similarity index 73% rename from Sources/CloudKitWebServices/Operations/Database/Query/CKWSQueryOperation-Cursor.swift rename to Sources/CloudKitWebServices/Operations/Database/Query/CKQueryOperation-Cursor.swift index 26d72ef..b46ca27 100644 --- a/Sources/CloudKitWebServices/Operations/Database/Query/CKWSQueryOperation-Cursor.swift +++ b/Sources/CloudKitWebServices/Operations/Database/Query/CKQueryOperation-Cursor.swift @@ -1,5 +1,5 @@ // -// CKWSQueryOperation-Cursor.swift +// CKQueryOperation-Cursor.swift // CloudKitWebServices // // Created by Eric Dorphy on 12/26/21. @@ -8,12 +8,12 @@ import Foundation -public extension CKWSQueryOperation { +public extension CKQueryOperation { struct Cursor { - let query: CKWSQuery + let query: CKQuery let continuationMarker: String - init?(query: CKWSQuery, continuationMarker: String?) { + init?(query: CKQuery, continuationMarker: String?) { guard let continuationMarker = continuationMarker else { return nil } diff --git a/Sources/CloudKitWebServices/Operations/Database/Query/CKWSQueryOperation.swift b/Sources/CloudKitWebServices/Operations/Database/Query/CKQueryOperation.swift similarity index 89% rename from Sources/CloudKitWebServices/Operations/Database/Query/CKWSQueryOperation.swift rename to Sources/CloudKitWebServices/Operations/Database/Query/CKQueryOperation.swift index 413475b..b5d3dd4 100644 --- a/Sources/CloudKitWebServices/Operations/Database/Query/CKWSQueryOperation.swift +++ b/Sources/CloudKitWebServices/Operations/Database/Query/CKQueryOperation.swift @@ -1,5 +1,5 @@ // -// CKWSQueryOperation.swift +// CKQueryOperation.swift // CloudKitWebServices // // Created by Eric Dorphy on 6/13/21. @@ -8,27 +8,27 @@ import Foundation -public class CKWSQueryOperation: CKWSDatabaseOperation { +public class CKQueryOperation: CKDatabaseOperation { - public var query: CKWSQuery + public var query: CKQuery public var cursor: Cursor? - public var resultsLimit: Int = CKWSQueryOperation.maximumResults + public var resultsLimit: Int = CKQueryOperation.maximumResults /// An array of strings containing record field names that limits the amount of data returned in this operation. Only the fields specified in the array are returned. The default is `nil`, which fetches all record fields. public var desiredKeys: [String]? - public var recordMatchedBlock: ((_ recordID: CKWSRecord.ID, _ recordResult: Result) -> Void)? + public var recordMatchedBlock: ((_ recordID: CKRecord.ID, _ recordResult: Result) -> Void)? - public var queryResultBlock: ((_ operationResult: Result) -> Void)? + public var queryResultBlock: ((_ operationResult: Result) -> Void)? - public init(query: CKWSQuery) { + public init(query: CKQuery) { self.query = query self.cursor = nil } - public init(cursor: CKWSQueryOperation.Cursor) { + public init(cursor: CKQueryOperation.Cursor) { self.query = cursor.query self.cursor = cursor } @@ -61,7 +61,7 @@ public class CKWSQueryOperation: CKWSDatabaseOperation { body.records.forEach { record in // TODO: Automatically download the fields that are assets THEN invoke the result fetched block - self.invokeRecordFetchedBlock(CKWSRecord(recordDictionary: record)) + self.invokeRecordFetchedBlock(CKRecord(recordDictionary: record)) } self.invokeRecordMatchedBlock(.success(Cursor(query: self.query, continuationMarker: body.continuationMarker))) @@ -87,7 +87,7 @@ public class CKWSQueryOperation: CKWSDatabaseOperation { } } - private func invokeRecordFetchedBlock(_ record: @autoclosure () -> (CKWSRecord)) { + private func invokeRecordFetchedBlock(_ record: @autoclosure () -> (CKRecord)) { if let recordFetchedBlock = self.recordMatchedBlock { let record = record() @@ -135,13 +135,13 @@ public class CKWSQueryOperation: CKWSDatabaseOperation { // TODO: Move to better place -extension CKWSQueryOperation { +extension CKQueryOperation { static let maximumResults: Int = 200 } // MARK: - Request/Response Body Types -internal extension CKWSQueryOperation { +internal extension CKQueryOperation { struct RequestBody: Encodable { // TODO: ZoneID diff --git a/Sources/CloudKitWebServices/Protocols/CKWSAssetProtocol.swift b/Sources/CloudKitWebServices/Protocols/CKAssetProtocol.swift similarity index 72% rename from Sources/CloudKitWebServices/Protocols/CKWSAssetProtocol.swift rename to Sources/CloudKitWebServices/Protocols/CKAssetProtocol.swift index 70bf8db..d8be0f8 100644 --- a/Sources/CloudKitWebServices/Protocols/CKWSAssetProtocol.swift +++ b/Sources/CloudKitWebServices/Protocols/CKAssetProtocol.swift @@ -1,5 +1,5 @@ // -// CKWSAssetProtocol.swift +// CKAssetProtocol.swift // CloudKitWebServices // // Created by Eric Dorphy on 12/26/21. @@ -8,6 +8,6 @@ import Foundation -public protocol CKWSAssetProtocol { +public protocol CKAssetProtocol { } diff --git a/Sources/CloudKitWebServices/Protocols/CKRecordValueProtocol.swift b/Sources/CloudKitWebServices/Protocols/CKRecordValueProtocol.swift new file mode 100644 index 0000000..a81edf2 --- /dev/null +++ b/Sources/CloudKitWebServices/Protocols/CKRecordValueProtocol.swift @@ -0,0 +1,29 @@ +// +// CKRecordValueProtocol.swift +// CloudKitWebServices +// +// Created by Eric Dorphy on 6/15/21. +// Copyright © 2021 Twin Cities App Dev LLC. All rights reserved. +// + +import CoreLocation + +public protocol CKRecordValueProtocol { } + +// Refer to the Types and Dictionaries section within the reference +// https://developer.apple.com/library/archive/documentation/DataManagement/Conceptual/CloudKitWebServicesReference/Types.html + +extension Data: CKRecordValueProtocol { } +extension Date: CKRecordValueProtocol { } +extension Double: CKRecordValueProtocol { } +extension Int64: CKRecordValueProtocol { } + +extension CLLocation: CKRecordValueProtocol { } +extension LocationDictionary: CKRecordValueProtocol { } + +extension CKRecord.Reference: CKRecordValueProtocol { } +extension ReferenceDictionary: CKRecordValueProtocol { } + +extension String: CKRecordValueProtocol { } + +extension Array: CKRecordValueProtocol where Element: CKRecordValueProtocol { } diff --git a/Sources/CloudKitWebServices/Protocols/CKWSRecordValueProtocol.swift b/Sources/CloudKitWebServices/Protocols/CKWSRecordValueProtocol.swift deleted file mode 100644 index 517cfa8..0000000 --- a/Sources/CloudKitWebServices/Protocols/CKWSRecordValueProtocol.swift +++ /dev/null @@ -1,29 +0,0 @@ -// -// CKWSRecordValueProtocol.swift -// CloudKitWebServices -// -// Created by Eric Dorphy on 6/15/21. -// Copyright © 2021 Twin Cities App Dev LLC. All rights reserved. -// - -import CoreLocation - -public protocol CKWSRecordValueProtocol { } - -// Refer to the Types and Dictionaries section within the reference -// https://developer.apple.com/library/archive/documentation/DataManagement/Conceptual/CloudKitWebServicesReference/Types.html - -extension Data: CKWSRecordValueProtocol { } -extension Date: CKWSRecordValueProtocol { } -extension Double: CKWSRecordValueProtocol { } -extension Int64: CKWSRecordValueProtocol { } - -extension CLLocation: CKWSRecordValueProtocol { } -extension LocationDictionary: CKWSRecordValueProtocol { } - -extension CKWSRecord.Reference: CKWSRecordValueProtocol { } -extension ReferenceDictionary: CKWSRecordValueProtocol { } - -extension String: CKWSRecordValueProtocol { } - -extension Array: CKWSRecordValueProtocol where Element: CKWSRecordValueProtocol { } diff --git a/Sources/CloudKitWebServices/Query/CKWSQuery-Filter-LocationDistance.swift b/Sources/CloudKitWebServices/Query/CKQuery-Filter-LocationDistance.swift similarity index 84% rename from Sources/CloudKitWebServices/Query/CKWSQuery-Filter-LocationDistance.swift rename to Sources/CloudKitWebServices/Query/CKQuery-Filter-LocationDistance.swift index e38f956..ee9fb9c 100644 --- a/Sources/CloudKitWebServices/Query/CKWSQuery-Filter-LocationDistance.swift +++ b/Sources/CloudKitWebServices/Query/CKQuery-Filter-LocationDistance.swift @@ -1,5 +1,5 @@ // -// Query-Filter-LocationDistance.swift +// CKQuery-Filter-LocationDistance.swift // CloudKitWebServices // // Created by Eric Dorphy on 6/16/21. @@ -9,7 +9,7 @@ import CoreLocation import Foundation -public extension CKWSQuery.Filter { +public extension CKQuery.Filter { init(name: String, distance: Double, to location: CLLocation) { self.name = name self.comparator = .lessThan diff --git a/Sources/CloudKitWebServices/Query/CKWSQuery-Filter.swift b/Sources/CloudKitWebServices/Query/CKQuery-Filter.swift similarity index 78% rename from Sources/CloudKitWebServices/Query/CKWSQuery-Filter.swift rename to Sources/CloudKitWebServices/Query/CKQuery-Filter.swift index b999b7a..cdc6bd5 100644 --- a/Sources/CloudKitWebServices/Query/CKWSQuery-Filter.swift +++ b/Sources/CloudKitWebServices/Query/CKQuery-Filter.swift @@ -1,5 +1,5 @@ // -// Query-Filter.swift +// CKQuery-Filter.swift // CloudKitWebServices // // Created by Eric Dorphy on 6/16/21. @@ -8,17 +8,17 @@ import Foundation -public extension CKWSQuery { +public extension CKQuery { struct Filter { let name: String let comparator: Comparator - let value: CKWSRecordValueProtocol + let value: CKRecordValueProtocol let distance: Double? } } -public extension CKWSQuery.Filter { - init(name: String, comparator: CKWSQuery.Filter.Comparator, value: CKWSRecordValueProtocol) { +public extension CKQuery.Filter { + init(name: String, comparator: CKQuery.Filter.Comparator, value: CKRecordValueProtocol) { self.name = name self.comparator = comparator self.value = value @@ -33,7 +33,7 @@ public extension CKWSQuery.Filter { case let referenceValue as ReferenceDictionary: return RecordFieldDictionary(value: referenceValue, type: .reference) - case let recordReferenceValue as CKWSRecord.Reference: + case let recordReferenceValue as CKRecord.Reference: return RecordFieldDictionary(value: recordReferenceValue, type: .reference) default: @@ -42,7 +42,7 @@ public extension CKWSQuery.Filter { } } -public extension CKWSQuery.Filter { +public extension CKQuery.Filter { enum Comparator: String, Codable { case equals = "EQUALS" case lessThan = "LESS_THAN" diff --git a/Sources/CloudKitWebServices/Query/CKWSQuery.swift b/Sources/CloudKitWebServices/Query/CKQuery.swift similarity index 67% rename from Sources/CloudKitWebServices/Query/CKWSQuery.swift rename to Sources/CloudKitWebServices/Query/CKQuery.swift index f8769ed..09a9179 100644 --- a/Sources/CloudKitWebServices/Query/CKWSQuery.swift +++ b/Sources/CloudKitWebServices/Query/CKQuery.swift @@ -1,5 +1,5 @@ // -// CKWSQuery.swift +// CKQuery.swift // CloudKitWebServices // // Created by Eric Dorphy on 6/13/21. @@ -8,14 +8,14 @@ import Foundation -public struct CKWSQuery { +public struct CKQuery { public let recordType: String - public let filters: [CKWSQuery.Filter]? + public let filters: [CKQuery.Filter]? public var sortDescriptors: [NSSortDescriptor]? - public init(recordType: String, filters: [CKWSQuery.Filter]? = nil) { + public init(recordType: String, filters: [CKQuery.Filter]? = nil) { self.recordType = recordType self.filters = filters } diff --git a/Sources/CloudKitWebServices/Record/CKWSRecord-ID.swift b/Sources/CloudKitWebServices/Record/CKRecord-ID.swift similarity index 88% rename from Sources/CloudKitWebServices/Record/CKWSRecord-ID.swift rename to Sources/CloudKitWebServices/Record/CKRecord-ID.swift index 95b5a5e..27a91d6 100644 --- a/Sources/CloudKitWebServices/Record/CKWSRecord-ID.swift +++ b/Sources/CloudKitWebServices/Record/CKRecord-ID.swift @@ -1,5 +1,5 @@ // -// CKWSRecord-ID.swift +// CKRecord-ID.swift // CloudKitWebServices // // Created by Eric Dorphy on 6/16/21. @@ -8,12 +8,12 @@ import Foundation -public extension CKWSRecord { +public extension CKRecord { /// An object that uniquely identifies a record in a database. struct ID: Equatable, Hashable { public let recordName: String - public let zoneID: CKWSRecordZone.ID + public let zoneID: CKRecordZone.ID public init(recordName: String) { self.recordName = recordName @@ -26,7 +26,7 @@ public extension CKWSRecord { /// - zoneID: The ID of the record zone where you want to store the record. /// /// Use this method when you create or search for records in a zone other than the default zone. The value in the zoneID parameter must represent a zone that already exists in the database. If the record zone doesn’t exist, save the corresponding CKRecordZone object to the database before attempting to save any CKRecord objects in that zone. - public init(recordName: String, zoneID: CKWSRecordZone.ID) { + public init(recordName: String, zoneID: CKRecordZone.ID) { self.recordName = recordName self.zoneID = zoneID } diff --git a/Sources/CloudKitWebServices/Record/CKWSRecord-Reference.swift b/Sources/CloudKitWebServices/Record/CKRecord-Reference.swift similarity index 78% rename from Sources/CloudKitWebServices/Record/CKWSRecord-Reference.swift rename to Sources/CloudKitWebServices/Record/CKRecord-Reference.swift index 7e2af03..230039e 100644 --- a/Sources/CloudKitWebServices/Record/CKWSRecord-Reference.swift +++ b/Sources/CloudKitWebServices/Record/CKRecord-Reference.swift @@ -1,5 +1,5 @@ // -// Record-Reference.swift +// CKRecord-Reference.swift // CloudKitWebServices // // Created by Eric Dorphy on 6/16/21. @@ -8,23 +8,23 @@ import Foundation -public extension CKWSRecord { +public extension CKRecord { struct Reference: Equatable, Hashable { - public let recordID: CKWSRecord.ID + public let recordID: CKRecord.ID public let action: ReferenceAction - public init(recordID: CKWSRecord.ID, action: ReferenceAction) { + public init(recordID: CKRecord.ID, action: ReferenceAction) { self.recordID = recordID self.action = action } - public init(record: CKWSRecord, action: ReferenceAction) { + public init(record: CKRecord, action: ReferenceAction) { self.recordID = record.recordID self.action = action } internal init(reference: ReferenceDictionary) { - self.recordID = CKWSRecord.ID(recordName: reference.recordName) + self.recordID = CKRecord.ID(recordName: reference.recordName) self.action = { guard let action = reference.action else { return .none } switch action { diff --git a/Sources/CloudKitWebServices/Record/CKWSRecord.swift b/Sources/CloudKitWebServices/Record/CKRecord.swift similarity index 74% rename from Sources/CloudKitWebServices/Record/CKWSRecord.swift rename to Sources/CloudKitWebServices/Record/CKRecord.swift index 2a9b60b..c7c8ed4 100644 --- a/Sources/CloudKitWebServices/Record/CKWSRecord.swift +++ b/Sources/CloudKitWebServices/Record/CKRecord.swift @@ -1,5 +1,5 @@ // -// CKWSRecord.swift +// CKRecord.swift // CloudKitWebServices // // Created by Eric Dorphy on 6/13/21. @@ -8,28 +8,28 @@ import Foundation -public class CKWSRecord { +public class CKRecord { public typealias RecordType = String public typealias FieldKey = String - public let recordID: CKWSRecord.ID + public let recordID: CKRecord.ID public let recordType: RecordType public let creationDate: Date? - public let creatorUserRecordID: CKWSRecord.ID? + public let creatorUserRecordID: CKRecord.ID? public let modificationDate: Date? - public let lastModifiedUserRecordID: CKWSRecord.ID? + public let lastModifiedUserRecordID: CKRecord.ID? public let recordChangeTag: String? - public var fields: [String: CKWSRecordValueProtocol] + public var fields: [String: CKRecordValueProtocol] // TODO: Add support for parent, share, allTokens, etc. - public init(recordType: RecordType, recordID: CKWSRecord.ID) { + public init(recordType: RecordType, recordID: CKRecord.ID) { self.recordType = recordType self.recordID = recordID @@ -45,14 +45,14 @@ public class CKWSRecord { } init(recordDictionary: RecordDictionary) { - self.recordID = CKWSRecord.ID(recordName: recordDictionary.recordName) + self.recordID = CKRecord.ID(recordName: recordDictionary.recordName) self.recordType = recordDictionary.recordType self.recordChangeTag = recordDictionary.recordChangeTag if let created = recordDictionary.created { // Dates are saved as milliseconds from 1970 so divide by 1000 is required to convert to seconds self.creationDate = Date(timeIntervalSince1970: created.timestamp / 1000) - self.creatorUserRecordID = CKWSRecord.ID(recordName: created.userRecordName) + self.creatorUserRecordID = CKRecord.ID(recordName: created.userRecordName) } else { self.creationDate = nil self.creatorUserRecordID = nil @@ -61,7 +61,7 @@ public class CKWSRecord { if let modified = recordDictionary.modified { // Dates are saved as milliseconds from 1970 so divide by 1000 is required to convert to seconds self.modificationDate = Date(timeIntervalSince1970: modified.timestamp / 1000) - self.lastModifiedUserRecordID = CKWSRecord.ID(recordName: modified.userRecordName) + self.lastModifiedUserRecordID = CKRecord.ID(recordName: modified.userRecordName) } else { self.modificationDate = nil self.lastModifiedUserRecordID = nil @@ -72,7 +72,7 @@ public class CKWSRecord { }) } - public subscript(key: String) -> CKWSRecordValueProtocol? { + public subscript(key: String) -> CKRecordValueProtocol? { fields[key] } } diff --git a/Sources/CloudKitWebServices/RecordZone/CKWSRecordZone-Capabilites.swift b/Sources/CloudKitWebServices/RecordZone/CKRecordZone-Capabilites.swift similarity index 88% rename from Sources/CloudKitWebServices/RecordZone/CKWSRecordZone-Capabilites.swift rename to Sources/CloudKitWebServices/RecordZone/CKRecordZone-Capabilites.swift index df0f00c..1780481 100644 --- a/Sources/CloudKitWebServices/RecordZone/CKWSRecordZone-Capabilites.swift +++ b/Sources/CloudKitWebServices/RecordZone/CKRecordZone-Capabilites.swift @@ -1,5 +1,5 @@ // -// CKWSRecordZone.swift +// CKRecordZone.swift // CloudKitWebServices // // Created by Eric Dorphy on 6/16/21. @@ -8,7 +8,7 @@ import Foundation -public extension CKWSRecordZone { +public extension CKRecordZone { struct Capabilites: OptionSet { public let rawValue: UInt diff --git a/Sources/CloudKitWebServices/RecordZone/CKWSRecordZone-ID.swift b/Sources/CloudKitWebServices/RecordZone/CKRecordZone-ID.swift similarity index 73% rename from Sources/CloudKitWebServices/RecordZone/CKWSRecordZone-ID.swift rename to Sources/CloudKitWebServices/RecordZone/CKRecordZone-ID.swift index a21125c..a668246 100644 --- a/Sources/CloudKitWebServices/RecordZone/CKWSRecordZone-ID.swift +++ b/Sources/CloudKitWebServices/RecordZone/CKRecordZone-ID.swift @@ -1,5 +1,5 @@ // -// CKWSRecordZone-ID.swift +// CKRecordZone-ID.swift // CloudKitWebServices // // Created by Eric Dorphy on 6/16/21. @@ -8,7 +8,7 @@ import Foundation -public extension CKWSRecordZone { +public extension CKRecordZone { struct ID: Hashable { let zoneName: String let ownerName: String @@ -18,7 +18,7 @@ public extension CKWSRecordZone { self.ownerName = ownerName } - static let `default`: CKWSRecordZone.ID = CKWSRecordZone.ID(zoneName: defaultZoneName, ownerName: "") + static let `default`: CKRecordZone.ID = CKRecordZone.ID(zoneName: defaultZoneName, ownerName: "") static let defaultZoneName: String = "_defaultZone" } } diff --git a/Sources/CloudKitWebServices/RecordZone/CKWSRecordZone.swift b/Sources/CloudKitWebServices/RecordZone/CKRecordZone.swift similarity index 62% rename from Sources/CloudKitWebServices/RecordZone/CKWSRecordZone.swift rename to Sources/CloudKitWebServices/RecordZone/CKRecordZone.swift index 8ef75b0..1b04db1 100644 --- a/Sources/CloudKitWebServices/RecordZone/CKWSRecordZone.swift +++ b/Sources/CloudKitWebServices/RecordZone/CKRecordZone.swift @@ -9,20 +9,20 @@ import Foundation /// A database partition that contains related records. -public struct CKWSRecordZone { - let zoneID: CKWSRecordZone.ID - let capabilites: CKWSRecordZone.Capabilites +public struct CKRecordZone { + let zoneID: CKRecordZone.ID + let capabilites: CKRecordZone.Capabilites // TODO: init(zoneName: String), uses default user as owner name... which read only cloudkit doesn't have - init(zoneID: CKWSRecordZone.ID) { + init(zoneID: CKRecordZone.ID) { self.zoneID = zoneID - self.capabilites = CKWSRecordZone.Capabilites() + self.capabilites = CKRecordZone.Capabilites() } /// Returns the default record zone. /// - Returns: Returns the default record zone. - static func `default`() -> CKWSRecordZone { - CKWSRecordZone(zoneID: .default) + static func `default`() -> CKRecordZone { + CKRecordZone(zoneID: .default) } } diff --git a/Sources/CloudKitWebServices/Reference/Dictionaries/AssetDictionary.swift b/Sources/CloudKitWebServices/Reference/Dictionaries/AssetDictionary.swift index afd7a73..e5fb179 100644 --- a/Sources/CloudKitWebServices/Reference/Dictionaries/AssetDictionary.swift +++ b/Sources/CloudKitWebServices/Reference/Dictionaries/AssetDictionary.swift @@ -49,4 +49,4 @@ struct AssetDictionary: Codable { } // TODO: Temporary, eventually want to switch this to an internal protocol OR remove conformance entirely and replace occurrences in record's fields with public type -extension AssetDictionary: CKWSRecordValueProtocol { } +extension AssetDictionary: CKRecordValueProtocol { } diff --git a/Sources/CloudKitWebServices/Reference/Dictionaries/FilterDictionary.swift b/Sources/CloudKitWebServices/Reference/Dictionaries/FilterDictionary.swift index 6629853..3c70f35 100644 --- a/Sources/CloudKitWebServices/Reference/Dictionaries/FilterDictionary.swift +++ b/Sources/CloudKitWebServices/Reference/Dictionaries/FilterDictionary.swift @@ -17,7 +17,7 @@ struct FilterDictionary: Encodable { case distance } - let comparator: CKWSQuery.Filter.Comparator + let comparator: CKQuery.Filter.Comparator let fieldName: String? let fieldValue: RecordFieldDictionary let distance: Double? @@ -32,7 +32,7 @@ struct FilterDictionary: Encodable { } extension FilterDictionary { - init(queryFilter: CKWSQuery.Filter) { + init(queryFilter: CKQuery.Filter) { self.comparator = queryFilter.comparator self.fieldName = queryFilter.name self.fieldValue = queryFilter.getRecordFieldValue() diff --git a/Sources/CloudKitWebServices/Reference/Dictionaries/QueryDictionary.swift b/Sources/CloudKitWebServices/Reference/Dictionaries/QueryDictionary.swift index 85c812c..4aca6f9 100644 --- a/Sources/CloudKitWebServices/Reference/Dictionaries/QueryDictionary.swift +++ b/Sources/CloudKitWebServices/Reference/Dictionaries/QueryDictionary.swift @@ -21,7 +21,7 @@ struct QueryDictionary: Encodable { } extension QueryDictionary { - init(query: CKWSQuery) { + init(query: CKQuery) { self.recordType = query.recordType self.filterBy = query.filters?.compactMap({ queryFilter in diff --git a/Sources/CloudKitWebServices/Reference/Dictionaries/RecordFieldDictionary.swift b/Sources/CloudKitWebServices/Reference/Dictionaries/RecordFieldDictionary.swift index 0ae2ade..fb14041 100644 --- a/Sources/CloudKitWebServices/Reference/Dictionaries/RecordFieldDictionary.swift +++ b/Sources/CloudKitWebServices/Reference/Dictionaries/RecordFieldDictionary.swift @@ -47,12 +47,12 @@ struct RecordFieldDictionary: Codable { } - let value: CKWSRecordValueProtocol + let value: CKRecordValueProtocol // TODO: The reference states that type is optional, but what is the practical usage of this? Maybe make it required let type: FieldType? - init(value: CKWSRecordValueProtocol, type: FieldType?) { + init(value: CKRecordValueProtocol, type: FieldType?) { self.value = value self.type = type } @@ -90,7 +90,7 @@ struct RecordFieldDictionary: Codable { case let referenceValue as ReferenceDictionary: try container.encode(referenceValue, forKey: .value) - case let recordReferenceValue as CKWSRecord.Reference: + case let recordReferenceValue as CKRecord.Reference: try container.encode(ReferenceDictionary(reference: recordReferenceValue), forKey: .value) case let stringValue as String: @@ -122,7 +122,7 @@ struct RecordFieldDictionary: Codable { case .asset: let assetDictionary = try values.decode(AssetDictionary.self, forKey: .value) // TODO: Figure out a way to detect if asset is remote or local, but for now since the library is read-only, it HAS to be remote - self.value = CKWSRemoteAsset(assetDictionary: assetDictionary) + self.value = CKRemoteAsset(assetDictionary: assetDictionary) // TODO: Bytes @@ -145,7 +145,7 @@ struct RecordFieldDictionary: Codable { case .reference: let reference = try values.decode(ReferenceDictionary.self, forKey: .value) - self.value = CKWSRecord.Reference(reference: reference) + self.value = CKRecord.Reference(reference: reference) case .string: let stringValue = try values.decode(String.self, forKey: .value) @@ -156,7 +156,7 @@ struct RecordFieldDictionary: Codable { case .assetList: let assetDictionaries = try values.decode([AssetDictionary].self, forKey: .value) // TODO: Figure out a way to detect if asset is remote or local, but for now since the library is read-only, it HAS to be remote - self.value = assetDictionaries.map { CKWSRemoteAsset(assetDictionary: $0) } + self.value = assetDictionaries.map { CKRemoteAsset(assetDictionary: $0) } // TODO: Bytes List @@ -178,7 +178,7 @@ struct RecordFieldDictionary: Codable { case .referenceList: let references = try values.decode([ReferenceDictionary].self, forKey: .value) - self.value = references.map { CKWSRecord.Reference(reference: $0) } + self.value = references.map { CKRecord.Reference(reference: $0) } case .stringList: let stringValues = try values.decode([String].self, forKey: .value) diff --git a/Sources/CloudKitWebServices/Reference/Dictionaries/ReferenceDictionary.swift b/Sources/CloudKitWebServices/Reference/Dictionaries/ReferenceDictionary.swift index 464d2e7..66db331 100644 --- a/Sources/CloudKitWebServices/Reference/Dictionaries/ReferenceDictionary.swift +++ b/Sources/CloudKitWebServices/Reference/Dictionaries/ReferenceDictionary.swift @@ -27,7 +27,7 @@ struct ReferenceDictionary: Codable { self.action = action } - init(reference: CKWSRecord.Reference) { + init(reference: CKRecord.Reference) { self.recordName = reference.recordID.recordName self.zoneID = nil self.action = nil diff --git a/Tests/CloudKitWebServicesTests/Container/CKWSContainerTests.swift b/Tests/CloudKitWebServicesTests/Container/CKContainerTests.swift similarity index 61% rename from Tests/CloudKitWebServicesTests/Container/CKWSContainerTests.swift rename to Tests/CloudKitWebServicesTests/Container/CKContainerTests.swift index d8f0cad..5a0da8a 100644 --- a/Tests/CloudKitWebServicesTests/Container/CKWSContainerTests.swift +++ b/Tests/CloudKitWebServicesTests/Container/CKContainerTests.swift @@ -1,5 +1,5 @@ // -// CKWSContainerTests.swift +// CKContainerTests.swift // CloudKitWebServicesTests // // Created by Eric Dorphy on 12/22/21. @@ -9,21 +9,21 @@ import CloudKitWebServices import XCTest -class CKWSContainerTests: XCTestCase { +class CKContainerTests: XCTestCase { func testContainerInit() throws { - XCTAssertNotNil(CKWSContainer(identifier: "non-empty-value", token: "non-empty-value")) + XCTAssertNotNil(CKContainer(identifier: "non-empty-value", token: "non-empty-value")) } func testContainer_EmptyIdentifier_Fails() throws { throw XCTSkip("Code needs updating to fail initialization") - // let container = CKWSContainer(identifier: "", token: "non-empty-value") + // let container = CKContainer(identifier: "", token: "non-empty-value") } func testContainer_EmptyAPIToken_Fails() throws { throw XCTSkip("Code needs updating to fail initialization") - // let container = CKWSContainer(identifier: "non-empty-value", token: "") + // let container = CKContainer(identifier: "non-empty-value", token: "") } } diff --git a/Tests/CloudKitWebServicesTests/Reference/Dictionaries/RecordFieldDictionaryTests.swift b/Tests/CloudKitWebServicesTests/Reference/Dictionaries/RecordFieldDictionaryTests.swift index 4b57e9c..c53bc94 100644 --- a/Tests/CloudKitWebServicesTests/Reference/Dictionaries/RecordFieldDictionaryTests.swift +++ b/Tests/CloudKitWebServicesTests/Reference/Dictionaries/RecordFieldDictionaryTests.swift @@ -28,7 +28,7 @@ class RecordFieldDictionaryTests: XCTestCase { XCTAssertEqual(value.type, .asset) - let asset = value.value as? CKWSRemoteAsset + let asset = value.value as? CKRemoteAsset XCTAssertNotNil(asset) XCTAssertEqual(asset?.downloadURL, URL(string: "https://cvws.icloud-content.com/B/somerecordpath")!) } @@ -107,7 +107,7 @@ class RecordFieldDictionaryTests: XCTestCase { } func testDecodeReferenceType() throws { - let referenceRecordID: CKWSRecord.ID = CKWSRecord.ID(recordName: UUID().uuidString) + let referenceRecordID: CKRecord.ID = CKRecord.ID(recordName: UUID().uuidString) let testData = """ @@ -125,10 +125,10 @@ class RecordFieldDictionaryTests: XCTestCase { XCTAssertEqual(value.type, .reference) - let reference = value.value as? CKWSRecord.Reference + let reference = value.value as? CKRecord.Reference XCTAssertNotNil(reference) XCTAssertEqual(reference?.recordID, referenceRecordID) - XCTAssertEqual(reference?.action, CKWSRecord.ReferenceAction.none) + XCTAssertEqual(reference?.action, CKRecord.ReferenceAction.none) } func testDecodeStringType() throws {