Skip to content

Commit 07e93cb

Browse files
author
garenwang
committed
fix
1 parent 5ed3150 commit 07e93cb

File tree

78 files changed

+1347
-237
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

78 files changed

+1347
-237
lines changed

CHANGELOG.md

+8-10
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,17 @@
1+
# 6.4.7
2+
1、支持配置HTTP和quic自动切换。
3+
2、新增SDK日志导出。
4+
3、支持下载文件 分块计算crc64。
5+
16
# 6.4.6
7+
28
1、支持自定义网络
39
2、修复 QCloudTrack Crash
4-
10+
511
# 6.4.5
612
1、修复安全漏洞
713

8-
# 6.4.4
9-
1、增加上传接口取消时类型保护
10-
11-
# 6.4.3
12-
1、修复xcode16.1编译问题
13-
14-
# 6.4.2
15-
1、修复一些bug
16-
14+
1715
# 6.4.1
1816
1、支持cos请求使用单临时秘钥。2、新增元数据接口。3、修复一直问题。
1917

QCloudCOSXML.podspec

+5-5
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ Pod::Spec.new do |s|
22
s.name = "QCloudCOSXML"
33

44

5-
s.version = "6.4.6"
5+
s.version = "6.4.7"
66

77

88
s.summary = "QCloudCOSXML 腾讯云iOS-SDK组件"
@@ -21,19 +21,19 @@ s.version = "6.4.6"
2121
s.subspec 'Default' do |default|
2222
default.ios.deployment_target = '10.0'
2323
default.source_files = 'QCloudCOSXML/Classes/**/*','QCloudCOSXML/Classes/QCloudCOSXML/*'
24-
default.dependency "QCloudCore",'6.4.6'
24+
default.dependency "QCloudCore",'6.4.7'
2525
end
2626
s.subspec 'Slim' do |slim|
2727
slim.ios.deployment_target = '10.0'
2828
slim.osx.deployment_target = "10.12"
2929
slim.source_files = 'QCloudCOSXML/Classes/**/*','QCloudCOSXML/Classes/QCloudCOSXML/*'
30-
slim.dependency "QCloudCore/WithoutMTA",'6.4.6'
30+
slim.dependency "QCloudCore/WithoutMTA",'6.4.7'
3131
end
3232
s.subspec 'Transfer' do |transfer|
3333
transfer.ios.deployment_target = '10.0'
3434
transfer.osx.deployment_target = "10.12"
3535
transfer.source_files = 'QCloudCOSXML/Classes/*','QCloudCOSXML/Classes/Transfer/**/*','QCloudCOSXML/Classes/Base/**/*'
36-
transfer.dependency "QCloudCore/WithoutMTA",'6.4.6'
36+
transfer.dependency "QCloudCore/WithoutMTA",'6.4.7'
3737

3838
end
3939

@@ -42,7 +42,7 @@ s.version = "6.4.6"
4242
widget.osx.deployment_target = "10.12"
4343
widget.source_files = 'QCloudCOSXML/Classes/*','QCloudCOSXML/Classes/Transfer/**/*','QCloudCOSXML/Classes/Base/**/*'
4444
widget.exclude_files = 'QCloudCOSXML/Classes/Base/QCloudLogManager.h','QCloudCOSXML/Classes/Base/QCloudLogManager.m'
45-
widget.dependency "QCloudCore/WithoutMTA",'6.4.6'
45+
widget.dependency "QCloudCore/WithoutMTA",'6.4.7'
4646
end
4747

4848
end

QCloudCOSXML/Classes/Base/QCloudAbstractRequest+Quality.m

