FMPFile

Описание

Класс FMPFile предназначен для работы с файлами.

class FMPFile

Свойства

Свойство Описание

remotePath

Путь к файлу или директории на сервере.
var remotePath: String { get }
localPath Путь к файлу или директории в локальной директории приложения относительно папки Documents.
var localPath: String { get }
mount Имя подключения к хранилищу на сервере.
var mount: String { get }
type Тип - файл или директория.
var type: FMPFile.Type { get }
name Имя файла или директории.
var name: String { get }
key Ключ шифрования.
var key: String { get }
depth Глубина при работе с директорией.
var depth: Int { get }
children Список дочерних элементов.
var children: [FMPFile]? { get }

Методы

Метод Описание

ls(completion:)

Получение содержимого директории. Рекурсивно проходится по содержимому директории, получая список дочерних элементов. Для файла возвращает пустой список.
func ls(completion: @escaping FMPFilesHandler)

Параметры:

  • completion. Замыкающее выражение, содержащее результат выполнения метода.

download(completion:) Загрузка файла или содержимого директории с сервера на устройство. Загружает с сервера файл или содержимое директории с указанной глубиной и сохраняет по указанному пути в локальной директории приложения на устройстве. Если свойство key экземпляра FMPFile не является пустой строчкой, файлы шифруются с этим ключом.
func download(completion: @escaping FMPRequestResponseHandler)

Параметры:

  • completion. Замыкающее выражение, содержащее результат выполнения метода.

upload(completion:) Загрузка файла с устройства на сервер. Загружает на сервер файл, находящийся по указанному пути в локальной директории приложения на устройстве. Если свойство key экземпляра FMPFile не является пустой строчкой, файлы перед отправкой расшифровываются с этим ключом. Для директории возвращает ошибку.
func upload(completion: @escaping FMPRequestResponseHandler)

Параметры:

  • completion. Замыкающее выражение, содержащее результат выполнения метода.

deleteRemote(completion:) Удаление файла на сервере. Для директории возвращает ошибку.
func deleteRemote(completion: @escaping FMPRequestResponseHandler)

Параметры:

  • completion. Замыкающее выражение, содержащее результат выполнения метода.

loadMeta(completion:) Запрос метаданных файла с сервера. Для директории возвращает ошибку.
func loadMeta(completion: @escaping FMPFileMetaHandler)

Параметры:

  • completion. Замыкающее выражение, содержащее результат выполнения метода.

isExist(completion:) Запрос на проверку существования файла на сервере. Для директории возвращает ошибку.
func isExist(completion: @escaping FMPRequestResponseHandler)

Параметры:

  • completion. Замыкающее выражение, содержащее результат выполнения метода.

search(_:caseInsensitive:completion:) Рекурсивный поиск в дочерних элементах по имени файла или директории. Поиск производится по условию содержания параметра name в имени файла/директории. При вызове метода перед поиском производится получение списка дочерних элементов.
func search(_ name: String, caseInsensitive: Bool = true, completion: @escaping FMPFilesHandler)

Параметры:

  • name. Условие поиска по имени файла или директории;

  • caseInsensitive. Если true, то регистр букв игнорируется при поиске. Если false - регистр букв не игнорируется;

  • completion. Замыкающее выражение, содержащее результат выполнения метода.

search(_:completion:) Рекурсивный поиск в дочерних элементах по имени файла или директории. Поиск производится по условию соответствия имени файла/директории регулярному выражению. При вызове метода перед поиском производится получение списка дочерних элементов.
func search(_ regex: NSRegularExpression, completion: @escaping FMPFilesHandler)

Параметры:

  • regex. Регулярное выражения для поиска по имени файла или директории;

  • completion. Замыкающее выражение, содержащее результат выполнения метода.

checkKey(_:) Проверка ключа шифрования для файла. Возвращает true в случае верного ключа шифрования.
func checkKey(_ key: String) -> Bool

Параметры:

  • key. Ключ шифрования.

encryptToFile(at:) Шифрование файла в локальной директории приложения в файл.
func encryptToFile(at path: String) -> Bool

Параметры:

  • path. Путь к зашифрованному файлу в локальной директории приложения относительно папки Documents.

decryptToFile(at:) Расшифровка файла в локальной директории приложения в файл.
func decryptToFile(at path: String)

Параметры:

  • path. Путь к расшифрованному файлу в локальной директории приложения относительно папки Documents.

encryptToData() Шифрование файла в локальной директории приложения в байтовый буфер. Возвращает зашифрованный байтовый буфер.
func encryptToData() -> Data
decryptToData() Расшифровка файла в локальной директории приложения в байтовый буфер. Возвращает расшифрованный байтовый буфер.
func decryptToData() -> Data
 
decryptToString() Расшифровка файла в локальной директории приложения в строку. Возвращает расшифрованную строку.
func decryptToString() -> String
deleteLocal() Удаление файла или папки из локальной директории приложения.
func deleteLocal() throws
copy() Получение экземпляра класса-строителя для копирования FMPFile. Возвращает экземпляр класса-строителя FMPFile.Builder.
func copy() -> FMPFile.Builder

Примеры

Получение содержимого директории:

// Построим экземпляр класса FMPFile. Подробнее в примерах к FMPFile.Builder.
let folder: FMPFile = FMPFactory().file.isDirectory().build()
  
// Получим список дочерних элементов
file.ls() { (success, error, files) in
    if success {
        // Выведем полученный список названий дочерних элементов
        print(files.map {$0.name})
    } else {
        // Выведем код и описание ошибки
        print(error?.code, error?.description)
    }
}

Загрузка с сервера файла или содержимого директории на устройство:

