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

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

//获取access_token
static  NSString *accessTokenURL = @"https://api.cnlive.com/open/api2/token";

//上传头像
static  NSString *uploadIconURL = @"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 (^)(NSError *))failure
{
    [self getAccessTokenRequestWithAppId:appId uid:uid icon:image token:token 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 (^)(NSError *))failure
{
    NSDictionary *paramters = @{@"appId":[CNLiveUserSystemTools verify:appId],
                                @"secret":[CNLiveUserSystemTools verify:secret]};
    
    [[CNLiveNetworkManager manager] requestPostURL:accessTokenURL 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 {
                NSError *error = [NSError errorWithDomain:NSURLErrorDomain code:-1 userInfo:@{NSLocalizedDescriptionKey :responseObject[@"errorMessage"]}];
                failure(error);
            }
        } else {
            NSError *error = [NSError errorWithDomain:NSURLErrorDomain code:-1 userInfo:@{NSLocalizedDescriptionKey :@"获取access_token失败"}];
            failure(error);
        }
        
    } failure:^(NSURLResponse * _Nullable response, NSError * _Nullable error) {
        failure(error);
    }];
}

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

    [[CNLiveNetworkManager manager] uploadImageWithURL:uploadIconURL parameters:paramters imageData:data success:^(NSURLResponse * _Nullable response, id  _Nullable responseObject) {
        
        responseObject = [responseObject validatedDictionary];
        success(responseObject);
        
        if (![responseObject[@"errorCode"] isEqualToString:@"0"]) {
            [CNLiveUserSystemTools errorStat:responseObject[@"errorMessage"]];
        }
        
    } failure:^(NSURLResponse * _Nullable response, NSError * _Nullable error) {
        failure(error);
        [CNLiveUserSystemTools errorStat:error.localizedDescription];
    }];
}

@end