WhiteConverter.h 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. //
  2. // Converterter.h
  3. // WhiteSDK
  4. //
  5. // Created by yleaf on 2019/6/25.
  6. //
  7. #import <Foundation/Foundation.h>
  8. #import "WhiteConversionInfo.h"
  9. NS_ASSUME_NONNULL_BEGIN
  10. /**
  11. 查询成功后回调
  12. @param success 是否成功
  13. @param ppt 转换后的 ppt,已经有默认的 ppt.scenes 可以直接调用 whiteSDK WhiteRoom 的 putScenes API
  14. @param info 从服务器获取到的 转换进度信息
  15. @param error 报错信息
  16. */
  17. typedef void(^ConvertCompletionHandler)(BOOL success, ConvertedFiles * _Nullable ppt, WhiteConversionInfo * _Nullable info, NSError * _Nullable error);
  18. typedef void(^ConvertProgress)(CGFloat progress, WhiteConversionInfo * _Nullable info);
  19. /**
  20. 本地 Converter 状态
  21. 只有一个转换服务器,完整结束(成功,失败)才可以创建下一个转换服务。
  22. */
  23. typedef NS_ENUM(NSInteger, ConverterStatus) {
  24. /** 初始化状态,可以开始新转换服务 */
  25. ConverterStatusIdle,
  26. /** 本地转换创建成功,无法创建新转换服务 */
  27. ConverterStatusCreated,
  28. /**
  29. 创建转换任务失败
  30. 在对应回调 error 中查看具体原因,
  31. 一般为网络错误请求失败,或者未开启文档转换服务
  32. 可以开始新转换服务
  33. */
  34. ConverterStatusCreateFail,
  35. /** 正在向服务器查询转换状态,无法创建新转换服务 */
  36. ConverterStatusChecking,
  37. /**
  38. 向服务器查询转换状态失败
  39. 重启查询服务,查询服务器转换状态
  40. 无法创建新转换服务
  41. */
  42. ConverterStatusCheckFail,
  43. /** 等待下次查询转换服务状态,无法创建新转换服务 */
  44. ConverterStatusWaitingForNextCheck,
  45. /** 查询服务超时,已停止检查,可以手动重启查询服务,无法创建新转换服务 */
  46. ConverterStatusTimeout,
  47. /** 转换服务完成,可以开启新转换服务 */
  48. ConverterStatusSuccess,
  49. /**
  50. 转换服务失败
  51. 在对应回调 error 中查看具体原因,
  52. 可以开启新转换服务
  53. */
  54. ConverterStatusFail,
  55. };
  56. typedef NS_ENUM(NSInteger, ConverterErrorCode) {
  57. /** 创建转换服务失败,请重新创建 */
  58. ConverterErrorCodeCreatedFail = 20001,
  59. /** 服务器转换失败;具体请查看 error userInfo 信息 */
  60. ConverterErrorCodeConvertFail = 20002,
  61. /** 服务器端不存在该任务 */
  62. ConverterErrorCodeNotFound = 20003,
  63. /** 查询时出错,一般是网络问题,请重启查询服务 */
  64. ConverterErrorCodeCheckFail = 20004,
  65. /** 查询时间,超过timeout时间 */
  66. ConverterErrorCodeCheckTimeout= 20005,
  67. };
  68. @interface WhiteConverter : NSObject
  69. - (instancetype)init NS_UNAVAILABLE;
  70. - (instancetype)initWithRoomToken:(NSString *)roomToken;
  71. - (instancetype)initWithRoomToken:(NSString *)roomToken pollingInterval:(NSTimeInterval)interval timeout:(NSTimeInterval)timeout;
  72. @property (nonatomic, copy, readonly) NSString *roomToken;
  73. /**
  74. 轮询间隔时间,默认 15s,从前一个请求完整结束,开始计时
  75. */
  76. @property (nonatomic, assign) NSTimeInterval interval;
  77. /**
  78. 轮询超时停止时间,默认 3 分钟
  79. */
  80. @property (nonatomic, assign) NSTimeInterval timeout;
  81. /**
  82. 服务器转换任务的 uuid。如遇错,可以提供 taskId 和 type 类型进行排查。
  83. 只有成功创建转换任务,才会有 taskId,如果未开启服务
  84. */
  85. @property (nonatomic, copy, readonly, nullable) NSString *taskId;
  86. /**
  87. 错误信息
  88. */
  89. @property (nonatomic, strong, readonly, nullable) NSError *error;
  90. /**
  91. 转换类型,在创建转换任务时,传入。
  92. */
  93. @property (nonatomic, assign, readonly) ConvertType type;
  94. @property (nonatomic, assign, readonly) ConverterStatus status;
  95. /**
  96. 创建文档转换服务,并开始轮询请求服务器。
  97. 部分状态下无法新建服务,具体看 @link{{ConverterStatus}} 枚举
  98. @param url 文档所在网络地址,需要对外可下载(即使无法下载,也会成功创建转换服务,但是会立即变成转换失败状态),SDK 服务器会去下载,然后进行转换。
  99. @param type 文档类型
  100. @param progress 进度回调提示
  101. @param completionHandler 转换完成回调(主线程回调)
  102. */
  103. - (void)startConvertTask:(NSString *)url type:(ConvertType)type progress:(_Nullable ConvertProgress)progress completionHandler:(_Nullable ConvertCompletionHandler)completionHandler;
  104. /**
  105. 重新轮询执行检查(外部调用时,只有ConverterStatusTimeout,才允许重新开启轮询检查)
  106. 间隔与超时时间,继承 启动文档转换服务 API 的设置
  107. @param progress 进度回调
  108. @param completionHandler 转换完成回调(主线程回调)
  109. */
  110. - (void)startPolling:(_Nullable ConvertProgress)progress completionHandler:(_Nullable ConvertCompletionHandler)completionHandler;
  111. @end
  112. NS_ASSUME_NONNULL_END