ImageWrapper.swift 793 B

123456789101112131415161718192021222324252627282930313233
  1. import Foundation
  2. public struct ImageWrapper: Codable {
  3. public let image: Image
  4. public enum CodingKeys: String, CodingKey {
  5. case image
  6. }
  7. public init(image: Image) {
  8. self.image = image
  9. }
  10. public init(from decoder: Decoder) throws {
  11. let container = try decoder.container(keyedBy: CodingKeys.self)
  12. let data = try container.decode(Data.self, forKey: CodingKeys.image)
  13. guard let image = Image(data: data) else {
  14. throw StorageError.decodingFailed
  15. }
  16. self.image = image
  17. }
  18. public func encode(to encoder: Encoder) throws {
  19. var container = encoder.container(keyedBy: CodingKeys.self)
  20. guard let data = image.cache_toData() else {
  21. throw StorageError.encodingFailed
  22. }
  23. try container.encode(data, forKey: CodingKeys.image)
  24. }
  25. }