1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/lins05-seafile-iOS

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Seafile iOS SDK User Guide.md 8.4 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 01.12.2024 07:30 deb88e2

Руководство пользователя Seafile iOS SDK

Код всё ещё находится в процессе рефакторинга. Всем, кто хочет использовать Seafile iOS SDK, следует использовать только перечисленные ниже API.

Как использовать

Seafile доступен через CocoaPods. Чтобы установить его, просто добавьте следующую строку в свой Podfile:

pod 'Seafile', :git => 'https://github.com/haiwen/seafile-iOS.git', :branch => 'master'

Api

  1. Авторизация учётной записи

    • Создайте новый объект SeafConnection с URL сервера, именем пользователя и паролем.

    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

    • (void)loginSuccess:(SeafConnection *_Nonnull)connection;
    • (void)loginFailed:(SeafConnection *_Nonnull)connection response:(NSURLResponse *_Nonnull)response error:(NSError *_Nullable)error;
    • (BOOL)authorizeInvalidCert:(NSURLProtectionSpace *_Nonnull)protectionSpace;
    • (NSData *_Nullable)getClientCertPersistentRef:(NSURLCredential *_Nullable __autoreleasing *_Nullable)credential; // return the persistentRef @end
  2. Модели данных

В Seafile основными моделями данных являются библиотека, папка, файл. Для этих моделей мы используем следующие структуры данных.

  • SeafRepos: корень, коллекция всех библиотек.
  • SeafRepo: библиотека, содержит коллекцию SeafFiles и SeafDirs.
  • SeafDir: папка в библиотеке.
  • SeafFile: файл в библиотеке.
  • SeafUploadFile: локальный файл для загрузки.

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; // общая ссылка

  • (BOOL)hasCache; // есть ли локальный кэш
  • (BOOL)loadCache; // загрузить локальный кэш
  • (void)clearCache; // очистить локальный кэш

// загрузить содержимое этой записи, force означает принудительную загрузку с сервера. В противном случае сначала попытается загрузить локальный кеш, если кеш не найден, загрузит с удалённого сервера.

  • (void)loadContent:(BOOL)force;
  • (UIImage *)icon; // значок для этой записи

// Если включена локальная расшифровка, проверьте пароль библиотеки локально, в противном случае установите пароль библиотеки на удалённом сервере

  • (void)checkOrSetRepoPassword:(NSString *)password delegate:(id)del;

  • (void)checkOrSetRepoPassword:(NSString *)password block:(repo_password_set_block_t)block;

  • (void)generateShareLink:(id)dg; // создать общую ссылку

  1. Перечислите все библиотеки

[conn.rootFolder loadContent:NO];

Результат этой операции будет передан через conn.rootFolder.delegate. conn.rootFolder.items — это все библиотеки под текущей учётной записью.

  1. *Получить список файлов папки: (SeafDir dir)

[dir loadContent:NO];

Результат этой операции будет передан через dir.delegate. dir.items — это все папки и файлы под текущей учётной записью. dir.allItems содержит SeafUploadFiles, которые будут загружены в эту папку.

  1. Скачать файл: (SeafFile * file)

[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);
  1. Файлы со звёздочкой: (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;
  2. Операции с файлами/папками: удаление, переименование, копирование, перемещение файлов/папок, создание нового файла/папки

    В родительской папке (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 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/lins05-seafile-iOS.git
git@api.gitlife.ru:oschina-mirror/lins05-seafile-iOS.git
oschina-mirror
lins05-seafile-iOS
lins05-seafile-iOS
master