+4
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@
1010
#import <QCloudCore/QualityDataUploader.h>
1111
#import "QCloudCOSXMLVersion.h"
1212
#import "QCloudCOSXMLService+Quality.h"
13+
14+
@interface QCloudAbstractRequest ()
15+
@end
16+
1317
@implementation QCloudAbstractRequest (Quality)
1418
+ (void)load {
1519
static dispatch_once_t onceToken;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
//
2+
// QCloudBizHTTPRequest+COSXML.h
3+
// QCloudCOSXML
4+
//
5+
// Created by garenwang on 2025/3/28.
6+
//
7+
8+
#import <QCloudCore/QCloudCore.h>
9+
10+
NS_ASSUME_NONNULL_BEGIN
11+
12+
@interface QCloudBizHTTPRequest (COSXML)
13+
14+
@end
15+
16+
NS_ASSUME_NONNULL_END
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
//
2+
// QCloudBizHTTPRequest+COSXML.m
3+
// QCloudCOSXML
4+
//
5+
// Created by garenwang on 2025/3/28.
6+
//
7+
8+
#import "QCloudBizHTTPRequest+COSXML.h"
9+
#import <QCloudCore/QCloudHTTPRetryHanlder.h>
10+
#import "QCloudCOSXMLEndPoint.h"
11+
@implementation QCloudBizHTTPRequest (COSXML)
12+
13+
+ (void)load{
14+
static dispatch_once_t onceToken;
15+
dispatch_once(&onceToken, ^{
16+
Class class = [self class];
17+
18+
SEL originalSelector = @selector(buildRequestData:);
19+
SEL swizzledSelector = @selector(cos_buildRequestData:);
20+
21+
Method originalMethod = class_getInstanceMethod(class, originalSelector);
22+
Method swizzledMethod = class_getInstanceMethod(class, swizzledSelector);
23+
24+
BOOL didAddMethod
25+
= class_addMethod(class, originalSelector, method_getImplementation(swizzledMethod), method_getTypeEncoding(swizzledMethod));
26+
if (didAddMethod) {
27+
class_replaceMethod(class, swizzledSelector, method_getImplementation(originalMethod), method_getTypeEncoding(originalMethod));
28+
} else {
29+
method_exchangeImplementations(originalMethod, swizzledMethod);
30+
}
31+
});
32+
}
33+
34+
- (BOOL)cos_buildRequestData:(NSError *__autoreleasing *)error{
35+
BOOL ret = [self cos_buildRequestData:error];
36+
37+
if (!ret) {
38+
return ret;
39+
}
40+
if (self.runOnService.configuration.networkStrategy != QCloudRequestNetworkStrategyDefault){
41+
NSString * bucket = nil;
42+
if ([self respondsToSelector:@selector(bucket)]) {
43+
bucket = [self performSelector:@selector(bucket)];
44+
}else if ([self respondsToSelector:@selector(bucketName)]) {
45+
bucket = [self performSelector:@selector(bucketName)];
46+
}else if ([self respondsToSelector:@selector(BucketName)]) {
47+
bucket = [self performSelector:@selector(BucketName)];
48+
}
49+
50+
NSString * appId = self.runOnService.configuration.appID;
51+
52+
NSString * regionName = self.regionName;
53+
if (!regionName) {
54+
regionName = self.runOnService.configuration.endpoint.regionName;
55+
}
56+
BOOL useHTTPS = self.runOnService.configuration.endpoint.useHTTPS;
57+
if (self.endpoint) {
58+
useHTTPS = self.endpoint.useHTTPS;
59+
}
60+
61+
if (self.requestRetry) {
62+
if (self.runOnService.configuration.networkStrategy == QCloudRequestNetworkStrategyConservative){
63+
if (self.networkType != QCloudRequestNetworkNone) {
64+
self.enableQuic = self.networkType == QCloudRequestNetworkQuic;
65+
}else {
66+
self.enableQuic = self.runOnService.configuration.enableQuic;
67+
}
68+
if (self.endpoint) {
69+
self.requestData.endpoint = self.endpoint;
70+
}else{
71+
self.requestData.endpoint = self.runOnService.configuration.endpoint;
72+
}
73+
74+
}else if (self.runOnService.configuration.networkStrategy == QCloudRequestNetworkStrategyAggressive){
75+
self.enableQuic = NO;
76+
QCloudCOSXMLEndPoint * endpoint = [[QCloudCOSXMLEndPoint alloc]init];
77+
endpoint.useHTTPS = useHTTPS;
78+
endpoint.regionName = regionName;
79+
self.requestData.endpoint = endpoint;
80+
}
81+
}else{
82+
if (self.runOnService.configuration.networkStrategy == QCloudRequestNetworkStrategyConservative){
83+
self.enableQuic = NO;
84+
QCloudCOSXMLEndPoint * endpoint = [[QCloudCOSXMLEndPoint alloc]init];
85+
endpoint.useHTTPS = useHTTPS;
86+
endpoint.regionName = regionName;
87+
self.requestData.endpoint = endpoint;
88+
}else if (self.runOnService.configuration.networkStrategy == QCloudRequestNetworkStrategyAggressive){
89+
90+
if (self.networkType != QCloudRequestNetworkNone) {
91+
self.enableQuic = self.networkType == QCloudRequestNetworkQuic;
92+
}else {
93+
self.enableQuic = self.runOnService.configuration.enableQuic;
94+
}
95+
96+
if (self.endpoint) {
97+
self.requestData.endpoint = self.endpoint;
98+
}else{
99+
self.requestData.endpoint = self.runOnService.configuration.endpoint;
100+
}
101+
}
102+
}
103+
104+
self.requestData.bucket = bucket;
105+
self.requestData.appId = appId;
106+
self.requestData.region = regionName;
107+
}
108+
QCloudLogDebugP(@"HTTP",@"buildRequestData——当前策略:%@,是否已重试:%@", QCloudNetworkSituationToString(self.runOnService.configuration.networkStrategy),self.requestRetry?@"":@"");
109+
return YES;
110+
}
111+
112+
- (void)notifyError:(NSError *)error {
113+
QCloudRequestFinishBlock finishBlock = self.finishBlock;
114+
BOOL is4XX = error.code >= 400 && error.code <500;
115+
QCloudLogDebugP(@"HTTP",@"notifyError——当前策略:%@,是否已重试:%@", QCloudNetworkSituationToString(self.runOnService.configuration.networkStrategy),self.requestRetry?@"":@"");
116+
117+
if (is4XX || self.runOnService.configuration.networkStrategy == QCloudRequestNetworkStrategyDefault ||
118+
self.requestRetry ) {
119+
[super notifyError:error];
120+
}else{
121+
[self.retryPolicy reset];
122+
[self.requestData clean];
123+
[self setValue:@(NO) forKey:@"isRetry"];
124+
self.retryCount = 0;
125+
self.requestRetry = YES;
126+
self.finishBlock = finishBlock;
127+
[self.runOnService requestFinishWithRequestId:self.requestID];
128+
self.priority = QCloudAbstractRequestPriorityHigh;
129+
[self.runOnService performRequest:self];
130+
}
131+
}
132+
@end

QCloudCOSXML/Classes/Base/QCloudCOSXMLEndPoint.m

+4-4
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ - (NSURL *)serverURLWithBucket:(NSString *)bucket appID:(NSString *)appID region
6565
BOOL isLegal = [bucket matchesRegularExpression:regularExpression];
6666
NSAssert(isLegal, @"bucket name contains illegal character! It can only contains a-z, A-Z, 0-9, '.' and '-' ");
6767
if (!isLegal) {
68-
QCloudLogDebug(@"bucket %@ contains illeagal character, building service url pregress returns immediately", bucket);
68+
QCloudLogDebugE(@"Service",@"bucket %@ contains illeagal character, building service url pregress returns immediately", bucket);
6969
return nil;
7070
}
7171
NSString *formattedBucketName = [self formattedBucket:bucket withAPPID:appID];
@@ -85,7 +85,7 @@ - (NSURL *)serverURLWithBucket:(NSString *)bucket appID:(NSString *)appID region
8585
BOOL isLegal = [regionNametmp matchesRegularExpression:regularExpression];
8686
NSAssert(isLegal, @"Region name contains illegal character! It can only contains a-z, A-Z, 0-9, '.' and '-' ");
8787
if (!isLegal) {
88-
QCloudLogDebug(@"Region %@ contains illeagal character, setter returns immediately", regionName);
88+
QCloudLogDebugE(@"Service",@"Region %@ contains illeagal character, setter returns immediately", regionName);
8989
return nil;
9090
}
9191
}
@@ -103,7 +103,7 @@ - (NSURL *)serverURLWithBucket:(NSString *)bucket appID:(NSString *)appID region
103103
serverURL = [NSURL URLWithString:[NSString stringWithFormat:@"%@://%@/%@", scheme, self.suffix, formattedBucketName]];
104104
}
105105
}
106-
QCloudLogDebug(@"serverURL: %@", serverURL);
106+
QCloudLogDebugP(@"Service",@"serverURL: %@", serverURL);
107107
return serverURL;
108108
}
109109

