123456789101112131415161718192021222324252627282930313233343536373839 |
- import Foundation
- public class TransformerFactory {
- public static func forData() -> Transformer<Data> {
- let toData: (Data) throws -> Data = { $0 }
- let fromData: (Data) throws -> Data = { $0 }
- return Transformer<Data>(toData: toData, fromData: fromData)
- }
- public static func forImage() -> Transformer<Image> {
- let toData: (Image) throws -> Data = { image in
- return try image.cache_toData().unwrapOrThrow(error: StorageError.transformerFail)
- }
- let fromData: (Data) throws -> Image = { data in
- return try Image(data: data).unwrapOrThrow(error: StorageError.transformerFail)
- }
- return Transformer<Image>(toData: toData, fromData: fromData)
- }
- public static func forCodable<U: Codable>(ofType: U.Type) -> Transformer<U> {
- let toData: (U) throws -> Data = { object in
- let wrapper = TypeWrapper<U>(object: object)
- let encoder = JSONEncoder()
- return try encoder.encode(wrapper)
- }
- let fromData: (Data) throws -> U = { data in
- let decoder = JSONDecoder()
- return try decoder.decode(TypeWrapper<U>.self, from: data).object
- }
- return Transformer<U>(toData: toData, fromData: fromData)
- }
- }
|