diff --git a/Source/Shared/Library/ImageWrapper.swift b/Source/Shared/Library/ImageWrapper.swift new file mode 100644 index 0000000..65875f9 --- /dev/null +++ b/Source/Shared/Library/ImageWrapper.swift @@ -0,0 +1,32 @@ +import Foundation + +public struct ImageWrapper: Codable { + public let image: Image + + public enum CodingKeys: String, CodingKey { + case image + } + + public init(image: Image) { + self.image = image + } + + public init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: CodingKeys.self) + let data = try container.decode(Data.self, forKey: CodingKeys.image) + guard let image = Image(data: data) else { + throw StorageError.decodingFailed + } + + self.image = image + } + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + guard let data = image.cache_toData() else { + throw StorageError.encodingFailed + } + + try container.encode(data, forKey: CodingKeys.image) + } +}