// // FileAdapter.swift // Browse // // Created by Javier Cicchelli on 17/12/2022. // Copyright © 2022 Röck+Cöde. All rights reserved. // import APIService import Foundation struct FileAdapter { func callAsFunction(url: URL) throws -> File { guard url.isFileURL else { throw FileAdapterError.urlIsNotFileURL } let data = try Data(contentsOf: url) let name = try url .resourceValues(forKeys: [.nameKey]) .allValues .first(where: { $0.key == .nameKey }) .map(\.value) guard let name = name as? String else { throw FileAdapterError.nameNotCasted } return .init( name: name, data: data ) } } // MARK: - Errors enum FileAdapterError: Error { case urlIsNotFileURL case nameNotCasted }