| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | 
							
- import Foundation
 
- public protocol Resource {
 
-     
 
-     
 
-     var cacheKey: String { get }
 
-     
 
-     
 
-     var downloadURL: URL { get }
 
- }
 
- extension Resource {
 
-     
 
-     
 
-     
 
-     public func convertToSource(overrideCacheKey: String? = nil) -> Source {
 
-         return downloadURL.isFileURL ?
 
-             .provider(LocalFileImageDataProvider(fileURL: downloadURL, cacheKey: overrideCacheKey ?? cacheKey)) :
 
-             .network(ImageResource(downloadURL: downloadURL, cacheKey: overrideCacheKey ?? cacheKey))
 
-     }
 
- }
 
- public struct ImageResource: Resource {
 
-     
 
-     
 
-     
 
-     
 
-     
 
-     
 
-     
 
-     public init(downloadURL: URL, cacheKey: String? = nil) {
 
-         self.downloadURL = downloadURL
 
-         self.cacheKey = cacheKey ?? downloadURL.absoluteString
 
-     }
 
-     
 
-     
 
-     
 
-     public let cacheKey: String
 
-     
 
-     public let downloadURL: URL
 
- }
 
- extension URL: Resource {
 
-     public var cacheKey: String { return absoluteString }
 
-     public var downloadURL: URL { return self }
 
- }
 
 
  |