@@ -118,7 +118,7 @@ - (void)setRegionName:(QCloudRegion)regionName {
118118
BOOL isLegal = [regionName matchesRegularExpression:regularExpression];
119119
NSAssert(isLegal, @"Region name contains illegal character! It can only contains a-z, A-Z, 0-9, '.' and '-' ");
120120
if (!isLegal) {
121-
QCloudLogDebug(@"Region %@ contains illeagal character, setter returns immediately", regionName);
121+
QCloudLogDebugE(@"Service",@"Region %@ contains illeagal character, setter returns immediately", regionName);
122122
return;
123123
}
124124
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
//
2+
// QCloudRequestData+COSXML.h
3+
// QCloudCOSXML
4+
//
5+
// Created by garenwang on 2025/3/31.
6+
//
7+
8+
#import <QCloudCore/QCloudCore.h>
9+
10+
NS_ASSUME_NONNULL_BEGIN
11+
12+
@interface QCloudRequestData (COSXML)
13+
14+
@end
15+
16+
NS_ASSUME_NONNULL_END
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
//
2+
// QCloudRequestData+COSXML.m
3+
// QCloudCOSXML
4+
//
5+
// Created by garenwang on 2025/3/31.
6+
//
7+
8+
#import "QCloudRequestData+COSXML.h"
9+
10+
@implementation QCloudRequestData (COSXML)
11+
12+
+ (void)load{
13+
static dispatch_once_t onceToken;
14+
dispatch_once(&onceToken, ^{
15+
Class class = [self class];
16+
17+
SEL originalSelector = @selector(setValue:forHTTPHeaderField:);
18+
SEL swizzledSelector = @selector(cos_setValue:forHTTPHeaderField:);
19+
20+
Method originalMethod = class_getInstanceMethod(class, originalSelector);
21+
Method swizzledMethod = class_getInstanceMethod(class, swizzledSelector);
22+
23+
BOOL didAddMethod
24+
= class_addMethod(class, originalSelector, method_getImplementation(swizzledMethod), method_getTypeEncoding(swizzledMethod));
25+
if (didAddMethod) {
26+
class_replaceMethod(class, swizzledSelector, method_getImplementation(originalMethod), method_getTypeEncoding(originalMethod));
27+
} else {
28+
method_exchangeImplementations(originalMethod, swizzledMethod);
29+
}
30+
});
31+
}
32+
33+
- (void)cos_setValue:(nonnull id)value forHTTPHeaderField:(nonnull NSString *)field {
34+
if ([field.lowercaseString isEqualToString:@"host"] && self.serverURL) {
35+
NSURL * url = [NSURL URLWithString:self.serverURL];
36+
if ([url.host isEqual:value] || !url.host) {
37+
[self cos_setValue:value forHTTPHeaderField:field];
38+
}else{
39+
[self cos_setValue:url.host forHTTPHeaderField:field];
40+
}
41+
}else{
42+
[self cos_setValue:value forHTTPHeaderField:field];
43+
}
44+
}
45+
46+
@end

QCloudCOSXML/Classes/CI/model/QCloudPicOperations.m

+6-6
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ - (NSString *)getPicOperationsJson {
1818
}
1919

2020
NSDictionary *dicOperations = @{ @"is_pic_info" : _is_pic_info ? @(1) : @(0), @"rules" : [self getRules] };
21-
QCloudLogInfo(@"%@", [dicOperations qcloud_modelToJSONString]);
21+
QCloudLogInfoP(@"",@"%@", [dicOperations qcloud_modelToJSONString]);
2222
return [dicOperations qcloud_modelToJSONString];
2323
}
2424