// Построим экземпляр класса FMPFile. Подробнее в примерах к FMPFile.Builder.
let file: FMPFile = FMPFactory().file.build()
// Загрузим файл
file.download { (response) in
    if response.success {
        // Выведем ответ сервера
        print(response.result)
    } else {
        // Выведем код и описание ошибки
        print(response.error?.code, response.error?.description)
    }
}

Загрузка на сервер файл с устройства:

// Построим экземпляр класса FMPFile. Подробнее в примерах к FMPFile.Builder.
let file: FMPFile = FMPFactory().file.build()
  
// Загрузим файл
file.upload { (response) in
    if response.success {
        // Выведем ответ сервера
        print(response.result)
    } else {
        // Выведем код и описание ошибки
        print(response.error?.code, response.error?.description)
    }
}

Удаление файла на сервере:

// Построим экземпляр класса FMPFile. Подробнее в примерах к FMPFile.Builder.
let file: FMPFile = FMPFactory().file.build()
  
// Загрузим файл
file.deleteRemote(completion: { (response) in
    if response.success {
        // Выведем ответ сервера
        print(response.result)
    } else {
        // Выведем код и описание ошибки
        print(response.error?.code, response.error?.description)
    }
}

Запрос метаданных файла с сервера:

// Построим экземпляр класса FMPFile. Подробнее в примерах к FMPFile.Builder.
let file: FMPFile = FMPFactory().file.build()
  
// Загрузим метаданные файла
file.loadMeta(completion: { (success, error, meta) in
    if success {
        // Выведем размер файла
        print(meta.size)
    } else {
        // Выведем код и описание ошибки
        print(error?.code, error?.description)
    }
}

Проверка существования файла на сервере:

// Построим экземпляр класса FMPFile. Подробнее в примерах к FMPFile.Builder.
let file: FMPFile = FMPFactory().file.build()
 
// Проверим существование файла на сервере
file.isExist() { (response) in
    if response.success {
        // Выведем ответ сервера
        print(response.result)
    } else {
        // Выведем код и описание ошибки
        print(response.error?.code, response.error?.description)
    }
}

Рекурсивный поиск файлов или директорий по имени:

// Построим экземпляр класса FMPFile. Подробнее в примерах к FMPFile.Builder.
let folder: FMPFile = FMPFactory().file.isDirectory().build()
  
// Осуществим поиск элементов по имени "name" без учета регистра
folder.search("name") { (success, error, files) in
    if success {
        // Выведем пути к найденным файлам
        print(results.map {$0.remotePath})
    } else {
        // Выведем код и описание ошибки
        print(error?.code, error?.description)
    }
}
  
// Построим экземпляр класса NSRegularExpression, соответствующий регулярному выражению
let regex = try! NSRegularExpression(pattern: "[a-z0-9]name[a-z0-9]", options: [])
  
// Осуществим поиск элементов по имени с использованием регулярного выражения
folder.search(regex) { (success, error, results) in
    if success {
        // Выведем пути к найденным файлам
        print(results.map {$0.remotePath})
    } else {
        // Выведем код и описание ошибки
        print(error?.code, error?.description)
    }
}

Проверка ключа шифрования:

// Построим экземпляр класса FMPFile. Подробнее в примерах к FMPFile.Builder.
let file: FMPFile = FMPFactory().file.build()
  
// Проверим, что ключ шифрования подходит для зашифрованного файла в локальной директории
let keyCheckSuccess: Bool = file.checkKey("key")

Шифрование файла в локальной директории в файл:

// Построим экземпляр класса FMPFile. Подробнее в примерах к FMPFile.Builder.
let file: FMPFile = FMPFactory().file.build()
  
// Зашифруем файл в локальной директории в файл по указанному пути
let encryptToFileSuccess: Bool = file.encryptToFile(at: "encryptedLocalPath")

Расшифровка файла в локальной директории в файл:

// Построим экземпляр класса FMPFile. Подробнее в примерах к FMPFile.Builder.
let file: FMPFile = FMPFactory().file.build()
  
// Расшифруем файл в локальной директории в файл по указанному пути
file.decryptToFile(at: "decryptedLocalPath")

Шифрование файла в локальной директории в байтовый буфер:

// Построим экземпляр класса FMPFile. Подробнее в примерах к FMPFile.Builder.
let file: FMPFile = FMPFactory().file.build()
  
// Зашифруем файл в локальной директории в байтовый буфер
let encryptedData: Data = file.encryptToData()

Расшифровка файла в локальной директории в байтовый буфер:

// Построим экземпляр класса FMPFile. Подробнее в примерах к FMPFile.Builder.
let file: FMPFile = FMPFactory().file.build()
  
// Расшифруем файл в локальной директории в байтовый буфер
let decryptedData: Data = file.decryptToData()

Расшифровка файла в локальной директории в строку:

// Построим экземпляр класса FMPFile. Подробнее в примерах к FMPFile.Builder.
let file: FMPFile = FMPFactory().file.build()
  
// Расшифруем файл в локальной директории в строку
let decryptedString: String = file.decryptToString()

Удаление файла или папки из локальной директории:

// Построим экземпляр класса FMPFile. Подробнее в примерах к FMPFile.Builder.
let file: FMPFile = FMPFactory().file.build()
  
// Удалим файл из локальной директории приложения
 do {
    try file.deleteLocal()
} catch let error {
    // Выведем описание ошибки
    print(error.localizedDescription)
}

Копирование FMPFile:

// Построим экземпляр класса FMPFile. Подробнее в примерах к FMPFile.Builder.
let file: FMPFile = FMPFactory().file.build()
  
// Скопируем экземпляр класса FMPUser.
let fileCopy: FMPFile = file.copy().build()

См. также:

Фреймворк FMPWrapper | Классы