123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- import Foundation
- import IONFilesystemLib
- extension IONFILEStringEncoding {
- static func create(from text: String) -> Self {
- switch text {
- case Constants.StringEncodingValue.ascii: .ascii
- case Constants.StringEncodingValue.utf16: .utf16
- case Constants.StringEncodingValue.utf8: .utf8
- default: .utf8
- }
- }
- }
- extension IONFILEDirectoryType {
- static func create(from text: String) -> Self? {
- switch text {
- case Constants.DirectoryTypeValue.cache: .cache
- case Constants.DirectoryTypeValue.data, Constants.DirectoryTypeValue.documents, Constants.DirectoryTypeValue.external, Constants.DirectoryTypeValue.externalCache, Constants.DirectoryTypeValue.externalStorage: .document
- case Constants.DirectoryTypeValue.library: .library
- case Constants.DirectoryTypeValue.libraryNoCloud: .notSyncedLibrary
- case Constants.DirectoryTypeValue.temporary: .temporary
- default: nil
- }
- }
- }
- extension IONFILEEncodingValueMapper {
- var textValue: String {
- switch self {
- case .byteBuffer(let data): data.base64EncodedString()
- case .string(_, let text): text
- @unknown default: ""
- }
- }
- }
- extension IONFILEItemAttributeModel {
- typealias JSResult = [String: Any]
- func toJSResult(with url: URL) -> JSResult {
- [
- Constants.ItemAttributeJSONKey.name: url.lastPathComponent,
- Constants.ItemAttributeJSONKey.type: type.description,
- Constants.ItemAttributeJSONKey.size: size,
- Constants.ItemAttributeJSONKey.ctime: UInt64(creationDateTimestamp.rounded()),
- Constants.ItemAttributeJSONKey.mtime: UInt64(modificationDateTimestamp.rounded()),
- Constants.ItemAttributeJSONKey.uri: url.absoluteString
- ]
- }
- }
- extension IONFILEItemType {
- var description: String {
- switch self {
- case .directory: Constants.FileItemTypeValue.directory
- case .file: Constants.FileItemTypeValue.file
- @unknown default: Constants.FileItemTypeValue.fallback
- }
- }
- }
|