diff --git a/FilesProvider.podspec b/FilesProvider.podspec index b8a296f..dfaa468 100644 --- a/FilesProvider.podspec +++ b/FilesProvider.podspec @@ -16,7 +16,7 @@ Pod::Spec.new do |s| # s.name = "FilesProvider" - s.version = "0.18.0" + s.version = "0.18.1" s.summary = "FileManager replacement for Local and Remote (WebDAV/FTP/Dropbox/OneDrive/SMB2) files on iOS and macOS." # This description is used to generate tags and improve search results. diff --git a/FilesProvider.xcodeproj/project.pbxproj b/FilesProvider.xcodeproj/project.pbxproj index 34a1a1e..64b1a71 100644 --- a/FilesProvider.xcodeproj/project.pbxproj +++ b/FilesProvider.xcodeproj/project.pbxproj @@ -621,7 +621,7 @@ 799396601D48B7BF00086753 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - BUNDLE_VERSION_STRING = 0.18.0; + BUNDLE_VERSION_STRING = 0.18.1; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_EMPTY_BODY = YES; @@ -653,7 +653,7 @@ 799396611D48B7BF00086753 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - BUNDLE_VERSION_STRING = 0.18.0; + BUNDLE_VERSION_STRING = 0.18.1; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_EMPTY_BODY = YES; diff --git a/Sources/ExtendedLocalFileProvider.swift b/Sources/ExtendedLocalFileProvider.swift index 6c0f0ee..1046add 100644 --- a/Sources/ExtendedLocalFileProvider.swift +++ b/Sources/ExtendedLocalFileProvider.swift @@ -331,26 +331,27 @@ public struct LocalFileInformationGenerator { return newKey.capitalized } - if FileManager.default.fileExists(atPath: fileURL.path) { - let playerItem = AVPlayerItem(url: fileURL) - let metadataList = playerItem.asset.commonMetadata - for item in metadataList { - #if swift(>=4.0) + guard FileManager.default.fileExists(atPath: fileURL.path) else { + return (dic, keys) + } + let playerItem = AVPlayerItem(url: fileURL) + let metadataList = playerItem.asset.commonMetadata + for item in metadataList { + #if swift(>=4.0) let commonKey = item.commonKey?.rawValue - #else + #else let commonKey = item.commonKey - #endif - if let description = makeDescription(commonKey) { - if let value = item.stringValue { - keys.append(description) - dic[description] = value - } + #endif + if let description = makeDescription(commonKey) { + if let value = item.stringValue { + keys.append(description) + dic[description] = value } } - if let ap = try? AVAudioPlayer(contentsOf: fileURL) { - add(key: "Duration", value: ap.duration.formatshort) - add(key: "Bitrate", value: ap.settings[AVSampleRateKey] as? Int) - } + } + if let ap = try? AVAudioPlayer(contentsOf: fileURL) { + add(key: "Duration", value: ap.duration.formatshort) + add(key: "Bitrate", value: ap.settings[AVSampleRateKey] as? Int) } return (dic, keys) } @@ -465,31 +466,32 @@ public struct LocalFileInformationGenerator { return nil } - if let provider = CGDataProvider(url: fileURL as CFURL), let reference = CGPDFDocument(provider), let dict = reference.info { - add(key: "Title", value: getKey("Title", from: dict)) - add(key: "Author", value: getKey("Author", from: dict)) - add(key: "Subject", value: getKey("Subject", from: dict)) - add(key: "Producer", value: getKey("Producer", from: dict)) - add(key: "Keywords", value: getKey("Keywords", from: dict)) - var majorVersion: Int32 = 0 - var minorVersion: Int32 = 0 - reference.getVersion(majorVersion: &majorVersion, minorVersion: &minorVersion) - if majorVersion > 0 { - add(key: "Version", value: String(majorVersion) + "." + String(minorVersion)) - } - add(key: "Pages", value: reference.numberOfPages) - - if reference.numberOfPages > 0, let pageRef = reference.page(at: 1) { - let size = pageRef.getBoxRect(CGPDFBox.mediaBox).size - add(key: "Resolution", value: "\(Int(size.width))x\(Int(size.height))") - } - add(key: "Content creator", value: getKey("Creator", from: dict)) - add(key: "Creation date", value: convertDate(getKey("CreationDate", from: dict))) - add(key: "Modified date", value: convertDate(getKey("ModDate", from: dict))) - add(key: "Security", value: reference.isEncrypted) - add(key: "Allows printing", value: reference.allowsPrinting) - add(key: "Allows copying", value: reference.allowsCopying) + guard let provider = CGDataProvider(url: fileURL as CFURL), let reference = CGPDFDocument(provider), let dict = reference.info else { + return (dic, keys) } + add(key: "Title", value: getKey("Title", from: dict)) + add(key: "Author", value: getKey("Author", from: dict)) + add(key: "Subject", value: getKey("Subject", from: dict)) + add(key: "Producer", value: getKey("Producer", from: dict)) + add(key: "Keywords", value: getKey("Keywords", from: dict)) + var majorVersion: Int32 = 0 + var minorVersion: Int32 = 0 + reference.getVersion(majorVersion: &majorVersion, minorVersion: &minorVersion) + if majorVersion > 0 { + add(key: "Version", value: String(majorVersion) + "." + String(minorVersion)) + } + add(key: "Pages", value: reference.numberOfPages) + + if reference.numberOfPages > 0, let pageRef = reference.page(at: 1) { + let size = pageRef.getBoxRect(CGPDFBox.mediaBox).size + add(key: "Resolution", value: "\(Int(size.width))x\(Int(size.height))") + } + add(key: "Content creator", value: getKey("Creator", from: dict)) + add(key: "Creation date", value: convertDate(getKey("CreationDate", from: dict))) + add(key: "Modified date", value: convertDate(getKey("ModDate", from: dict))) + add(key: "Security", value: reference.isEncrypted) + add(key: "Allows printing", value: reference.allowsPrinting) + add(key: "Allows copying", value: reference.allowsCopying) return (dic, keys) } diff --git a/Sources/FTPHelper.swift b/Sources/FTPHelper.swift index 73466ba..5312381 100644 --- a/Sources/FTPHelper.swift +++ b/Sources/FTPHelper.swift @@ -125,7 +125,7 @@ internal extension FTPFileProvider { } // needs password - if response.hasPrefix("33") { + if FileProviderFTPError(message: response).code == 331 { self.execute(command: "PASS \(credential?.password ?? "fileprovider@")", on: task) { (response, error) in if response?.hasPrefix("23") ?? false { completionHandler(nil)