Руководство пользователя Seafile iOS SDK
Код всё ещё находится в процессе рефакторинга. Всем, кто хочет использовать Seafile iOS SDK, следует использовать только перечисленные ниже API.
Seafile доступен через CocoaPods. Чтобы установить его, просто добавьте следующую строку в свой Podfile:
pod 'Seafile', :git => 'https://github.com/haiwen/seafile-iOS.git', :branch => 'master'
Авторизация учётной записи
SeafConnection *connection = [[SeafConnection alloc] initWithUrl:url cacheProvider:nil];
[connection loginWithUsername:username password:password];
Или двухэтапная аутентификация.
[connection loginWithUsername:username password:password otp:otp];
Вы можете получать уведомления с помощью SeafConnection.loginDelegate (SeafLoginDelegate).
@protocol SeafLoginDelegate
Модели данных
В Seafile основными моделями данных являются библиотека, папка, файл. Для этих моделей мы используем следующие структуры данных.
SeafRepos, SeafRepo, SeafDir, SeafFile имеют общий суперкласс SeafBase. Основной API для SeafBase приведён ниже.
@property (copy) NSString *name; // имя @property (readonly, copy) NSString *path; // путь в библиотеке @property (readonly, copy) NSString *repoId; // идентификатор библиотеки @property (readonly, copy) NSString *mime; // тип mime
@property (copy) NSString *ooid; // кэшированный идентификатор объекта @property (copy) NSString *oid; // текущий идентификатор объекта
@property enum SEAFBASE_STATE state; // состояние локального объекта
@property (weak) id delegate; // делегат
@property (readonly, copy) NSString *shareLink; // общая ссылка
// загрузить содержимое этой записи, force означает принудительную загрузку с сервера. В противном случае сначала попытается загрузить локальный кеш, если кеш не найден, загрузит с удалённого сервера.
// Если включена локальная расшифровка, проверьте пароль библиотеки локально, в противном случае установите пароль библиотеки на удалённом сервере
(void)checkOrSetRepoPassword:(NSString *)password delegate:(id)del;
(void)checkOrSetRepoPassword:(NSString *)password block:(repo_password_set_block_t)block;
(void)generateShareLink:(id)dg; // создать общую ссылку
[conn.rootFolder loadContent:NO];
Результат этой операции будет передан через conn.rootFolder.delegate. conn.rootFolder.items — это все библиотеки под текущей учётной записью.
[dir loadContent:NO];
Результат этой операции будет передан через dir.delegate. dir.items — это все папки и файлы под текущей учётной записью. dir.allItems содержит SeafUploadFiles, которые будут загружены в эту папку.
[file loadContent:NO];
Результат этой операции будет передан через file.delegate. Если загрузка прошла успешно, скачанный файл будет... 6. Загрузка файла: (SeafUploadFile *ufile)
Сначала создайте объект SeafUploadFile, затем установите место загрузки и делегата загрузки.
SeafUploadFile *ufile = [self getUploadfile:path];
ufile.udir = dir;
// Добавляем в фоновый менеджер загрузок
[SeafDataTaskManager.sharedObject addBackgroundUploadTask:ufile];
// Или напрямую загружаем
[ufile doUpload];
Вы можете получить результат и ход выполнения операции загрузки через ufile.delegate
@protocol SeafUploadDelegate <NSObject>
- (void)uploadProgress:(SeafUploadFile *)file progress:(int)percent;
- (void)uploadComplete:(BOOL)success file:(SeafUploadFile *)file oid:(NSString *)oid;
@end
Или через ufile.progressBlock и ufile.completionBlock
typedef void (^SeafUploadProgressBlock)(SeafUploadFile *file, int progress);
typedef void (^SeafUploadCompletionBlock)(BOOL success, SeafUploadFile *file, NSString *oid);
Файлы со звёздочкой: (SeafFile *file)
Получить все файлы со звёздочками можно с помощью SeafConnection:
- (void)getStarredFiles:(void (^ _Nonnull)(NSHTTPURLResponse * _Nullable response, id _Nullable JSON))success
failure:(void (^ _Nonnull)(NSHTTPURLResponse * _Nullable response, NSError * _Nullable error))failure;
Либо получить кэшированные файлы со звёздами:
- (id _Nullable)getCachedStarredFiles;
И вы можете проверить, отмечен ли файл звёздочкой:
- (BOOL)isStarred:(NSString *_Nonnull)repo path:(NSString *_Nonnull)path;
Отметить файл звёздочкой или снять отметку:
- (BOOL)setStarred:(BOOL)starred repo:(NSString * _Nonnull)repo path:(NSString * _Nonnull)path;
Операции с файлами/папками: удаление, переименование, копирование, перемещение файлов/папок, создание нового файла/папки
В родительской папке (SeafDir *dir) вы можете удалять, переименовывать, копировать, перемещать, создавать новые файлы/папки.
- (void)mkdir:(NSString *)newDirName;
- (void)mkdir:(NSString *)newDirName success:(void (^)(SeafDir *dir))success failure:(void (^)(SeafDir *dir))failure;
- (void)createFile:(NSString *)newFileName;
- (void)delEntries:(NSArray *)entries;
- (void)copyEntries:(NSArray *)entries dstDir:(SeafDir *)dst_dir;
- (void)moveEntries:(NSArray *)entries dstDir:(SeafDir *)dst_dir;
- (void)renameFile:(SeafFile *)sfile newName:(NSString *)newName;
delEntries, copyEntries и moveEntries могут работать с несколькими файлами/папками.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )