diff --git a/README.md b/README.md index 4f0ed84..d3844d8 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ Add the package to your `Package.swift` dependencies: ```swift dependencies: [ - .package(url: "git@github.com:appwrite/sdk-for-apple.git", from: "12.1.0"), + .package(url: "git@github.com:appwrite/sdk-for-apple.git", from: "13.0.0"), ], ``` diff --git a/Sources/Appwrite/Client.swift b/Sources/Appwrite/Client.swift index cc5e009..3459d57 100644 --- a/Sources/Appwrite/Client.swift +++ b/Sources/Appwrite/Client.swift @@ -23,7 +23,7 @@ open class Client { "x-sdk-name": "Apple", "x-sdk-platform": "client", "x-sdk-language": "apple", - "x-sdk-version": "12.1.0", + "x-sdk-version": "13.0.0", "x-appwrite-response-format": "1.8.0" ] @@ -354,7 +354,7 @@ open class Client { if let warning = response.headers["x-appwrite-warning"].first { warning.split(separator: ";").forEach { warning in - print("Warning: \(warning)") + fputs("Warning: \(warning)\n", stderr) } } diff --git a/Sources/AppwriteEnums/ExecutionStatus.swift b/Sources/AppwriteEnums/ExecutionStatus.swift new file mode 100644 index 0000000..2f167a9 --- /dev/null +++ b/Sources/AppwriteEnums/ExecutionStatus.swift @@ -0,0 +1,12 @@ +import Foundation + +public enum ExecutionStatus: String, CustomStringConvertible { + case waiting = "waiting" + case processing = "processing" + case completed = "completed" + case failed = "failed" + + public var description: String { + return rawValue + } +} diff --git a/Sources/AppwriteEnums/ExecutionTrigger.swift b/Sources/AppwriteEnums/ExecutionTrigger.swift new file mode 100644 index 0000000..8aecde3 --- /dev/null +++ b/Sources/AppwriteEnums/ExecutionTrigger.swift @@ -0,0 +1,11 @@ +import Foundation + +public enum ExecutionTrigger: String, CustomStringConvertible { + case http = "http" + case schedule = "schedule" + case event = "event" + + public var description: String { + return rawValue + } +} diff --git a/Sources/AppwriteModels/Document.swift b/Sources/AppwriteModels/Document.swift index f076cc5..763db10 100644 --- a/Sources/AppwriteModels/Document.swift +++ b/Sources/AppwriteModels/Document.swift @@ -107,7 +107,7 @@ open class Document: Codable { createdAt: map["$createdAt"] as? String ?? "", updatedAt: map["$updatedAt"] as? String ?? "", permissions: map["$permissions"] as? [String] ?? [], - data: try! JSONDecoder().decode(T.self, from: JSONSerialization.data(withJSONObject: map, options: [])) + data: try! JSONDecoder().decode(T.self, from: JSONSerialization.data(withJSONObject: map["data"] as? [String: Any] ?? map, options: [])) ) } } diff --git a/Sources/AppwriteModels/Execution.swift b/Sources/AppwriteModels/Execution.swift index 069264b..47d7734 100644 --- a/Sources/AppwriteModels/Execution.swift +++ b/Sources/AppwriteModels/Execution.swift @@ -1,5 +1,6 @@ import Foundation import JSONCodable +import AppwriteEnums /// Execution open class Execution: Codable { @@ -44,10 +45,10 @@ open class Execution: Codable { public let deploymentId: String /// The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`. - public let trigger: String + public let trigger: AppwriteEnums.ExecutionTrigger /// The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`. - public let status: String + public let status: AppwriteEnums.ExecutionStatus /// HTTP request method type. public let requestMethod: String @@ -87,8 +88,8 @@ open class Execution: Codable { permissions: [String], functionId: String, deploymentId: String, - trigger: String, - status: String, + trigger: AppwriteEnums.ExecutionTrigger, + status: AppwriteEnums.ExecutionStatus, requestMethod: String, requestPath: String, requestHeaders: [Headers], @@ -129,8 +130,8 @@ open class Execution: Codable { self.permissions = try container.decode([String].self, forKey: .permissions) self.functionId = try container.decode(String.self, forKey: .functionId) self.deploymentId = try container.decode(String.self, forKey: .deploymentId) - self.trigger = try container.decode(String.self, forKey: .trigger) - self.status = try container.decode(String.self, forKey: .status) + self.trigger = AppwriteEnums.ExecutionTrigger(rawValue: try container.decode(String.self, forKey: .trigger))! + self.status = AppwriteEnums.ExecutionStatus(rawValue: try container.decode(String.self, forKey: .status))! self.requestMethod = try container.decode(String.self, forKey: .requestMethod) self.requestPath = try container.decode(String.self, forKey: .requestPath) self.requestHeaders = try container.decode([Headers].self, forKey: .requestHeaders) @@ -152,8 +153,8 @@ open class Execution: Codable { try container.encode(permissions, forKey: .permissions) try container.encode(functionId, forKey: .functionId) try container.encode(deploymentId, forKey: .deploymentId) - try container.encode(trigger, forKey: .trigger) - try container.encode(status, forKey: .status) + try container.encode(trigger.rawValue, forKey: .trigger) + try container.encode(status.rawValue, forKey: .status) try container.encode(requestMethod, forKey: .requestMethod) try container.encode(requestPath, forKey: .requestPath) try container.encode(requestHeaders, forKey: .requestHeaders) @@ -174,8 +175,8 @@ open class Execution: Codable { "$permissions": permissions as Any, "functionId": functionId as Any, "deploymentId": deploymentId as Any, - "trigger": trigger as Any, - "status": status as Any, + "trigger": trigger.rawValue as Any, + "status": status.rawValue as Any, "requestMethod": requestMethod as Any, "requestPath": requestPath as Any, "requestHeaders": requestHeaders.map { $0.toMap() } as Any, @@ -197,8 +198,8 @@ open class Execution: Codable { permissions: map["$permissions"] as! [String], functionId: map["functionId"] as! String, deploymentId: map["deploymentId"] as! String, - trigger: map["trigger"] as! String, - status: map["status"] as! String, + trigger: ExecutionTrigger(rawValue: map["trigger"] as! String)!, + status: ExecutionStatus(rawValue: map["status"] as! String)!, requestMethod: map["requestMethod"] as! String, requestPath: map["requestPath"] as! String, requestHeaders: (map["requestHeaders"] as! [[String: Any]]).map { Headers.from(map: $0) }, diff --git a/Sources/AppwriteModels/Preferences.swift b/Sources/AppwriteModels/Preferences.swift index 41f94e6..aff6dfe 100644 --- a/Sources/AppwriteModels/Preferences.swift +++ b/Sources/AppwriteModels/Preferences.swift @@ -37,7 +37,7 @@ open class Preferences: Codable { public static func from(map: [String: Any] ) -> Preferences { return Preferences( - data: try! JSONDecoder().decode(T.self, from: JSONSerialization.data(withJSONObject: map, options: [])) + data: try! JSONDecoder().decode(T.self, from: JSONSerialization.data(withJSONObject: map["data"] as? [String: Any] ?? map, options: [])) ) } } diff --git a/Sources/AppwriteModels/Row.swift b/Sources/AppwriteModels/Row.swift index 6e94a9e..5c6a215 100644 --- a/Sources/AppwriteModels/Row.swift +++ b/Sources/AppwriteModels/Row.swift @@ -107,7 +107,7 @@ open class Row: Codable { createdAt: map["$createdAt"] as! String, updatedAt: map["$updatedAt"] as! String, permissions: map["$permissions"] as! [String], - data: try! JSONDecoder().decode(T.self, from: JSONSerialization.data(withJSONObject: map, options: [])) + data: try! JSONDecoder().decode(T.self, from: JSONSerialization.data(withJSONObject: map["data"] as? [String: Any] ?? map, options: [])) ) } }