PTFSSDK 0.1.0

PTFSSDK 0.1.0

sqm 维护。



PTFSSDK 0.1.0

  • 孙启明

PTFSSDK 文档


版本说明

  • 1.0.0(当前版本)
    • 提供节点相关功能(初始化、启动、停止、重启、判断状态)
    • 提供文件上传、下载进度获取功能
    • 提供获取仓库大小、清理缓存功能
    • 提供查询带宽功能

使用说明

PTFSSDK 仅支持 arm64 及以上真机上运行,SDK 不支持 bitcode,请设置 bitcode 为 NO,在 target 的 Build Settings 中搜索 bitcode,将 YES 改成 NO。

CocoaPods 安装

Podfile

platform :ios, '8.0'
pod 'PTFSSDK'

在需要使用 PTFSSDK 库文件接口的地方直接 import 即可:

#import "PTFSSDK.h"

接口说明

SDK 第一次初始化时,必须先通过调用 initializePTFSRepoWithCompletion 和 initializePTFSBootStrap 传入节点参数初始化 SDK,之后不再调用这两个方法。其他功能必须在调用 startDaemonWithCompletion 启动守护进程成功后才能生效。
大部分接口返回是通过 completionBlock 方式回调

typedef void(^PTFSResponseBlock)(PTFSResponse *response);

PTFSResponse 对象

@interface PTFSResponse : NSObject

@property (assign, nonatomic)   NSInteger code;
@property (copy, nonatomic)     NSString *info;

@end

上传和下载进度可以通过调用相应的获取进度接口单独获取,也可以通过ProgressBlock回调获取。

typedef void(^PTFSProgressBlock)(NSUInteger completedSize, NSUInteger totalSize, NSInteger taskID);

/** 初始化并返回一个 PTFSSDK 的单例

@return 返回的单例 */

+ (instancetype)sharedInstance;

/** 初始化仓库,默认初始化在Document/zzb/PTFS下

@param completionBlock 初始化结果block

  • 成功(初始化成功) {"code":0,"info":"节点id"}
  • 失败(无法获取仓库路径) {"code":1,"info":"错误信息"}
  • 失败(节点已经启动) {"code":2,"info":"错误信息"}
  • 失败(节点已经初始化) {"code":3,"info":"错误信息"}
  • 失败(其它) {"code":4,"info":"错误信息"}
- (void)initializePTFSRepoWithCompletion:(nullable PTFSResponseBlock)completionBlock;

/** 初始化引导节点地址

@param address 引导节点地址,以";"分隔 - 引导节点示例:"/ip4/47.99.193.140/tcp/4001/ipfs/QmdUYPAyFpMmeVRYNLQsoSuGmoN1bbAfNa8RhqYZkZ39Xk"
@param completionBlock 初始化结果block

  • 成功,返回{"code":0,"info":""};
  • 失败,返回{"code":1,"info":"错误信息"}
- (void)initializePTFSBootStrap:(nonnull NSString *)address
                   completion:(nullable PTFSResponseBlock)completionBlock;

/** 启动守护进程

@param completionBlock

  • 成功,返回{"code":1,"info":"无信息"};
  • 失败,返回{"code":0,"info":"错误信息"}
- (void)startDaemonWithCompletion:(nullable PTFSResponseBlock)completionBlock;

/** 判断daemon进程是否已经启动

@return 已启动返回true,否则返回false */

- (BOOL)isDaemonOk;

