CNLiveClient.h 3.96 KB
//
//  CNLiveClient.h
//  CNLiveUploadYunSDK
//
//  Created by 张旭 on 2017/8/24.
//  Copyright © 2017年 cnlive. All rights reserved.
//

#import <Foundation/Foundation.h>

@class ALAsset;
@class CNLiveMultipartUpload;
@class CNLiveInitiateMultipartUploadRequest;
@class CNLiveListPartsResponse;
@class CNLiveListPartsRequest;
@class CNLiveInitiateMultipartUploadResponse;
@class CNLiveUploadPartResponse;
@class CNLiveUploadPartRequest;
@class CNLivePutObjectResponse;
@class CNLivePutObjectRequest;
@class CNLiveAbortMultipartUploadResponse;
@class CNLiveAbortMultipartUploadRequest;
@class CNLiveCompleteMultipartUploadResponse;
@class CNLiveCompleteMultipartUploadRequest;

typedef enum {
    CNLiveBucketBeijing = 0,
    CNLiveBucketAmerica,
    CNLiveBucketHongkong,
    CNLiveBucketHangzhou,
    CNLiveBucketShanghai,
} CNLiveBucketDomainRegion; // bucket所在地区

@interface CNLiveClient : NSObject

@property(assign, nonatomic) BOOL enableHTTPS;

/**
 *  初始化
 *
 *  @return Client对象
 */
+ (instancetype)initialize;

/**
 *  设置CNLiveBucket所在的地区,默认北京
 
 *  @param domainRegion 共有北京,杭州,美国圣克拉拉,香港,上海五个
 *  注释:建议在工程的delegate里面实现
 */
- (void)setBucketDomainWithRegion:(CNLiveBucketDomainRegion)domainRegion;

/*
 设置CNLiveBucket 所在的地区,绑定bucket的自定义域名
 @param 自定义的域名
 */
- (void)setBucketDomain:(NSString *)domainRegion;

/**
 *  获取用户自定义的域名
 *  如果没有设置,返回nil
 */
- (NSString *)getCustomBucketDomain;

/**
 *  获取当前bucket所在地区,默认北京
 共有北京,杭州,美国圣克拉拉,香港四个
 */
- (NSString *)getBucketDomain;

/**
 * 返回请求协议:http/https
 * 目前由enableHTTPS决定
 */
- (NSString *)requestProtocol;

/**
 *  调用这个接口会初始化一个分块上传
 *
 *  @param request 分块上传请求CNLiveInitiateMultipartUploadRequest
 *
 *  @return 返回resonse对象(里边有服务返回的数据(具体的参照demo))
 */
- (CNLiveMultipartUpload *)initiateMultipartUploadWithRequest:
(CNLiveInitiateMultipartUploadRequest *)request;

/**
 *  获取相册分块数据
 *
 *  @param partNum 从1开始计数,第一块partNum = 1
 *  @param partlength 每一块数据的大小,单位为字节
 *  @param assets Alasset对象,是获取视频数据的类
 *
 *  @return 相册分块数据
 */
- (NSData *)getUploadPartDataWithPartNum:(NSInteger)partNum
                              partLength:(NSInteger)partlength
                                 Alasset:(ALAsset *)assets;

/**
 *  罗列出已经上传的块
 *
 *  @param listPartsRequest 设置罗列已经上传的分块的request信息
 *
 *  @return 返回resonse对象(里边有服务返回的数据(具体的参照demo))
 */

- (CNLiveListPartsResponse *)listParts:(CNLiveListPartsRequest *)listPartsRequest;

/**
 *  组装所有分块上传的文件
 *
 *  @param completeMultipartUploadRequest 设置组装所有分块的http信息
 *
 *  @return 返回resonse对象(里边有服务返回的数据(具体的参照demo))
 */
- (CNLiveCompleteMultipartUploadResponse *)completeMultipartUpload:
(CNLiveCompleteMultipartUploadRequest *)completeMultipartUploadRequest;

/**
 上传分块
 
 @param uploadPartRequest 指定上传分块的request信息
 @return 返回resonse对象(里边有服务返回的数据(具体的参照demo))
 */
- (CNLiveUploadPartResponse *)uploadPart:(CNLiveUploadPartRequest *)uploadPartRequest;

/**
 *  取消分块上传
 *
 *  @param abortMultipartRequest 设置分块文件属性
 *
 *  @return 返回resonse对象(里边有服务返回的数据(具体的参照demo))
 */
- (CNLiveAbortMultipartUploadResponse *)abortMultipartUpload:
(CNLiveAbortMultipartUploadRequest *)abortMultipartRequest;

- (CNLivePutObjectResponse *)putObject:(CNLivePutObjectRequest *)putObjectRequest;

/**
 *  返回版本信息
 *
 *  @return 版本信息
 */
+ (NSString *)apiVersion;
@end