//
//  KMDropboxManager.h
//  PDF Reader Pro Edition
//
//  Created by 万军 on 2020/2/18.
//  Copyright © 2020 WanJun. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "KMServicesCloudFile.h"
#import "KMCloudServer.h"
#import "KMCloudOperation.h"

NS_ASSUME_NONNULL_BEGIN

@class KMCloudOperation;
@interface KMDropboxManager : NSObject
{
    NSString *_appKey;
}
//The user's unique Dropbox ID
@property (nonatomic, readonly) NSString *accountId;

@property (nonatomic, readonly) NSString *name;

@property (nonatomic, copy, readonly) NSString *email;

////获取本地当前目录下文件列表(仅当前层)
//@property (nonatomic, strong) NSMutableArray<KMDropboxFileMetadata *> *localFileList;

//获取根目录对象
@property (nonatomic, readonly) KMServicesCloudFile *localRootFolder;

+ (instancetype) shareInstance;

/** Dropbox  Whether to login.  */
- (BOOL)isSignedIn;

/** Dropbox auth/login. */
- (void) authorizedLoginCompletion:(CloudLoginCallBack)completion;

/** Dropbox logout. */
- (void) authorizedLogoutCompletion:(CloudLogoutCallBack)completion;

/**
   Upload local content to Dropbox cloud disk space.
   @param cloudPath Dropbox cloud disk space.
   @param localPath local file path url.
   @return upload operation.
*/
- (KMCloudOperation *)uploadCloudPath:(KMServicesCloudFile *)cloudPath
                              localPath:(NSURL *)localPath
                  currentConvetProgress:(CurrentProgressCallBack)currentProgress
                             completion:(CompletionCallBack)completion;

/**
   Dropbox cancel upload operation.
   @param operation upload operation
*/
- (void) uploadCancel:(KMCloudOperation *)operation;

/**
   Download files from Dropbox cloud disk to local space.
   @param cloudPath Dropbox cloud disk space.
   @param localPath local space path url.
   @return download operation.
*/
- (KMCloudOperation *)downloadCloudPath:(KMServicesCloudFile *)cloudPath
                                localPath:(NSURL *)localPath
                    currentConvetProgress:(CurrentProgressCallBack)currentProgress
                               completion:(CompletionCallBack)completion;

/**
   Dropbox cancel download operation.
   @param operation download operation
*/
- (void) downloadCancel:(KMCloudOperation *)operation;

/**
   Delete Dropbox file based on file object.
   @param fileData dropbox file metadata
*/
-(void) deleteFileWithPath:(KMServicesCloudFile *)fileData
                completion:(CloudDeleteFileCallBack)completion;

/**
   Create Dropbox folder based on file object.
   @param fileData dropbox file metadata.
   @param folderName Created folder name.
*/
-(void) createFolderWithPath:(KMServicesCloudFile *)fileData
                  folderName:(NSString *)folderName
                  completion:(CreateFolderCallBack)completion;

/**
   Get Dropbox file list based on file object.
   @param fileData dropbox file metadata. Root folder is 'localRootFolder'
   @param responseBlock succeed block
*/
- (void) getListWithFilePath:(KMServicesCloudFile *)fileData
            setResponseBlock:(GetFileListCallBack)responseBlock;

- (KMServicesCloudFile *)cloudFolderCacheForDisPath:(NSString *)path;

@end

NS_ASSUME_NONNULL_END