CNLiveUploadIcon.m 9.1 KB
//
//  CNLiveUploadIcon.m
//  CNLiveUserSystemDemo
//
//  Created by iOS on 16/9/20.
//  Copyright © 2016年 zhulin. All rights reserved.
//

#import "CNLiveUploadIcon.h"
#import "CNLiveUserSystemTools.h"
#import "CNLiveUserNetworkManager.h"
#import "NSDictionary+Safety.h"

//获取access_token
static  NSString *accessTokenTestURL = @"http://test.open.cnlive.com/openapi/api2/token";
static  NSString *accessTokenFormalURL = @"https://api.cnlive.com/open/api2/token";

//上传头像
static  NSString *uploadIconTestURL = @"http://test.open.cnlive.com/openapi/api2/user/updateUserFaceById";
static  NSString *uploadIconFormalURL = @"https://api.cnlive.com/open/api2/user/updateUserFaceById";

@implementation CNLiveUploadIcon

- (void)uploadIconWithAppId:(NSString *)appId uid:(NSString *)uid icon:(UIImage *)image token:(NSString *)token secret:(NSString *)secret success:(void (^)(id))success failure:(void (^)(NSDictionary *))failure
{
    [self getAccessTokenRequestWithAppId:appId uid:uid icon:image token:token secret:secret success:success failure:failure];
}

- (void)uploadIconWithAppId:(NSString *)appId uid:(NSString *)uid icon:(UIImage *)image token:(NSString *)token compressionQuality:(CGFloat)compressionQuality secret:(NSString *)secret success:(void (^)(id))success failure:(void (^)(NSDictionary *errorDic))failure
{
    [self getAccessTokenRequestWithAppId:appId uid:uid icon:image token:token compressionQuality:compressionQuality secret:secret success:success failure:failure];
}

#pragma mark - request

- (void)getAccessTokenRequestWithAppId:(NSString *)appId  uid:(NSString *)uid icon:(UIImage *)image token:(NSString *)token secret:(NSString *)secret success:(void (^)(id))success failure:(void (^)(NSDictionary *))failure
{
    NSDictionary *paramters = @{@"appId":[CNLiveUserSystemTools verify:appId],
                                @"secret":[CNLiveUserSystemTools verify:secret]};
    
    NSString *url;
    if ([CNLiveUserSystemTools isTestEnvironment]) {
        url = accessTokenTestURL;
    } else {
        url = accessTokenFormalURL;
    }
    [[CNLiveUserNetworkManager manager] requestPostURL:url parameters:paramters success:^(NSURLResponse * _Nullable response, id  _Nullable responseObject) {
        
        responseObject = [responseObject validatedDictionary];
        
        if ([[responseObject allKeys] containsObject:@"errorCode"]) {
            if ([[responseObject objectForKey:@"errorCode"] isEqualToString:@"0"]) {
            
                NSDictionary *dic = responseObject[@"data"];
                [self uploadIconRequestWithUid:uid icon:image token:token access_token:dic[@"access_token"] success:success failure:failure];
            } else {
                if (failure) {
                    failure(responseObject);
                }
            }
        } else {
            NSDictionary *errorDic = @{@"errorCode": @"-1",
                                       @"errorMessage": @"获取access_token失败"};
            
            if (failure) {
                failure(errorDic);
            }
        }
        
    } failure:^(NSURLResponse * _Nullable response, NSError * _Nullable error) {
      
        NSDictionary *errorDic = @{@"errorCode": [NSString stringWithFormat:@"%ld", error.code], @"errorMessage": error.localizedDescription};
        
        if (failure) {
            failure(errorDic);
        }
    }];
}

- (void)uploadIconRequestWithUid:(NSString *)uid icon:(UIImage *)image token:(NSString *)token access_token:(NSString *)accessToken success:(void (^)(id))success failure:(void (^)(NSDictionary *))failure
{
    NSData *data = UIImageJPEGRepresentation(image, 0.5);
    
    NSDictionary *paramters = @{@"uid":[CNLiveUserSystemTools verify:uid],
                                @"clientPlat":@"i",
                                @"token":[CNLiveUserSystemTools verify:token],
                                @"access_token":[CNLiveUserSystemTools verify:accessToken]};

    NSString *url;
    if ([CNLiveUserSystemTools isTestEnvironment]) {
        url = uploadIconTestURL;
    } else {
        url = uploadIconFormalURL;
    }
    [[CNLiveUserNetworkManager manager] uploadImageWithURL:url parameters:paramters imageData:data success:^(NSURLResponse * _Nullable response, id  _Nullable responseObject) {
        
        responseObject = [responseObject validatedDictionary];
        
        if ([[responseObject allKeys] containsObject:@"errorCode"] && [responseObject[@"errorCode"] isEqualToString:@"0"]) {
            
            if (success) {
                success(responseObject);
            }
            
        } else {
            
            if (failure) {
                failure(responseObject);
            }
            
            [CNLiveUserSystemTools errorStat:responseObject[@"errorMessage"]];
        }
        

    } failure:^(NSURLResponse * _Nullable response, NSError * _Nullable error) {

        NSDictionary *errorDic = @{@"errorCode": [NSString stringWithFormat:@"%ld", error.code], @"errorMessage": error.localizedDescription};
        
        if (failure) {
            failure(errorDic);
        }
        
        [CNLiveUserSystemTools errorStat:error.localizedDescription];
    }];
}