/** 停止守护进程

@param completionBlock

  • 成功,返回{"code":1,"info":"无信息"};
  • 失败,返回{"code":0,"info":"错误信息"}
- (void)stopDaemonWithCompletion:(nullable PTFSResponseBlock)completionBlock;

/** 重启守护进程

@param completionBlock

  • 成功,返回{"code":1,"info":"无信息"};
  • 失败,返回{"code":0,"info":"错误信息"}
- (void)restartDaemonWithCompletion:(nullable PTFSResponseBlock)completionBlock;

/** 获取指定路径(文件/文件夹)的大小

@param filePath 文件/文件夹路径
@param isDir 若filePath是文件夹的路径传入true,否则传入false
@param completionBlock

  • 成功,返回{"code":文件/文件夹大小,"info":"无信息"};
  • 失败,返回{"code":0,"info":"错误信息"}
- (void)pathFileSizeWithPath:(nonnull NSString *)filePath
                      isDir:(BOOL)isDir
                 completion:(nullable PTFSResponseBlock)completionBlock;

/** 上传文件

@param sFilePath 文件存放路径
@param filesize 上传文件/文件夹大小
@param isDir 若sFilePath是文件夹的路径传入true,否则传入false
@param uploadProgressBlock 上传进度block
@param completionBlock

  • 成功(上传任务开始),返回{"code":taskID,"info":"fileHash"};
  • 失败(添加上传任务失败),返回{"code":0,"info":"错误信息"}
- (void)uploadFileWithPath:(nonnull NSString *)sFilePath
                 fileSize:(NSUInteger)filesize
                    isDir:(BOOL)isDir
                 progress:(PTFSProgressBlock)uploadProgressBlock
               completion:(nullable PTFSResponseBlock)completionBlock;

/** 取消文件上传

@param taskID 上传任务ID

- (void)cancelUploadWithTaskId:(NSInteger)taskID;

/** 获取文件已上传的大小

@param taskID 上传任务ID
@param completionBlock {"code":上传字节大小,"info":"错误信息"},错误信息用于表示文件上传任务开始后产生的错误

- (void)uploadedFileSizeWithTaskId:(NSInteger)taskID
                       completion:(nullable PTFSResponseBlock)completionBlock;

/** 清理文件的上传记录信息(文件上传完成或取消上传后需调用该接口)

@param taskID 上传任务ID

- (void)clearUploadInfoWithTaskId:(NSInteger)taskID;

/** 下载文件

@param fileHash 下载的文件hash
@param sFilePath 文件存放路径
@param downloadProgressBlock 下载进度block
@param completionBlock

  • 成功(下载任务开始),返回{"code":文件大小(字节),"info":"taskID"};
  • 失败(添加下载任务失败),返回{"code":0,"info":"错误信息"}
- (void)downloadFileWithFileHash:(nonnull NSString *)fileHash
                        savePath:(nonnull NSString *)sFilePath
                        progress:(PTFSProgressBlock)downloadProgressBlock
                      completion:(nullable PTFSResponseBlock)completionBlock;

/** 根据文件hash获取文件已下载的大小

@param taskID 下载任务ID @return 文件已下载的总字节大小

- (NSUInteger)downloadedFileSizeWithTaskId:(NSInteger)taskID;

/** 取消下载文件

@param fileHash 下载的文件hash @param completionBlock

  • 成功,返回{"code":1,"info":"停止下载成功"};
  • 失败,返回{"code":0,"info":"错误信息"}
- (void)cancelDownloadingWithFileHash:(NSString *)fileHash
                           completion:(nullable PTFSResponseBlock)completionBlock;

/** 清理文件的下载记录信息(文件下载完成或取消下载后需调用该接口)

@param taskID 下载任务ID

- (void)clearDownloadInfoWithTaskId:(NSInteger)taskID;

/** 获取仓库大小

@param completionBlock

  • 成功,返回{"code":仓库大小(字节),"info":"无信息"};
  • 失败,返回{"code":0,"info":"错误信息"}
- (void)repoSizeWithCompletion:(nullable PTFSResponseBlock)completionBlock;

/** 清理仓库缓存释放空间

@param completionBlock

  • 成功,返回{"code":1,"info":"无信息"};
  • 失败,返回{"code":0,"info":"错误信息"}
- (void)clearCacheWithCompletion:(nullable PTFSResponseBlock)completionBlock;

/** 获取当前下行带宽

@param completionBlock

  • 成功,返回{"code":下行带宽(字节/秒),"info":"无信息"};
  • 失败,返回{"code":0,"info":"错误信息"}
- (void)bandWidthWithCompletion:(nullable PTFSResponseBlock)completionBlock;