萤石云 iOSSDK,移植跨平台相关工程
Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/Global/EZHttpUtil.m
@@ -10,44 +10,60 @@
#import <Foundation/Foundation.h>
#import <CommonCrypto/CommonDigest.h>
#import "AFNetworking.h"
#import "YYModel.h"
#define TestRequestHttpsHost @"https://test-gz.hdlcontrol.com"
#pragma mark API
#define API_POST_EZ_AddDevice @"/home-wisdom/platform/childAddDevice"
#define API_POST_EZ_GetChildToken @"/home-wisdom/platform/childToken"
#define API_POST_EZ_ChildDelDevice @"/home-wisdom/platform/childDelDevice"
#define API_POST_EZ_AddDevice @"/home-wisdom/platform/yingshi/child/addDevice"
#define API_POST_EZ_GetChildToken @"/home-wisdom/platform/yingshi/child/token"
#define API_POST_EZ_ChildDelDevice @"/home-wisdom/platform/yingshi/child/deleteDevice"
#define API_POST_EZ_RefreshToken @"/smart-footstone/member/oauth/login"
#define API_POST_EZ_GetAlarmList @"/home-wisdom/platform/yingshi/alarm/records"//获取报警消息
#define API_POST_EZ_DeleteAlarmMes @"/home-wisdom/platform/yingshi/alarm/delete"//删除报警消息
#define API_POST_EZ_ReadAlarmMes @"/home-wisdom/platform/yingshi/alarm/updateChecked"//标记报警消息已读
#pragma mark APP_KEY
#define APP_KEY @"HDL-HOME-APP-TEST"
#define SECRET_KEY @"WeJ8TY88vbakCcnvH8G1tDUqzLWY8yss"
#define TIME_OUT 15.0f
@implementation EZHttpUtil
#pragma mark -接口请求部分
/// sharedManager
+ (id)sharedManager {
    static dispatch_once_t once;
    static id instance;
    dispatch_once(&once, ^{
        instance = [self new];
    });
    return instance;
}
/**
 *  @since 河东获取子账号token的接口
 *
 *  @param block 回调block
 */
