mirror of https://github.com/oxen-io/session-ios
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
2.0 KiB
Swift
54 lines
2.0 KiB
Swift
// Copyright © 2023 Rangeproof Pty Ltd. All rights reserved.
|
|
|
|
import Foundation
|
|
|
|
// MARK: - FileManagerType
|
|
|
|
public protocol FileManagerType: AnyObject {
|
|
var currentDirectoryPath: String { get }
|
|
|
|
func urls(for directory: FileManager.SearchPathDirectory, in domains: FileManager.SearchPathDomainMask) -> [URL]
|
|
func containerURL(forSecurityApplicationGroupIdentifier: String) -> URL?
|
|
func enumerator(
|
|
at url: URL,
|
|
includingPropertiesForKeys: [URLResourceKey]?,
|
|
options: FileManager.DirectoryEnumerationOptions,
|
|
errorHandler: ((URL, Error) -> Bool)?
|
|
) -> FileManager.DirectoryEnumerator?
|
|
|
|
|
|
func fileExists(atPath: String) -> Bool
|
|
func fileExists(atPath: String, isDirectory: UnsafeMutablePointer<ObjCBool>?) -> Bool
|
|
func contents(atPath: String) -> Data?
|
|
|
|
func createFile(atPath: String, contents: Data?, attributes: [FileAttributeKey: Any]?) -> Bool
|
|
func createDirectory(atPath: String, withIntermediateDirectories: Bool, attributes: [FileAttributeKey: Any]?) throws
|
|
func copyItem(at fromUrl: URL, to toUrl: URL) throws
|
|
func removeItem(atPath: String) throws
|
|
|
|
func attributesOfItem(atPath path: String) throws -> [FileAttributeKey: Any]
|
|
func setAttributes(_ attributes: [FileAttributeKey: Any], ofItemAtPath path: String) throws
|
|
}
|
|
|
|
public extension FileManagerType {
|
|
func createFile(atPath: String, contents: Data?) -> Bool {
|
|
return createFile(atPath: atPath, contents: contents, attributes: nil)
|
|
}
|
|
|
|
func createDirectory(atPath: String, withIntermediateDirectories: Bool) throws {
|
|
try createDirectory(atPath: atPath, withIntermediateDirectories: withIntermediateDirectories, attributes: nil)
|
|
}
|
|
}
|
|
|
|
extension FileManager: FileManagerType {}
|
|
|
|
// MARK: - Convenience
|
|
|
|
public extension FileManagerType {
|
|
var appSharedDataDirectoryPath: String {
|
|
return (containerURL(forSecurityApplicationGroupIdentifier: UserDefaults.applicationGroup)?
|
|
.path)
|
|
.defaulting(to: "")
|
|
}
|
|
}
|