42 lines
893 B
Swift
Raw Normal View History

//
// 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
}