+ (void)getChildToken:(void (^)(NSString *accessToken))block{
- (void)getChildToken:(void (^)(NSString *accessToken))block{
    
    //2.设置请求参数
    NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
    [parameters setValue: [NSString stringWithFormat:@"%d", [GlobalKit shareKit].hdlPlatform] forKey:@"platform"];
    [parameters setValue:[GlobalKit shareKit].hdlHomeId forKey:@"homeId"];
    parameters = [self GetSignRequestDictionary:parameters];
    
    [self requestHttpsPost:API_POST_EZ_GetChildToken parameters:parameters completion:^(ResponseData *responseData) {
        if (block) {
            NSString * token = @"";
            if(responseData.success){
                token = responseData.data[@"accessToken"];
//                token = responseData.data[@"accessToken"];
                token = [NSString stringWithFormat:@"%@",responseData.data];
            }
            block(token);
        }
@@ -65,7 +81,7 @@
 *  @param completion   回调block,error为空时表示添加成功
 *
 */
+ (void)addDeviceByHDL:(NSString *)deviceSerial
- (void)addDeviceByHDL:(NSString *)deviceSerial
                              verifyCode:(NSString *)verifyCode
                              completion:(void (^)(ResponseData *responseData))completion{
@@ -73,9 +89,12 @@
    NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
    [parameters setValue:deviceSerial forKey:@"deviceSerial"];
    [parameters setValue:verifyCode forKey:@"validateCode"];
    [parameters setValue: [NSString stringWithFormat:@"%d",[GlobalKit shareKit].hdlPlatform] forKey:@"platform"];
    [parameters setValue:[GlobalKit shareKit].hdlHomeId forKey:@"homeId"];
    parameters = [self GetSignRequestDictionary:parameters];
    
   [self requestHttpsPost:API_POST_EZ_AddDevice parameters:parameters completion:^(ResponseData *responseData) {
    [self requestHttpsPost:API_POST_EZ_AddDevice parameters:parameters completion:^(ResponseData *responseData) {
        if (completion) {
            completion (responseData);
        }
@@ -92,10 +111,13 @@
 *  @param completion   回调block,error为空时表示添加成功
 *
 */
+ (void)deleteDeviceByHDL:(NSString *)deviceSerial completion:(void (^)(ResponseData *responseData))completion{
- (void)deleteDeviceByHDL:(NSString *)deviceSerial completion:(void (^)(ResponseData *responseData))completion{
    //1.设置请求参数
    NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
    [parameters setValue:deviceSerial forKey:@"deviceSerial"];
    [parameters setValue: [NSString stringWithFormat:@"%d",[GlobalKit shareKit].hdlPlatform] forKey:@"platform"];
    [parameters setValue:[GlobalKit shareKit].hdlHomeId forKey:@"homeId"];
    parameters = [self GetSignRequestDictionary:parameters];
    
    [self requestHttpsPost:API_POST_EZ_ChildDelDevice parameters:parameters completion:^(ResponseData *responseData) {
@@ -108,10 +130,74 @@
}
/**
 * 根据设备序列号获取告警信息列表
 */
- (void)getAlarmList:(NSString *)deviceSerial
              pageNo:(NSInteger)pageNo
            pageSize:(NSInteger)pageSize
          completion:(void (^)(ResponseData *responseData))completion{
    //1.设置请求参数
    NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
    [parameters setValue:deviceSerial forKey:@"deviceSerial"];
    [parameters setValue:[GlobalKit shareKit].hdlHomeId forKey:@"homeId"];
    [parameters setValue:[NSString stringWithFormat:@"%ld",(long)pageSize] forKey:@"pageSize"];
    [parameters setValue:[NSString stringWithFormat:@"%ld",(long)pageNo] forKey:@"pageNo"];
    parameters = [self GetSignRequestDictionary:parameters];
    NSLog(@"HDLpageNo:%ld",(long)pageNo);
    [self requestHttpsPost:API_POST_EZ_GetAlarmList parameters:parameters completion:^(ResponseData *responseData) {
        if (completion) {
            completion (responseData);
        }
    }];
}
/**
 * 批量删除报警记录
 */
- (void)deleteAlarmMessage:(NSArray *)alarmIds
          completion:(void (^)(ResponseData *responseData))completion{
    //1.设置请求参数
    NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
    [parameters setValue:[alarmIds yy_modelToJSONObject] forKey:@"alarmIds"];
    parameters = [self GetSignRequestDictionary:parameters];
    [self requestHttpsPost:API_POST_EZ_DeleteAlarmMes parameters:parameters completion:^(ResponseData *responseData) {
        if (completion) {
            completion (responseData);
        }
    }];
}
/**
 * 批量标记报警记录已读
 */
- (void)readAlarmMessage:(NSArray *)alarmIds
          completion:(void (^)(ResponseData *responseData))completion{
    //1.设置请求参数
    NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
    [parameters setValue:@"1" forKey:@"isChecked"];
    [parameters setValue:[alarmIds yy_modelToJSONObject] forKey:@"alarmIds"];
    parameters = [self GetSignRequestDictionary:parameters];
    [self requestHttpsPost:API_POST_EZ_ReadAlarmMes parameters:parameters completion:^(ResponseData *responseData) {
        if (completion) {
            completion (responseData);
        }
    }];
}
/// 刷新token
/// @param block 结果
+ (void)refreshHDLToken:(void (^)(BOOL isSuccess))block{
- (void)refreshHDLToken:(void (^)(BOOL isSuccess))block{
    //1.设置请求参数
    NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
@@ -125,7 +211,7 @@
        if (block) {
            if (responseData) {
                if(responseData.success){
                    [EZSDK setHDlAccessToken:
                    [[EZSDK sharedInstance] setHDlAccessToken:
                     [NSString stringWithFormat:@"%@%@",responseData.data[@"headerPrefix"], responseData.data[@"accessToken"]]
                                refreshToken:responseData.data[@"refreshToken"]];
@@ -148,7 +234,7 @@
/// @param apiPath 接口地址
/// @param parameters 请求参数
/// @param completion 请求响应参数
+ (void)requestHttpsPost:(NSString *)apiPath
- (void)requestHttpsPost:(NSString *)apiPath
                                parameters:(NSMutableDictionary *)parameters
              completion:(void (^)(ResponseData *responseData))completion{
    
@@ -176,7 +262,7 @@
/// @param apiPath 接口地址
/// @param parameters 请求参数
/// @param completion 请求响应参数
+ (void)requestHttpsBase:(NSString *)apiPath
- (void)requestHttpsBase:(NSString *)apiPath
                                parameters:(NSMutableDictionary *)parameters
                                completion:(void (^)(ResponseData *responseData))completion{
    
@@ -194,7 +280,7 @@
      
    //3.request
    NSMutableURLRequest * request = [[AFJSONRequestSerializer serializer] requestWithMethod:@"post" URLString:URL parameters:parameters error:nil];
    request.timeoutInterval = 10.0f;
    request.timeoutInterval = TIME_OUT;
    [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
    [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
    [request setValue:GlobalKit.shareKit.hdlAccessToken forHTTPHeaderField:@"Authorization"];
@@ -223,7 +309,7 @@
/**
 *  基础服务的接口都要校验sign
 */
+(NSMutableDictionary *)GetSignRequestDictionary:(NSMutableDictionary *)params{
-(NSMutableDictionary *)GetSignRequestDictionary:(NSMutableDictionary *)params{
    if(params == NULL){
        params =[NSMutableDictionary dictionary];
    }
@@ -239,7 +325,8 @@
    NSString *newString = @"";
    for(NSString *key in sortKeyArray){
        if(params[key] != NULL){
            NSString *valueStr = params[key];
            //Key对应的value强转为NSString
            NSString *valueStr = [NSString stringWithFormat:@"%@",[params objectForKey:key]];
            //检测当前参数是否需要参与校验
            if([self IfValueNeedSign:valueStr]){
                newString = [newString stringByAppendingString:[NSString stringWithFormat:@"%@=%@&", key,valueStr]];
@@ -262,7 +349,7 @@
/// 字符串判空
/// @param valueStr 传入判断字符
+ (BOOL)stringIsNullOrEmpty:(NSString *)valueStr
- (BOOL)stringIsNullOrEmpty:(NSString *)valueStr
{
    if((valueStr == nil || [valueStr isKindOfClass:[NSNull class]] || valueStr.length == 0)){
        return YES;
@@ -275,7 +362,7 @@
/**
 MD5转换+转小写
 */
+ (NSString*)signMD5Encrypt:(NSString *)str
- (NSString*)signMD5Encrypt:(NSString *)str
{
    const char *cStr = [str UTF8String];
    unsigned char digest[CC_MD5_DIGEST_LENGTH];
@@ -295,11 +382,14 @@
/// </summary>
/// <param name="valueStr"></param>
/// <returns></returns>
+(bool)IfValueNeedSign:(NSString *)valueStr{
-(bool)IfValueNeedSign:(NSString *)valueStr{
    if (( [self stringIsNullOrEmpty:valueStr])//判空字符
        || ([[valueStr substringToIndex:1] isEqual:@"{"])//判断是否为对象
        || ([[valueStr substringToIndex:1] isEqual:@"["])//判断是否为数组
        || ([[valueStr substringToIndex:1] isEqual:@"("])//判断是否为数组
        ) {
//        HDLSDKLog(@"不校验: %@",valueStr);
        return false;
    }
    return true;
@@ -307,3 +397,9 @@
@end
#pragma mark - 修改记录
//2021-07-07
//V1.1.3
//1.替换为新接口,根据homeId注册萤石子账号方案。