@@ -30,7 +30,7 @@ - (NSArray *)getRules {
3030
}
3131

3232
if (item.fileid == nil) {
33-
QCloudLogError(@"[%@]QCloudPicOperationRule的fileid不能为空", self.class);
33+
QCloudLogDebugE(@"Utils",@"[%@]QCloudPicOperationRule的fileid不能为空", self.class);
3434
return nil;
3535
}
3636

@@ -53,7 +53,7 @@ - (NSString *)rule {
5353
}
5454

5555
if (_type == 0 || _type > 3) {
56-
QCloudLogError(@"水印类型错误");
56+
QCloudLogDebugE(@"Utils",@"水印类型错误");
5757
return nil;
5858
}
5959

@@ -63,7 +63,7 @@ - (NSString *)rule {
6363

6464
if (_type == QCloudPicOperationRuleFull || _type == QCloudPicOperationRuleHalf) {
6565
if (_imageURL == nil) {
66-
QCloudLogError(@"[%@]生成水印错误————半盲和全盲水印必须指定图片链接", self.class);
66+
QCloudLogDebugE(@"Utils",@"[%@]生成水印错误————半盲和全盲水印必须指定图片链接", self.class);
6767
return nil;
6868
}
6969
NSData *data = [_imageURL dataUsingEncoding:NSUTF8StringEncoding];
@@ -80,12 +80,12 @@ - (NSString *)rule {
8080
}
8181
} else {
8282
if (_text == nil) {
83-
QCloudLogError(@"[%@]文本型水印请传入水印文字", self.class);
83+
QCloudLogDebugE(@"Utils",@"[%@]文本型水印请传入水印文字", self.class);
8484
return nil;
8585
}
8686

8787
if (![_text matchesRegularExpression:@"[a-zA-Z0-9]+"]) {
88-
QCloudLogError(@"[%@]文本型水印的文本仅支持[a-zA-Z0-9]", self.class);
88+
QCloudLogDebugE(@"Utils",@"[%@]文本型水印的文本仅支持[a-zA-Z0-9]", self.class);
8989
return nil;
9090
}
9191

QCloudCOSXML/Classes/CI/request/QCloudPostVideoRecognitionRequest.h

+1
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ typedef NS_ENUM(NSUInteger, QCloudVideoRecognitionMode) {
8888
QCloudVideoRecognitionModeAverage,
8989
QCloudVideoRecognitionModeFps,
9090
};
91+
NSString *QCloudVideoRecognitionModeTransferToString(QCloudVideoRecognitionMode type);
9192

9293
@interface QCloudPostVideoRecognitionRequest : QCloudBizHTTPRequest
9394
/**

0 commit comments

Comments
 (0)