#pragma mark - 18-4-11 新增 icon可选质量
- (void)getAccessTokenRequestWithAppId:(NSString *)appId  uid:(NSString *)uid icon:(UIImage *)image token:(NSString *)token compressionQuality:(CGFloat)compressionQuality secret:(NSString *)secret success:(void (^)(id))success failure:(void (^)(NSDictionary *))failure
{
    NSDictionary *paramters = @{@"appId":[CNLiveUserSystemTools verify:appId],
                                @"secret":[CNLiveUserSystemTools verify:secret]};
    
    NSString *url;
    if ([CNLiveUserSystemTools isTestEnvironment]) {
        url = accessTokenTestURL;
    } else {
        url = accessTokenFormalURL;
    }
    [[CNLiveUserNetworkManager manager] requestPostURL:url parameters:paramters success:^(NSURLResponse * _Nullable response, id  _Nullable responseObject) {
        
        responseObject = [responseObject validatedDictionary];
        
        if ([[responseObject allKeys] containsObject:@"errorCode"]) {
            if ([[responseObject objectForKey:@"errorCode"] isEqualToString:@"0"]) {
                
                NSDictionary *dic = responseObject[@"data"];
                [self uploadIconRequestWithUid:uid icon:image token:token access_token:dic[@"access_token"] compressionQuality:compressionQuality success:success failure:failure];
            } else {
                if (failure) {
                    failure(responseObject);
                }
            }
        } else {
            NSDictionary *errorDic = @{@"errorCode": @"-1",
                                       @"errorMessage": @"获取access_token失败"};
            
            if (failure) {
                failure(errorDic);
            }
        }
        
    } failure:^(NSURLResponse * _Nullable response, NSError * _Nullable error) {
        
        NSDictionary *errorDic = @{@"errorCode": [NSString stringWithFormat:@"%ld", error.code], @"errorMessage": error.localizedDescription};
        
        if (failure) {
            failure(errorDic);
        }
    }];
}
- (void)uploadIconRequestWithUid:(NSString *)uid icon:(UIImage *)image token:(NSString *)token access_token:(NSString *)accessToken compressionQuality:(CGFloat)compressionQuality success:(void (^)(id))success failure:(void (^)(NSDictionary *))failure
{
    NSData *data;
    if (compressionQuality >= 0 && compressionQuality <= 1) {
         data = UIImageJPEGRepresentation(image, compressionQuality);
    }else{
        data = UIImageJPEGRepresentation(image, 0.5);
    }
    
    NSDictionary *paramters = @{@"uid":[CNLiveUserSystemTools verify:uid],
                                @"clientPlat":@"i",
                                @"token":[CNLiveUserSystemTools verify:token],
                                @"access_token":[CNLiveUserSystemTools verify:accessToken]};
    
    NSString *url;
    if ([CNLiveUserSystemTools isTestEnvironment]) {
        url = uploadIconTestURL;
    } else {
        url = uploadIconFormalURL;
    }
    [[CNLiveUserNetworkManager manager] uploadImageWithURL:url parameters:paramters imageData:data success:^(NSURLResponse * _Nullable response, id  _Nullable responseObject) {
        
        responseObject = [responseObject validatedDictionary];
        
        if ([[responseObject allKeys] containsObject:@"errorCode"] && [responseObject[@"errorCode"] isEqualToString:@"0"]) {
            
            if (success) {
                success(responseObject);
            }
            
        } else {
            
            if (failure) {
                failure(responseObject);
            }
            
            [CNLiveUserSystemTools errorStat:responseObject[@"errorMessage"]];
        }
        
        
    } failure:^(NSURLResponse * _Nullable response, NSError * _Nullable error) {
        
        NSDictionary *errorDic = @{@"errorCode": [NSString stringWithFormat:@"%ld", error.code], @"errorMessage": error.localizedDescription};
        
        if (failure) {
            failure(errorDic);
        }
        
        [CNLiveUserSystemTools errorStat:error.localizedDescription];
    }];
}

@end