modern doc dir content filtering

This commit is contained in:
Chris Li 2016-08-05 11:17:17 -04:00
parent 5d38487a85
commit 398b24e4c6
3 changed files with 25 additions and 36 deletions

View File

@ -49,7 +49,7 @@
</dict>
</array>
<key>CFBundleVersion</key>
<string>1.7.710</string>
<string>1.7.716</string>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>LSRequiresIPhoneOS</key>

View File

@ -21,7 +21,7 @@
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.7.787</string>
<string>1.7.812</string>
<key>NSExtension</key>
<dict>
<key>NSExtensionMainStoryboard</key>

View File

@ -111,46 +111,35 @@ class ScanLocalBookOperation: Operation {
// MARK: - Helper
private class func getContentsOfDocDir() -> [NSURL] {
let keys = [NSURLIsDirectoryKey]
let options: NSDirectoryEnumerationOptions = [.SkipsHiddenFiles, .SkipsPackageDescendants, .SkipsHiddenFiles]
let urls = try? NSFileManager.defaultManager().contentsOfDirectoryAtURL(NSFileManager.docDirURL, includingPropertiesForKeys: keys, options: options)
return urls ?? [NSURL]()
}
private class func getCurrentZimFileURLsInDocDir() -> Set<NSURL> {
let fileURLs = FileManager.contentsOfDirectory(NSFileManager.docDirURL) ?? [NSURL]()
var zimURLs = Set<NSURL>()
for url in fileURLs {
do {
var isDirectory: AnyObject? = nil
try url.getResourceValue(&isDirectory, forKey: NSURLIsDirectoryKey)
if let isDirectory = (isDirectory as? NSNumber)?.boolValue {
if !isDirectory {
guard let pathExtension = url.pathExtension?.lowercaseString else {continue}
guard pathExtension.containsString("zim") else {continue}
zimURLs.insert(url)
}
}
} catch {
continue
}
var urls = getContentsOfDocDir()
let keys = [NSURLIsDirectoryKey]
urls = urls.filter { (url) -> Bool in
guard let values = try? url.resourceValuesForKeys(keys),
let isDirectory = (values[NSURLIsDirectoryKey] as? NSNumber)?.boolValue where isDirectory == false else {return false}
guard let pathExtension = url.pathExtension?.lowercaseString where pathExtension.containsString("zim") else {return false}
return true
}
return zimURLs
return Set(urls)
}
private class func getCurrentIndexFolderURLsInDocDir() -> Set<NSURL> {
let fileURLs = FileManager.contentsOfDirectory(NSFileManager.docDirURL) ?? [NSURL]()
var folderURLs = Set<NSURL>()
for url in fileURLs {
do {
var isDirectory: AnyObject? = nil
try url.getResourceValue(&isDirectory, forKey: NSURLIsDirectoryKey)
if let isDirectory = (isDirectory as? NSNumber)?.boolValue {
if isDirectory {
guard let pathExtension = url.pathExtension?.lowercaseString else {continue}
guard pathExtension == "idx" else {continue}
folderURLs.insert(url)
}
}
} catch {
continue
}
var urls = getContentsOfDocDir()
let keys = [NSURLIsDirectoryKey]
urls = urls.filter { (url) -> Bool in
guard let values = try? url.resourceValuesForKeys(keys),
let isDirectory = (values[NSURLIsDirectoryKey] as? NSNumber)?.boolValue where isDirectory == true else {return false}
guard let pathExtension = url.pathExtension?.lowercaseString where pathExtension == "idx" else {return false}
return true
}
return folderURLs
return Set(urls)
}
}