批量恢复回收站项目

最近更新时间:2024-04-25 11:08:21

我的收藏

简介

本文档提供关于批量恢复回收站文件的 API 概览以及 SDK 示例代码。
API
操作描述
批量恢复回收站文件

SDK API 参考

SDK 所有接口的具体参数与方法说明,请参见 SDK API 参考

批量恢复回收站文件

功能说明

用于批量恢复目录或文件
当项目较多以异步方式恢复时,返回 HTTP 202 Accepted。
当项目较少以同步方式恢复时,返回 HTTP 200 OK(全部执行成功)或 HTTP 207 Multi-Status(存在部分或全部执行失败)。

批量恢复回收站文件示例代码

开始批量恢复

QCloudSMHBatchRestoreRecycleObjectReqeust *req = [QCloudSMHBatchRestoreRecycleObjectReqeust new];
req.priority = self.priority;
req.libraryId = self.libraryId;
req.spaceId = self.spaceId;
req.recycledItemIds = self.batchInfos;
[req setFinishBlock:^(QCloudSMHBatchResult *result, NSError * _Nullable error) {
//如果是同步任务,从 http 的状态码中获取任务的状态
QCloudSMHBatchTaskStatus status = QCloudSMHBatchTaskStatusTypeFromStatus([result __originHTTPURLResponse__].statusCode);
result.status = status;
if(status != QCloudSMHBatchTaskStatusWating || error){
// 当任务状态非等待或者 有 error 时 结束
if(self.finishBlock){
self.finishBlock(result, error);
}
}else{
// 使用返回的 taskid 进行轮询任务状态
result.taskId;
}

}];
[[QCloudSMHService defaultSMHService]batchRestoreRecycleObject:req];


查询任务状态

这里需要进行轮询任务状态,直到查询到任务结果。
QCloudGetTaskStatusRequest *req = [QCloudGetTaskStatusRequest new];
req.spaceId = @"spaceId";
req.libraryId = @"libraryId";
// 上一步返回的 taskId
req.taskIdList = @[taskId];
[req setFinishBlock:^(NSArray * _Nonnull result, NSError * _Nonnull error) {

}];
[[QCloudSMHService defaultSMHService] getTaskStatus:req];

高级批量恢复回收站文件示例代码

该接口封装了批量恢复回收站文件以及轮询任务状态,setFinishBlock 直接返回最终任务结果,无需手动查询任务状态。
QCloudSMHRestoreObjectRequest *req = [QCloudSMHRestoreObjectRequest new];
req.spaceId = @"spaceId";
req.libraryId = @"libraryId";

req.batchInfos = @[@"1"];
[req setFinishBlock:^(QCloudSMHBatchResult *result, NSError *_Nullable error) {

}];
[[QCloudSMHService defaultSMHService] restoreObject:req];