From 649473d7b17e50aa71c792221a1c7f0e7cab7a5c Mon Sep 17 00:00:00 2001 From: YangSen-qn Date: Mon, 7 Aug 2023 10:25:32 +0800 Subject: [PATCH 01/19] version to 8.6.0 --- Qiniu.podspec | 4 ++-- QiniuSDK/Utils/QNVersion.h | 2 +- README.md | 3 ++- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Qiniu.podspec b/Qiniu.podspec index 88573f76..eead09f5 100755 --- a/Qiniu.podspec +++ b/Qiniu.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'Qiniu' - s.version = '8.5.3' + s.version = '8.6.0' s.summary = 'Qiniu Resource Storage SDK for iOS and Mac' s.homepage = 'https://github.com/qiniu/objc-sdk' s.social_media_url = 'http://weibo.com/qiniutek' @@ -13,7 +13,7 @@ Pod::Spec.new do |s| s.source_files = 'QiniuSDK/BigData/**/*.{h,m}','QiniuSDK/Collect/**/*.{h,m}','QiniuSDK/Common/**/*.{h,m}','QiniuSDK/Http/**/*.{h,m}','QiniuSDK/Recorder/**/*.{h,m}','QiniuSDK/Storage/**/*.{h,m}','QiniuSDK/Transaction/**/*.{h,m}','QiniuSDK/Utils/**/*.{h,m}','QiniuSDK/QiniuSDK.h' s.requires_arc = true s.libraries = 'z' - s.dependency 'HappyDNS', '~> 1.0.2' + s.dependency 'HappyDNS', '~> 1.0.3' s.license = { :type => "MIT", :text => <<-LICENSE The MIT License (MIT) diff --git a/QiniuSDK/Utils/QNVersion.h b/QiniuSDK/Utils/QNVersion.h index 006d5d08..1da360d2 100755 --- a/QiniuSDK/Utils/QNVersion.h +++ b/QiniuSDK/Utils/QNVersion.h @@ -11,4 +11,4 @@ /** * sdk 版本 */ -static NSString *const kQiniuVersion = @"8.5.3"; +static NSString *const kQiniuVersion = @"8.6.0"; diff --git a/README.md b/README.md index 8a194d7c..91a45677 100755 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ 通过 CocoaPods ```ruby -pod "Qiniu", "~> 8.5.3" +pod "Qiniu", "~> 8.6.0" ``` 通过 Swift Package Manager (Xcode 11+) @@ -37,6 +37,7 @@ let package = Package( | Qiniu SDK 版本 | 最低 iOS版本 | 最低 OS X 版本 | Notes | | :--------------------------------------: | :------: | :--------: | :-----------: | +| 8.6.x | iOS 7 | OS X 10.15 | Xcode 最低版本 11 | | 8.5.x | iOS 7 | OS X 10.15 | Xcode 最低版本 11 | | 8.4.x | iOS 7 | OS X 10.15 | Xcode 最低版本 11 | | 8.3.x | iOS 7 | OS X 10.15 | Xcode 最低版本 11 | From f26067a2a79cc061ac89b91770e9952efce85f18 Mon Sep 17 00:00:00 2001 From: YangSen-qn Date: Mon, 7 Aug 2023 11:02:09 +0800 Subject: [PATCH 02/19] update v8.6.0 CHANGELOG.md --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 93c314ca..72a6e90d 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,8 @@ #Changelog +## 8.6.0(2023-08-07) +- 调整在根据 Bucket 获取其所在区域信息时的主备域名顺序 +- 移除亚太-首尔区域 + ## 8.5.3 (2023-06-29) - 对 Dns 预解析和网络检测中的默认域名进行 Base64 处理 - HappyDns 依赖升至 [v1.0.3](https://github.com/qiniu/happy-dns-objc/releases/tag/v1.0.3) From 182ec1b096ee74f71544f5ecd43006f84213730f Mon Sep 17 00:00:00 2001 From: YangSen-qn Date: Mon, 7 Aug 2023 11:14:43 +0800 Subject: [PATCH 03/19] update test token --- QiniuSDKTests/QNTestConfig.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/QiniuSDKTests/QNTestConfig.h b/QiniuSDKTests/QNTestConfig.h index 7a428ba7..d58c2856 100755 --- a/QiniuSDKTests/QNTestConfig.h +++ b/QiniuSDKTests/QNTestConfig.h @@ -7,15 +7,15 @@ // #import // 华东上传凭证 -static NSString *const token_z0 = @"dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:0o1zfG6Ir7vDQLlwisZAOXO7598=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZTAtc3BhY2UiLCJkZWFkbGluZSI6MTY5MDE4Njg5NCwgInJldHVybkJvZHkiOiJ7XCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpLCBcImZzaXplXCI6JChmc2l6ZSl9In0="; +static NSString *const token_z0 = @"dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:Ch1kWAXi3W8Gd63Yah0_27w-WYk=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZTAtc3BhY2UiLCJkZWFkbGluZSI6MTY5NjU2MTkzNywgInJldHVybkJvZHkiOiJ7XCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpLCBcImZzaXplXCI6JChmc2l6ZSl9In0="; // 华北上传凭证 -static NSString *const token_z1 = @"dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:WYjSOl7Z893WQnEIOhS7UaqHNLc=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZTEtc3BhY2UiLCJkZWFkbGluZSI6MTY5MDE4Njg5NCwgInJldHVybkJvZHkiOiJ7XCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpLCBcImZzaXplXCI6JChmc2l6ZSl9In0="; +static NSString *const token_z1 = @"dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:z2KS7nMViirdhezPUCsdFT6oscc=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZTEtc3BhY2UiLCJkZWFkbGluZSI6MTY5NjU2MTkzNywgInJldHVybkJvZHkiOiJ7XCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpLCBcImZzaXplXCI6JChmc2l6ZSl9In0="; // 华南上传凭证 -static NSString *const token_z2 = @"dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:Gj8l7JAyVLHxhVFJHpSbdkM_LpI=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZTItc3BhY2UiLCJkZWFkbGluZSI6MTY5MDE4Njg5NCwgInJldHVybkJvZHkiOiJ7XCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpLCBcImZzaXplXCI6JChmc2l6ZSl9In0="; +static NSString *const token_z2 = @"dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:kLdrupNlu17DBFAYTNPeNDMyNWU=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZTItc3BhY2UiLCJkZWFkbGluZSI6MTY5NjU2MTkzNywgInJldHVybkJvZHkiOiJ7XCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpLCBcImZzaXplXCI6JChmc2l6ZSl9In0="; // 北美上传凭证 -static NSString *const token_na0 = @"dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:g6kUQQFMOEwwdA5pjF50QYuQsTk=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZS1uYTAtc3BhY2UiLCJkZWFkbGluZSI6MTY5MDE4Njg5NCwgInJldHVybkJvZHkiOiJ7XCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpLCBcImZzaXplXCI6JChmc2l6ZSl9In0="; +static NSString *const token_na0 = @"dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:I8grDrOjKlBy3_FQ7BZaffw_ZSs=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZS1uYTAtc3BhY2UiLCJkZWFkbGluZSI6MTY5NjU2MTkzNywgInJldHVybkJvZHkiOiJ7XCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpLCBcImZzaXplXCI6JChmc2l6ZSl9In0="; // 东南亚上传凭证 -static NSString *const token_as0 = @"dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:x9QGJugoXL_p3DhizraNIvOF9kI=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZS1hczAtc3BhY2UiLCJkZWFkbGluZSI6MTY5MDE4Njg5NCwgInJldHVybkJvZHkiOiJ7XCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpLCBcImZzaXplXCI6JChmc2l6ZSl9In0="; +static NSString *const token_as0 = @"dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:xYqcc2mhfR3sgfFkfQo9EJMFInQ=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZS1hczAtc3BhY2UiLCJkZWFkbGluZSI6MTY5NjU2MTkzNywgInJldHVybkJvZHkiOiJ7XCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpLCBcImZzaXplXCI6JChmc2l6ZSl9In0="; // 华北浙江2上传凭证 -static NSString *const token_cn_east_2 = @"dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:qaOvNrlWeQG92NsEoa9tZRazYqo=:eyJzY29wZSI6ImtvZG8tcGhvbmUtY24tZWFzdC0yIiwiZGVhZGxpbmUiOjE2OTAxODY4OTQsICJyZXR1cm5Cb2R5Ijoie1wiZm9vXCI6JCh4OmZvbyksIFwiYmFyXCI6JCh4OmJhciksIFwibWltZVR5cGVcIjokKG1pbWVUeXBlKSwgXCJoYXNoXCI6JChldGFnKSwgXCJrZXlcIjokKGtleSksIFwiZm5hbWVcIjokKGZuYW1lKSwgXCJmc2l6ZVwiOiQoZnNpemUpfSJ9"; -static NSString *const invalidBucketToken = @"dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:nN5mqTYtLRNZSY6-kMDNPdM0z84=:eyJzY29wZSI6InpvbmVfaW52YWxpZCIsImRlYWRsaW5lIjoxNjkwMTg2ODk0LCAicmV0dXJuQm9keSI6IntcImZvb1wiOiQoeDpmb28pLCBcImJhclwiOiQoeDpiYXIpLCBcIm1pbWVUeXBlXCI6JChtaW1lVHlwZSksIFwiaGFzaFwiOiQoZXRhZyksIFwia2V5XCI6JChrZXkpLCBcImZuYW1lXCI6JChmbmFtZSksIFwiZnNpemVcIjokKGZzaXplKX0ifQ=="; +static NSString *const token_cn_east_2 = @"dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:J2VtB1wM6qJXK17Zbsuh4Ob3kEk=:eyJzY29wZSI6ImtvZG8tcGhvbmUtY24tZWFzdC0yIiwiZGVhZGxpbmUiOjE2OTY1NjE5MzcsICJyZXR1cm5Cb2R5Ijoie1wiZm9vXCI6JCh4OmZvbyksIFwiYmFyXCI6JCh4OmJhciksIFwibWltZVR5cGVcIjokKG1pbWVUeXBlKSwgXCJoYXNoXCI6JChldGFnKSwgXCJrZXlcIjokKGtleSksIFwiZm5hbWVcIjokKGZuYW1lKSwgXCJmc2l6ZVwiOiQoZnNpemUpfSJ9"; +static NSString *const invalidBucketToken = @"dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:1xrWcvGmHMba-DrthJuQB9fXqFk=:eyJzY29wZSI6InpvbmVfaW52YWxpZCIsImRlYWRsaW5lIjoxNjk2NTYxOTM3LCAicmV0dXJuQm9keSI6IntcImZvb1wiOiQoeDpmb28pLCBcImJhclwiOiQoeDpiYXIpLCBcIm1pbWVUeXBlXCI6JChtaW1lVHlwZSksIFwiaGFzaFwiOiQoZXRhZyksIFwia2V5XCI6JChrZXkpLCBcImZuYW1lXCI6JChmbmFtZSksIFwiZnNpemVcIjokKGZzaXplKX0ifQ=="; From 46e9f94eae36146f1622efc3c4ab02ab0a696ba2 Mon Sep 17 00:00:00 2001 From: YangSen-qn Date: Mon, 7 Aug 2023 16:38:54 +0800 Subject: [PATCH 04/19] change test case --- QiniuSDKTests/QNComplexUploadSceneTest.m | 6 +++--- QiniuSDKTests/QNConcurrentResumeUploadTest.m | 18 +++++++++--------- QiniuSDKTests/QNFormUploadTest.m | 6 +++--- QiniuSDKTests/QNResumeUploadTest.m | 18 +++++++++--------- 4 files changed, 24 insertions(+), 24 deletions(-) diff --git a/QiniuSDKTests/QNComplexUploadSceneTest.m b/QiniuSDKTests/QNComplexUploadSceneTest.m index e2be2b2b..a5e0af4b 100644 --- a/QiniuSDKTests/QNComplexUploadSceneTest.m +++ b/QiniuSDKTests/QNComplexUploadSceneTest.m @@ -17,11 +17,11 @@ @interface QNComplexUploadSceneTest : QNUploadBaseTest @implementation QNComplexUploadSceneTest - (void)testMutiUploadV1{ - int maxCount = 40; + int maxCount = 10; __block int completeCount = 0; __block int successCount = 0; - int start = 35; + int start = 5; for (int i=start; i Date: Mon, 14 Aug 2023 15:47:41 +0800 Subject: [PATCH 05/19] IPHONEOS_DEPLOYMENT_TARGET to 9.0 & fix some warning --- Package.swift | 4 +-- Qiniu.podspec | 4 +-- QiniuSDK.xcodeproj/project.pbxproj | 10 +++--- QiniuSDK/Storage/QNUploadManager.h | 2 +- QiniuSDK/Utils/QNALAssetFile.h | 4 +-- QiniuSDK/Utils/QNALAssetFile.m | 6 ++-- QiniuSDK/Utils/QNMutableArray.m | 34 +++++++++--------- QiniuSDK/Utils/QNSystem.m | 58 +----------------------------- 8 files changed, 34 insertions(+), 88 deletions(-) diff --git a/Package.swift b/Package.swift index fc087925..1885c4dd 100644 --- a/Package.swift +++ b/Package.swift @@ -6,8 +6,8 @@ import PackageDescription let package = Package( name: "Qiniu", platforms: [ - .macOS(.v10_10), - .iOS(.v8) + .macOS(.v10_15), + .iOS(.v9) ], products: [ // Products define the executables and libraries a package produces, and make them visible to other packages. diff --git a/Qiniu.podspec b/Qiniu.podspec index eead09f5..6463c42d 100755 --- a/Qiniu.podspec +++ b/Qiniu.podspec @@ -7,8 +7,8 @@ Pod::Spec.new do |s| s.author = "Qiniu => sdk@qiniu.com" s.source = {:git => 'https://github.com/qiniu/objc-sdk.git', :tag => "v#{s.version}"} - s.ios.deployment_target = '7.0' - s.osx.deployment_target = '10.9' + s.ios.deployment_target = '9.0' + s.osx.deployment_target = '10.15' s.source_files = 'QiniuSDK/BigData/**/*.{h,m}','QiniuSDK/Collect/**/*.{h,m}','QiniuSDK/Common/**/*.{h,m}','QiniuSDK/Http/**/*.{h,m}','QiniuSDK/Recorder/**/*.{h,m}','QiniuSDK/Storage/**/*.{h,m}','QiniuSDK/Transaction/**/*.{h,m}','QiniuSDK/Utils/**/*.{h,m}','QiniuSDK/QiniuSDK.h' s.requires_arc = true diff --git a/QiniuSDK.xcodeproj/project.pbxproj b/QiniuSDK.xcodeproj/project.pbxproj index 2100f832..f9d1cdca 100644 --- a/QiniuSDK.xcodeproj/project.pbxproj +++ b/QiniuSDK.xcodeproj/project.pbxproj @@ -1846,8 +1846,8 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MACOSX_DEPLOYMENT_TARGET = 10.14; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; OTHER_LDFLAGS = "$(inherited)"; @@ -1895,8 +1895,8 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MACOSX_DEPLOYMENT_TARGET = 10.14; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "$(inherited)"; SDKROOT = macosx; @@ -2009,6 +2009,7 @@ GCC_OPTIMIZATION_LEVEL = 0; GENERATE_INFOPLIST_FILE = YES; GENERATE_PKGINFO_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; PRODUCT_NAME = QiniuSDK_iOSTests; PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = iphoneos; @@ -2027,6 +2028,7 @@ DEVELOPMENT_TEAM = ""; GENERATE_INFOPLIST_FILE = YES; GENERATE_PKGINFO_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; PRODUCT_NAME = QiniuSDK_iOSTests; PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = iphoneos; diff --git a/QiniuSDK/Storage/QNUploadManager.h b/QiniuSDK/Storage/QNUploadManager.h index 3a1f63c2..80f78c59 100755 --- a/QiniuSDK/Storage/QNUploadManager.h +++ b/QiniuSDK/Storage/QNUploadManager.h @@ -145,7 +145,7 @@ typedef void (^QNUpCompletionHandler)(QNResponseInfo *info, NSString *key, NSDic key:(NSString *)key token:(NSString *)token complete:(QNUpCompletionHandler)completionHandler - option:(QNUploadOption *)option API_UNAVAILABLE(macos, tvos); + option:(QNUploadOption *)option API_DEPRECATED("use putPHAsset instead", ios(4.0, 9.0)) API_UNAVAILABLE(macos, tvos); #endif /** diff --git a/QiniuSDK/Utils/QNALAssetFile.h b/QiniuSDK/Utils/QNALAssetFile.h index 594240fe..a5977930 100755 --- a/QiniuSDK/Utils/QNALAssetFile.h +++ b/QiniuSDK/Utils/QNALAssetFile.h @@ -13,7 +13,7 @@ #if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) #if !TARGET_OS_MACCATALYST @class ALAsset; -@interface QNALAssetFile : NSObject +@interface QNALAssetFile : NSObject ; /** * 打开指定文件 @@ -24,7 +24,7 @@ * @return 实例 */ - (instancetype)init:(ALAsset *)asset - error:(NSError *__autoreleasing *)error; + error:(NSError *__autoreleasing *)error NS_DEPRECATED_IOS(4_0, 9_0); @end #endif #endif diff --git a/QiniuSDK/Utils/QNALAssetFile.m b/QiniuSDK/Utils/QNALAssetFile.m index 29b84eb2..abadd8f7 100755 --- a/QiniuSDK/Utils/QNALAssetFile.m +++ b/QiniuSDK/Utils/QNALAssetFile.m @@ -15,7 +15,7 @@ @interface QNALAssetFile () -@property (nonatomic) ALAsset *asset; +@property (nonatomic) ALAsset *asset NS_DEPRECATED_IOS(4_0, 9_0); @property (readonly) int64_t fileSize; @@ -45,7 +45,7 @@ - (instancetype)init:(ALAsset *)asset - (NSData *)read:(long long)offset size:(long)size - error:(NSError **)error { + error:(NSError **)error NS_DEPRECATED_IOS(4_0, 9_0) { NSData *data = nil; @try { @@ -70,7 +70,7 @@ - (NSData *)readAllWithError:(NSError **)error { - (void)close { } -- (NSString *)path { +- (NSString *)path NS_DEPRECATED_IOS(4_0, 9_0) { ALAssetRepresentation *rep = [self.asset defaultRepresentation]; return [rep url].path; } diff --git a/QiniuSDK/Utils/QNMutableArray.m b/QiniuSDK/Utils/QNMutableArray.m index 5ec88b86..20dd9c4b 100644 --- a/QiniuSDK/Utils/QNMutableArray.m +++ b/QiniuSDK/Utils/QNMutableArray.m @@ -134,11 +134,11 @@ - (NSData *)sortedArrayHint { LOCK(NSData * d = [_arr sortedArrayHint]); return d; } -- (NSArray *)sortedArrayUsingFunction:(NSInteger (*)(id, id, void *))comparator context:(void *)context { +- (NSArray *)sortedArrayUsingFunction:(NSInteger (NS_NOESCAPE *)(id, id, void *))comparator context:(void *)context { LOCK(NSArray * arr = [_arr sortedArrayUsingFunction:comparator context:context]) return arr; } -- (NSArray *)sortedArrayUsingFunction:(NSInteger (*)(id, id, void *))comparator context:(void *)context hint:(NSData *)hint { +- (NSArray *)sortedArrayUsingFunction:(NSInteger (NS_NOESCAPE *)(id, id, void *))comparator context:(void *)context hint:(NSData *)hint { LOCK(NSArray * arr = [_arr sortedArrayUsingFunction:comparator context:context hint:hint]); return arr; } @@ -166,51 +166,51 @@ - (id)objectAtIndexedSubscript:(NSUInteger)idx { LOCK(id o = [_arr objectAtIndexedSubscript:idx]); return o; } -- (void)enumerateObjectsUsingBlock:(void (^)(id obj, NSUInteger idx, BOOL *stop))block { +- (void)enumerateObjectsUsingBlock:(void (NS_NOESCAPE ^)(id obj, NSUInteger idx, BOOL *stop))block { LOCK([_arr enumerateObjectsUsingBlock:block]); } -- (void)enumerateObjectsWithOptions:(NSEnumerationOptions)opts usingBlock:(void (^)(id obj, NSUInteger idx, BOOL *stop))block { +- (void)enumerateObjectsWithOptions:(NSEnumerationOptions)opts usingBlock:(void (NS_NOESCAPE ^)(id obj, NSUInteger idx, BOOL *stop))block { LOCK([_arr enumerateObjectsWithOptions:opts usingBlock:block]); } -- (void)enumerateObjectsAtIndexes:(NSIndexSet *)s options:(NSEnumerationOptions)opts usingBlock:(void (^)(id obj, NSUInteger idx, BOOL *stop))block { +- (void)enumerateObjectsAtIndexes:(NSIndexSet *)s options:(NSEnumerationOptions)opts usingBlock:(void (NS_NOESCAPE ^)(id obj, NSUInteger idx, BOOL *stop))block { LOCK([_arr enumerateObjectsAtIndexes:s options:opts usingBlock:block]); } -- (NSUInteger)indexOfObjectPassingTest:(BOOL (^)(id obj, NSUInteger idx, BOOL *stop))predicate { +- (NSUInteger)indexOfObjectPassingTest:(BOOL (NS_NOESCAPE ^)(id obj, NSUInteger idx, BOOL *stop))predicate { LOCK(NSUInteger i = [_arr indexOfObjectPassingTest:predicate]); return i; } -- (NSUInteger)indexOfObjectWithOptions:(NSEnumerationOptions)opts passingTest:(BOOL (^)(id obj, NSUInteger idx, BOOL *stop))predicate { +- (NSUInteger)indexOfObjectWithOptions:(NSEnumerationOptions)opts passingTest:(BOOL (NS_NOESCAPE ^)(id obj, NSUInteger idx, BOOL *stop))predicate { LOCK(NSUInteger i = [_arr indexOfObjectWithOptions:opts passingTest:predicate]); return i; } -- (NSUInteger)indexOfObjectAtIndexes:(NSIndexSet *)s options:(NSEnumerationOptions)opts passingTest:(BOOL (^)(id obj, NSUInteger idx, BOOL *stop))predicate { +- (NSUInteger)indexOfObjectAtIndexes:(NSIndexSet *)s options:(NSEnumerationOptions)opts passingTest:(BOOL (NS_NOESCAPE ^)(id obj, NSUInteger idx, BOOL *stop))predicate { LOCK(NSUInteger i = [_arr indexOfObjectAtIndexes:s options:opts passingTest:predicate]); return i; } -- (NSIndexSet *)indexesOfObjectsPassingTest:(BOOL (^)(id obj, NSUInteger idx, BOOL *stop))predicate { +- (NSIndexSet *)indexesOfObjectsPassingTest:(BOOL (NS_NOESCAPE ^)(id obj, NSUInteger idx, BOOL *stop))predicate { LOCK(NSIndexSet * i = [_arr indexesOfObjectsPassingTest:predicate]); return i; } -- (NSIndexSet *)indexesOfObjectsWithOptions:(NSEnumerationOptions)opts passingTest:(BOOL (^)(id obj, NSUInteger idx, BOOL *stop))predicate { +- (NSIndexSet *)indexesOfObjectsWithOptions:(NSEnumerationOptions)opts passingTest:(BOOL (NS_NOESCAPE ^)(id obj, NSUInteger idx, BOOL *stop))predicate { LOCK(NSIndexSet * i = [_arr indexesOfObjectsWithOptions:opts passingTest:predicate]); return i; } -- (NSIndexSet *)indexesOfObjectsAtIndexes:(NSIndexSet *)s options:(NSEnumerationOptions)opts passingTest:(BOOL (^)(id obj, NSUInteger idx, BOOL *stop))predicate { +- (NSIndexSet *)indexesOfObjectsAtIndexes:(NSIndexSet *)s options:(NSEnumerationOptions)opts passingTest:(BOOL (NS_NOESCAPE ^)(id obj, NSUInteger idx, BOOL *stop))predicate { LOCK(NSIndexSet * i = [_arr indexesOfObjectsAtIndexes:s options:opts passingTest:predicate]); return i; } -- (NSArray *)sortedArrayUsingComparator:(NSComparator)cmptr { +- (NSArray *)sortedArrayUsingComparator:(NSComparator NS_NOESCAPE)cmptr { LOCK(NSArray * a = [_arr sortedArrayUsingComparator:cmptr]); return a; } -- (NSArray *)sortedArrayWithOptions:(NSSortOptions)opts usingComparator:(NSComparator)cmptr { +- (NSArray *)sortedArrayWithOptions:(NSSortOptions)opts usingComparator:(NSComparator NS_NOESCAPE)cmptr { LOCK(NSArray * a = [_arr sortedArrayWithOptions:opts usingComparator:cmptr]); return a; } -- (NSUInteger)indexOfObject:(id)obj inSortedRange:(NSRange)r options:(NSBinarySearchingOptions)opts usingComparator:(NSComparator)cmp { +- (NSUInteger)indexOfObject:(id)obj inSortedRange:(NSRange)r options:(NSBinarySearchingOptions)opts usingComparator:(NSComparator NS_NOESCAPE)cmp { LOCK(NSUInteger i = [_arr indexOfObject:obj inSortedRange:r options:opts usingComparator:cmp]); return i; } @@ -284,7 +284,7 @@ - (void)setArray:(NSArray *)otherArray { LOCK([_arr setArray:otherArray]); } -- (void)sortUsingFunction:(NSInteger (*)(id, id, void *))compare context:(void *)context { +- (void)sortUsingFunction:(NSInteger (NS_NOESCAPE *)(id, id, void *))compare context:(void *)context { LOCK([_arr sortUsingFunction:compare context:context]); } @@ -308,11 +308,11 @@ - (void)setObject:(id)obj atIndexedSubscript:(NSUInteger)idx { LOCK([_arr setObject:obj atIndexedSubscript:idx]); } -- (void)sortUsingComparator:(NSComparator)cmptr { +- (void)sortUsingComparator:(NSComparator NS_NOESCAPE)cmptr { LOCK([_arr sortUsingComparator:cmptr]); } -- (void)sortWithOptions:(NSSortOptions)opts usingComparator:(NSComparator)cmptr { +- (void)sortWithOptions:(NSSortOptions)opts usingComparator:(NSComparator NS_NOESCAPE)cmptr { LOCK([_arr sortWithOptions:opts usingComparator:cmptr]); } diff --git a/QiniuSDK/Utils/QNSystem.m b/QiniuSDK/Utils/QNSystem.m index ed5c4038..afa85128 100755 --- a/QiniuSDK/Utils/QNSystem.m +++ b/QiniuSDK/Utils/QNSystem.m @@ -15,63 +15,7 @@ #import #endif -BOOL hasNSURLSession() { -#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) - float sysVersion = [[[UIDevice currentDevice] systemVersion] floatValue]; - if (sysVersion < 7.0) { - return NO; - } -#else - NSOperatingSystemVersion sysVersion = [[NSProcessInfo processInfo] operatingSystemVersion]; - if (sysVersion.majorVersion < 10) { - return NO; - } else if (sysVersion.majorVersion == 10) { - return sysVersion.minorVersion >= 9; - } -#endif - return YES; -} - -BOOL hasAts() { -#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) - float sysVersion = [[[UIDevice currentDevice] systemVersion] floatValue]; - if (sysVersion < 9.0) { - return NO; - } -#else - NSOperatingSystemVersion sysVersion = [[NSProcessInfo processInfo] operatingSystemVersion]; - if (sysVersion.majorVersion < 10) { - return NO; - } else if (sysVersion.majorVersion == 10) { - return sysVersion.minorVersion >= 11; - } -#endif - return YES; -} - -BOOL allowsArbitraryLoads() { - if (!hasAts()) { - return YES; - } - - // for unit test - NSDictionary* d = [[NSBundle mainBundle] infoDictionary]; - if (d == nil || d.count == 0) { - return YES; - } - - NSDictionary* sec = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"NSAppTransportSecurity"]; - if (sec == nil) { - return NO; - } - NSNumber* ats = [sec objectForKey:@"NSAllowsArbitraryLoads"]; - if (ats == nil) { - return NO; - } - return ats.boolValue; -} - -BOOL isIpV6FullySupported() { +BOOL isIpV6FullySupported(void) { #if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) float sysVersion = [[[UIDevice currentDevice] systemVersion] floatValue]; if (sysVersion < 9.0) { From fcbd608880b20aa8f870296acaae0d7e14a74489 Mon Sep 17 00:00:00 2001 From: YangSen-qn Date: Mon, 14 Aug 2023 16:14:58 +0800 Subject: [PATCH 06/19] change readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 91a45677..70dc4afd 100755 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ let package = Package( | Qiniu SDK 版本 | 最低 iOS版本 | 最低 OS X 版本 | Notes | | :--------------------------------------: | :------: | :--------: | :-----------: | -| 8.6.x | iOS 7 | OS X 10.15 | Xcode 最低版本 11 | +| 8.6.x | iOS 9 | OS X 10.15 | Xcode 最低版本 11 | | 8.5.x | iOS 7 | OS X 10.15 | Xcode 最低版本 11 | | 8.4.x | iOS 7 | OS X 10.15 | Xcode 最低版本 11 | | 8.3.x | iOS 7 | OS X 10.15 | Xcode 最低版本 11 | From 3365af19f493fad71dda76ea4f7c8430f20c528d Mon Sep 17 00:00:00 2001 From: YangSen-qn Date: Wed, 16 Aug 2023 10:38:51 +0800 Subject: [PATCH 07/19] change test profile --- Podfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Podfile b/Podfile index e6465ceb..079fcb51 100755 --- a/Podfile +++ b/Podfile @@ -10,23 +10,23 @@ def test_dependencies end target 'QiniuSDK_iOS' do - platform :ios, '7.0' + platform :ios, '9.0' shared_dependencies end target 'QiniuSDK_iOSTests' do - platform :ios, '7.0' + platform :ios, '9.0' shared_dependencies test_dependencies end target 'QiniuSDK_Mac' do - platform :osx, '10.9' + platform :osx, '10.15' shared_dependencies end target 'QiniuSDK_MacTests' do - platform :osx, '10.9' + platform :osx, '10.15' shared_dependencies test_dependencies end From 8ffc20b6e520dbc6f2cfa1d5177b59db866dc332 Mon Sep 17 00:00:00 2001 From: YangSen-qn Date: Thu, 7 Sep 2023 15:33:23 +0800 Subject: [PATCH 08/19] add createWithRegionId --- QiniuSDK.xcodeproj/project.pbxproj | 6 +++++ QiniuSDK/Common/QNFixedZone.h | 10 +++++++++ QiniuSDK/Common/QNFixedZone.m | 8 +++++++ QiniuSDKTests/QNFixZoneTest.m | 36 ++++++++++++++++++++++++++++++ 4 files changed, 60 insertions(+) create mode 100644 QiniuSDKTests/QNFixZoneTest.m diff --git a/QiniuSDK.xcodeproj/project.pbxproj b/QiniuSDK.xcodeproj/project.pbxproj index 2100f832..4109501a 100644 --- a/QiniuSDK.xcodeproj/project.pbxproj +++ b/QiniuSDK.xcodeproj/project.pbxproj @@ -358,6 +358,8 @@ 4551E56724D0065100447285 /* NSData+QNMD5.h in Headers */ = {isa = PBXBuildFile; fileRef = 4551E56524D0065100447285 /* NSData+QNMD5.h */; }; 4551E56824D0065100447285 /* NSData+QNMD5.m in Sources */ = {isa = PBXBuildFile; fileRef = 4551E56624D0065100447285 /* NSData+QNMD5.m */; }; 4551E56924D0065100447285 /* NSData+QNMD5.m in Sources */ = {isa = PBXBuildFile; fileRef = 4551E56624D0065100447285 /* NSData+QNMD5.m */; }; + 45CBC6C32AA9B05A00962B47 /* QNFixZoneTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 45CBC6C22AA9B05A00962B47 /* QNFixZoneTest.m */; }; + 45CBC6C42AA9B05A00962B47 /* QNFixZoneTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 45CBC6C22AA9B05A00962B47 /* QNFixZoneTest.m */; }; 45E0B28A2A1F0596009B1BC7 /* QNConfigurationTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 45E0B2892A1F0596009B1BC7 /* QNConfigurationTest.m */; }; 45E0B28B2A1F0596009B1BC7 /* QNConfigurationTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 45E0B2892A1F0596009B1BC7 /* QNConfigurationTest.m */; }; 8D0FB78D364BAEE65E20A604 /* libPods-QiniuSDK_iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F881668982449FAF2384327E /* libPods-QiniuSDK_iOS.a */; }; @@ -596,6 +598,7 @@ 4551E55E24CE81DA00447285 /* QNInetAddress.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = QNInetAddress.m; sourceTree = ""; }; 4551E56524D0065100447285 /* NSData+QNMD5.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSData+QNMD5.h"; sourceTree = ""; }; 4551E56624D0065100447285 /* NSData+QNMD5.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSData+QNMD5.m"; sourceTree = ""; }; + 45CBC6C22AA9B05A00962B47 /* QNFixZoneTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = QNFixZoneTest.m; sourceTree = ""; }; 45E0B2892A1F0596009B1BC7 /* QNConfigurationTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = QNConfigurationTest.m; sourceTree = ""; }; 466E7AACB5F77BA0D4DE4070 /* Pods-QiniuSDK_MacTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-QiniuSDK_MacTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-QiniuSDK_MacTests/Pods-QiniuSDK_MacTests.debug.xcconfig"; sourceTree = ""; }; 5F32D114A1227199BEC6DF5C /* libPods-QiniuSDK_iOSTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-QiniuSDK_iOSTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -1062,6 +1065,7 @@ 316A4B822431C8BA007BF564 /* QNDnsPrefetcherTest.m */, DFA9B63E19DFD8C900A15FD1 /* QNEtagTest.m */, DFFE0E5F19E6575600D7A0FC /* QNFileRecorderTest.m */, + 45CBC6C22AA9B05A00962B47 /* QNFixZoneTest.m */, DF3C504619DD7BA6000F548F /* QNFormUploadTest.m */, 31259E3524E3D32700CF7531 /* QNGZipTest.m */, 31C30FAB2852EA7900BFD8F7 /* QNNetworkStatusTest.m */, @@ -1634,6 +1638,7 @@ 311ADD23257748A700A6E15E /* QNUploadFlowTest.m in Sources */, DF437CDF1B243A2C0099587B /* QNUpTokenTest.m in Sources */, 31DD31D624971BD7004BFDDE /* QNUploadFileNameTest.m in Sources */, + 45CBC6C32AA9B05A00962B47 /* QNFixZoneTest.m in Sources */, 31A74BCA26E8A89C001EC948 /* QNUplogTest.m in Sources */, 31A1840E246942E0001D6EEE /* QNComplexUploadSceneTest.m in Sources */, DF3C504A19DD7D9F000F548F /* QNResumeUploadTest.m in Sources */, @@ -1759,6 +1764,7 @@ 311ADD24257748A700A6E15E /* QNUploadFlowTest.m in Sources */, DF0A03281B3BAC6E00E3778C /* QNFormUploadTest.m in Sources */, 31DD31D724971BD7004BFDDE /* QNUploadFileNameTest.m in Sources */, + 45CBC6C42AA9B05A00962B47 /* QNFixZoneTest.m in Sources */, 31A74BCB26E8A89C001EC948 /* QNUplogTest.m in Sources */, 31A1840F246942E0001D6EEE /* QNComplexUploadSceneTest.m in Sources */, DF0A03291B3BAC6E00E3778C /* QNResumeUploadTest.m in Sources */, diff --git a/QiniuSDK/Common/QNFixedZone.h b/QiniuSDK/Common/QNFixedZone.h index a6c88d63..7b589dc8 100644 --- a/QiniuSDK/Common/QNFixedZone.h +++ b/QiniuSDK/Common/QNFixedZone.h @@ -71,6 +71,16 @@ NS_ASSUME_NONNULL_BEGIN */ + (instancetype)createWithHost:(NSArray *)upList; +/** + * Zone初始化方法 + * regionId 参考链接:https://developer.qiniu.com/kodo/1671/region-endpoint-fq + * + * @param regionId 根据区域 ID 创建 Zone + * + * @return Zone 实例 + */ ++ (instancetype)createWithRegionId:(NSString *)regionId; + /** * 获取本地所有固定zone信息 */ diff --git a/QiniuSDK/Common/QNFixedZone.m b/QiniuSDK/Common/QNFixedZone.m index 2e5754eb..81485e91 100644 --- a/QiniuSDK/Common/QNFixedZone.m +++ b/QiniuSDK/Common/QNFixedZone.m @@ -120,6 +120,14 @@ + (instancetype)createWithHost:(NSArray *)upList { return [[QNFixedZone alloc] initWithUpDomainList:upList oldUpList:nil regionId:nil]; } ++ (instancetype)createWithRegionId:(NSString *)regionId { + NSArray *upList = @[ + [NSString stringWithFormat:@"upload-%@.qiniup.com", regionId], + [NSString stringWithFormat:@"up-%@.qiniup.com", regionId], + ]; + return [[QNFixedZone alloc] initWithUpDomainList:upList oldUpList:nil regionId:regionId]; +} + - (QNZonesInfo *)createZonesInfo:(NSArray *)upDomains regionId:(NSString *)regionId { return [self createZonesInfo:upDomains oldUpDomains:nil regionId:regionId]; diff --git a/QiniuSDKTests/QNFixZoneTest.m b/QiniuSDKTests/QNFixZoneTest.m new file mode 100644 index 00000000..a2f60381 --- /dev/null +++ b/QiniuSDKTests/QNFixZoneTest.m @@ -0,0 +1,36 @@ +// +// QNFixZoneTest.m +// QiniuSDK +// +// Created by yangsen on 2023/9/7. +// Copyright © 2023 Qiniu. All rights reserved. +// + +#import +#import "QNFixedZone.h" +#import "QNZoneInfo.h" + +@interface QNFixZoneTest : XCTestCase + +@end + +@implementation QNFixZoneTest + +- (void)setUp { + // Put setup code here. This method is called before the invocation of each test method in the class. +} + +- (void)tearDown { + // Put teardown code here. This method is called after the invocation of each test method in the class. +} + +- (void)testCreateByRegionId { + QNFixedZone *zone = [QNFixedZone createWithRegionId:@"na0"]; + QNZoneInfo *zoneInfo = [zone getZonesInfoWithToken:nil].zonesInfo[0]; + + XCTAssert([zoneInfo.regionId isEqualToString:@"na0"], @"regionId:%@", zoneInfo.regionId); + XCTAssert([zoneInfo.domains[0] isEqualToString:@"upload-na0.qiniup.com"], @"domains:%@", zoneInfo.domains); + XCTAssert([zoneInfo.domains[1] isEqualToString:@"up-na0.qiniup.com"], @"domains:%@", zoneInfo.domains); +} + +@end From 712cccefa6df6a4f95db1dca618df460248be7db Mon Sep 17 00:00:00 2001 From: YangSen-qn Date: Tue, 12 Sep 2023 16:51:28 +0800 Subject: [PATCH 09/19] FixZone deprecated some builder api --- QiniuSDK/Common/QNFixedZone.h | 15 ++++++++------- QiniuSDK/Utils/QNDefine.h | 3 +++ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/QiniuSDK/Common/QNFixedZone.h b/QiniuSDK/Common/QNFixedZone.h index 7b589dc8..f1c74a2b 100644 --- a/QiniuSDK/Common/QNFixedZone.h +++ b/QiniuSDK/Common/QNFixedZone.h @@ -7,6 +7,7 @@ // #import "QNZone.h" +#import "QNDefine.h" NS_ASSUME_NONNULL_BEGIN @@ -17,42 +18,42 @@ NS_ASSUME_NONNULL_BEGIN * * @return 实例 */ -+ (instancetype)zone0; ++ (instancetype)zone0 kQNDeprecated("use createWithRegionId instead"); /** * zoneCnEast2 华东-浙江2 * * @return 实例 */ -+ (instancetype)zoneCnEast2; ++ (instancetype)zoneCnEast2 kQNDeprecated("use createWithRegionId instead"); /** * zone 1 华北 * * @return 实例 */ -+ (instancetype)zone1; ++ (instancetype)zone1 kQNDeprecated("use createWithRegionId instead"); /** * zone 2 华南 * * @return 实例 */ -+ (instancetype)zone2; ++ (instancetype)zone2 kQNDeprecated("use createWithRegionId instead"); /** * zone Na0 北美 * * @return 实例 */ -+ (instancetype)zoneNa0; ++ (instancetype)zoneNa0 kQNDeprecated("use createWithRegionId instead"); /** * zone As0 新加坡 * * @return 实例 */ -+ (instancetype)zoneAs0; ++ (instancetype)zoneAs0 kQNDeprecated("use createWithRegionId instead"); /** * Zone初始化方法 @@ -84,7 +85,7 @@ NS_ASSUME_NONNULL_BEGIN /** * 获取本地所有固定zone信息 */ -+ (QNFixedZone *)localsZoneInfo; ++ (QNFixedZone *)localsZoneInfo DEPRECATED_ATTRIBUTE; /** * 合并区域 diff --git a/QiniuSDK/Utils/QNDefine.h b/QiniuSDK/Utils/QNDefine.h index 18fc2a53..952b6bf3 100644 --- a/QiniuSDK/Utils/QNDefine.h +++ b/QiniuSDK/Utils/QNDefine.h @@ -13,3 +13,6 @@ #define kQNWeakObj(object) __weak typeof(object) weak_##object = object #define kQNStrongObj(object) __strong typeof(object) object = weak_##object + +// 过期 +#define kQNDeprecated(instead) NS_DEPRECATED(2_0, 2_0, 2_0, 2_0, instead) From 6aa3861132421a0a24e0d8655b1ee31b770dfe4c Mon Sep 17 00:00:00 2001 From: YangSen-qn Date: Fri, 20 Oct 2023 18:09:23 +0800 Subject: [PATCH 10/19] version to v8.7.0 --- CHANGELOG.md | 5 +++++ Qiniu.podspec | 4 ++-- QiniuSDK/Utils/QNVersion.h | 2 +- README.md | 18 ++++++++++-------- 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 72a6e90d..5f4d6f82 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,9 @@ #Changelog +## 8.7.0(2023-10-23) +- iOS 最低版本调整至 iOS9 +- QNFixedZone 新增通过 RegionID 构造实例的方法 +- 区域查询结果缓存支持磁盘缓存 + ## 8.6.0(2023-08-07) - 调整在根据 Bucket 获取其所在区域信息时的主备域名顺序 - 移除亚太-首尔区域 diff --git a/Qiniu.podspec b/Qiniu.podspec index eead09f5..33a3298d 100755 --- a/Qiniu.podspec +++ b/Qiniu.podspec @@ -1,13 +1,13 @@ Pod::Spec.new do |s| s.name = 'Qiniu' - s.version = '8.6.0' + s.version = '8.7.0' s.summary = 'Qiniu Resource Storage SDK for iOS and Mac' s.homepage = 'https://github.com/qiniu/objc-sdk' s.social_media_url = 'http://weibo.com/qiniutek' s.author = "Qiniu => sdk@qiniu.com" s.source = {:git => 'https://github.com/qiniu/objc-sdk.git', :tag => "v#{s.version}"} - s.ios.deployment_target = '7.0' + s.ios.deployment_target = '9.0' s.osx.deployment_target = '10.9' s.source_files = 'QiniuSDK/BigData/**/*.{h,m}','QiniuSDK/Collect/**/*.{h,m}','QiniuSDK/Common/**/*.{h,m}','QiniuSDK/Http/**/*.{h,m}','QiniuSDK/Recorder/**/*.{h,m}','QiniuSDK/Storage/**/*.{h,m}','QiniuSDK/Transaction/**/*.{h,m}','QiniuSDK/Utils/**/*.{h,m}','QiniuSDK/QiniuSDK.h' diff --git a/QiniuSDK/Utils/QNVersion.h b/QiniuSDK/Utils/QNVersion.h index 1da360d2..45350979 100755 --- a/QiniuSDK/Utils/QNVersion.h +++ b/QiniuSDK/Utils/QNVersion.h @@ -11,4 +11,4 @@ /** * sdk 版本 */ -static NSString *const kQiniuVersion = @"8.6.0"; +static NSString *const kQiniuVersion = @"8.7.0"; diff --git a/README.md b/README.md index 91a45677..11837321 100755 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ 通过 CocoaPods ```ruby -pod "Qiniu", "~> 8.6.0" +pod "Qiniu", "~> 8.7.0" ``` 通过 Swift Package Manager (Xcode 11+) @@ -26,7 +26,7 @@ File -> Swift Packages -> Add Package Dependency,输入库链接,选择相 库对接: let package = Package( dependencies: [ - .package(url: "https://github.com/qiniu/objc-sdk", from: "8.5.3") + .package(url: "https://github.com/qiniu/objc-sdk", from: "8.7.0") ], // ... ) @@ -37,6 +37,7 @@ let package = Package( | Qiniu SDK 版本 | 最低 iOS版本 | 最低 OS X 版本 | Notes | | :--------------------------------------: | :------: | :--------: | :-----------: | +| 8.7.x | iOS 9 | OS X 10.15 | Xcode 最低版本 11 | | 8.6.x | iOS 7 | OS X 10.15 | Xcode 最低版本 11 | | 8.5.x | iOS 7 | OS X 10.15 | Xcode 最低版本 11 | | 8.4.x | iOS 7 | OS X 10.15 | Xcode 最低版本 11 | @@ -75,12 +76,13 @@ let package = Package( #import ... QNConfiguration *config = [QNConfiguration build:^(QNConfigurationBuilder *builder) { - builder.useHttps = NO;// 是否使用https - builder.zone = [QNFixedZone zone0];// 指定华东区域 - // builder.zone = [QNFixedZone zone1];// 指定华北区域 - // builder.zone = [QNFixedZone zone2];// 指定华南区域 - // builder.zone = [QNFixedZone zoneNa0];// 指定北美区域 - // builder.zone = [QNFixedZone zoneAs0];// 指定东南亚区域 + builder.useHttps = YES;// 是否使用https + builder.zone = [[QNAutoZone alloc] init];// 根据 bucket 自动查询区域 + // builder.zone = [QNFixedZone createWithRegionId:@"z0"];// 指定华东区域 + // builder.zone = [QNFixedZone createWithRegionId:@"z1"];// 指定华北区域 + // builder.zone = [QNFixedZone createWithRegionId:@"z2"];// 指定华南区域 + // builder.zone = [QNFixedZone createWithRegionId:@"na0"];// 指定北美区域 + // builder.zone = [QNFixedZone createWithRegionId:@"as0"];// 指定东南亚区域 }]; QNUploadManager *upManager = [[QNUploadManager alloc] initWithConfiguration:config]; From 8dac547a3f3358cf91c49584d06d461d0f875d05 Mon Sep 17 00:00:00 2001 From: YangSen-qn Date: Mon, 6 Nov 2023 17:08:54 +0800 Subject: [PATCH 11/19] handle cache timestamp --- QiniuSDK/Common/QNAutoZone.m | 12 +++--------- QiniuSDK/Common/QNZoneInfo.m | 14 +++++++++++--- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/QiniuSDK/Common/QNAutoZone.m b/QiniuSDK/Common/QNAutoZone.m index 4023512f..3a970e79 100644 --- a/QiniuSDK/Common/QNAutoZone.m +++ b/QiniuSDK/Common/QNAutoZone.m @@ -64,7 +64,7 @@ + (QNCache *)zoneShareCache { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ QNCacheOption *option = [[QNCacheOption alloc] init]; - option.version = @"v1.0.0"; + option.version = @"v1.0.1"; queryCache = [QNCache cache:[QNZonesInfo class] option:option]; }); return queryCache; @@ -130,7 +130,6 @@ - (void)preQuery:(QNUpToken *)token on:(QNPrequeryReturn)ret { return; } - __block int32_t saveTime = 0; kQNWeakSelf; QNSingleFlight *singleFlight = [QNAutoZone UCQuerySingleFlight]; [singleFlight perform:token.index action:^(QNSingleFlightComplete _Nonnull complete) { @@ -162,13 +161,8 @@ - (void)preQuery:(QNUpToken *)token on:(QNPrequeryReturn)ret { if (responseInfo && responseInfo.isOK) { QNZonesInfo *zonesInfo = [QNZonesInfo infoWithDictionary:response]; if ([zonesInfo isValid]) { - @synchronized (cacheKey) { - if (saveTime == 0) { - saveTime++; - [self setZonesInfo:zonesInfo forKey:cacheKey]; - [[QNAutoZone zoneShareCache] cache:zonesInfo forKey:cacheKey atomically:false]; - } - } + [self setZonesInfo:zonesInfo forKey:cacheKey]; + [[QNAutoZone zoneShareCache] cache:zonesInfo forKey:cacheKey atomically:false]; ret(0, responseInfo, metrics); } else { ret(NSURLErrorCannotDecodeRawData, responseInfo, metrics); diff --git a/QiniuSDK/Common/QNZoneInfo.m b/QiniuSDK/Common/QNZoneInfo.m index b3f117ff..7cba8950 100644 --- a/QiniuSDK/Common/QNZoneInfo.m +++ b/QiniuSDK/Common/QNZoneInfo.m @@ -7,6 +7,7 @@ // #import "QNZoneInfo.h" +#import "QNUtils.h" NSString * const QNZoneInfoSDKDefaultIOHost = @"default_io_host"; NSString * const QNZoneInfoEmptyRegionId = @"none"; @@ -52,11 +53,17 @@ + (QNZoneInfo *)zoneInfoWithMainHosts:(NSArray *)mainHosts return zoneInfo; } -+ (QNZoneInfo *)zoneInfoFromDictionary:(NSDictionary *)detailInfo { - if (![detailInfo isKindOfClass:[NSDictionary class]]) { ++ (QNZoneInfo *)zoneInfoFromDictionary:(NSDictionary *)detail { + if (![detail isKindOfClass:[NSDictionary class]]) { return nil; } + NSMutableDictionary *detailInfo = [detail mutableCopy]; + if (detailInfo[@"timestamp"] == nil) { + detailInfo[@"timestamp"] = @([QNUtils currentTimestamp]*0.001); + } + long timestamp = [detailInfo[@"timestamp"] longValue]; + NSString *regionId = [detailInfo objectForKey:@"region"]; if (regionId == nil) { regionId = QNZoneInfoEmptyRegionId; @@ -73,6 +80,7 @@ + (QNZoneInfo *)zoneInfoFromDictionary:(NSDictionary *)detailInfo { NSMutableArray *allHosts = [NSMutableArray array]; QNZoneInfo *zoneInfo = [[QNZoneInfo alloc] init:ttl regionId:regionId]; + zoneInfo.buildDate = [NSDate dateWithTimeIntervalSince1970:timestamp]; zoneInfo.http3Enabled = http3Enabled; if ([domains isKindOfClass:[NSArray class]]) { zoneInfo.domains = domains; @@ -84,7 +92,7 @@ + (QNZoneInfo *)zoneInfoFromDictionary:(NSDictionary *)detailInfo { } zoneInfo.allHosts = [allHosts copy]; - zoneInfo.detailInfo = detailInfo; + zoneInfo.detailInfo = [detailInfo copy]; return zoneInfo; } From c04785882526500e761d4e8e490b4707aa933d63 Mon Sep 17 00:00:00 2001 From: YangSen-qn Date: Mon, 13 Nov 2023 11:23:56 +0800 Subject: [PATCH 12/19] uc query add host: uc.qiniuapi.com --- QiniuSDK/Common/QNAutoZone.m | 2 +- QiniuSDK/Common/QNConfig.h | 7 ++++--- QiniuSDK/Common/QNZoneInfo.m | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/QiniuSDK/Common/QNAutoZone.m b/QiniuSDK/Common/QNAutoZone.m index 3a970e79..d59fad10 100644 --- a/QiniuSDK/Common/QNAutoZone.m +++ b/QiniuSDK/Common/QNAutoZone.m @@ -64,7 +64,7 @@ + (QNCache *)zoneShareCache { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ QNCacheOption *option = [[QNCacheOption alloc] init]; - option.version = @"v1.0.1"; + option.version = @"v2"; queryCache = [QNCache cache:[QNZonesInfo class] option:option]; }); return queryCache; diff --git a/QiniuSDK/Common/QNConfig.h b/QiniuSDK/Common/QNConfig.h index bc90a9f2..bed8269a 100644 --- a/QiniuSDK/Common/QNConfig.h +++ b/QiniuSDK/Common/QNConfig.h @@ -9,9 +9,10 @@ #import //MARK: -- 内部布置 尽量不要修改 -#define kQNPreQueryHost00 @"kodo-config.qiniuapi.com" -#define kQNPreQueryHost01 @"uc.qbox.me" -#define kQNPreQueryHost02 @"api.qiniu.com" +#define kQNPreQueryHost00 @"uc.qiniuapi.com" +#define kQNPreQueryHost01 @"kodo-config.qiniuapi.com" +#define kQNPreQueryHost02 @"uc.qbox.me" +#define kQNPreQueryHost03 @"api.qiniu.com" #define kQNPreQueryHosts @[kQNPreQueryHost00, kQNPreQueryHost01, kQNPreQueryHost02] #define kQNUpLogHost @"uplog.qbox.me" diff --git a/QiniuSDK/Common/QNZoneInfo.m b/QiniuSDK/Common/QNZoneInfo.m index 7cba8950..305a2968 100644 --- a/QiniuSDK/Common/QNZoneInfo.m +++ b/QiniuSDK/Common/QNZoneInfo.m @@ -60,7 +60,7 @@ + (QNZoneInfo *)zoneInfoFromDictionary:(NSDictionary *)detail { NSMutableDictionary *detailInfo = [detail mutableCopy]; if (detailInfo[@"timestamp"] == nil) { - detailInfo[@"timestamp"] = @([QNUtils currentTimestamp]*0.001); + detailInfo[@"timestamp"] = @([QNUtils currentTimestamp]/1000); } long timestamp = [detailInfo[@"timestamp"] longValue]; From e7dcaeda82281fb3db37d49866cacd7f42468a4e Mon Sep 17 00:00:00 2001 From: YangSen-qn Date: Mon, 13 Nov 2023 11:40:33 +0800 Subject: [PATCH 13/19] change ci cocopods version to 1.14.2 --- .github/workflows/ci-test.yml | 2 +- QiniuSDK/Common/QNConfig.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci-test.yml b/.github/workflows/ci-test.yml index da761df0..404e80a1 100644 --- a/.github/workflows/ci-test.yml +++ b/.github/workflows/ci-test.yml @@ -27,7 +27,7 @@ jobs: - name: setup-cocoapods uses: maxim-lobanov/setup-cocoapods@v1 with: - version: 1.12.1 + version: 1.14.2 - name: Run Cases env: QINIU_TEST_ENV: travis diff --git a/QiniuSDK/Common/QNConfig.h b/QiniuSDK/Common/QNConfig.h index bed8269a..b39401bf 100644 --- a/QiniuSDK/Common/QNConfig.h +++ b/QiniuSDK/Common/QNConfig.h @@ -13,6 +13,6 @@ #define kQNPreQueryHost01 @"kodo-config.qiniuapi.com" #define kQNPreQueryHost02 @"uc.qbox.me" #define kQNPreQueryHost03 @"api.qiniu.com" -#define kQNPreQueryHosts @[kQNPreQueryHost00, kQNPreQueryHost01, kQNPreQueryHost02] +#define kQNPreQueryHosts @[kQNPreQueryHost00, kQNPreQueryHost01, kQNPreQueryHost02, kQNPreQueryHost03] #define kQNUpLogHost @"uplog.qbox.me" From 9c54854d4b183bed8183c5d6a0e1111131aa9647 Mon Sep 17 00:00:00 2001 From: YangSen-qn Date: Thu, 16 Nov 2023 11:59:00 +0800 Subject: [PATCH 14/19] change http scheme logic: prefer using url self scheme --- QiniuSDK.xcodeproj/project.pbxproj | 12 ++++++++++ QiniuSDK/Http/Request/QNHttpRegionRequest.m | 4 ++-- QiniuSDK/Utils/QNUrlUtils.h | 19 ++++++++++++++++ QiniuSDK/Utils/QNUrlUtils.m | 25 +++++++++++++++++++++ 4 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 QiniuSDK/Utils/QNUrlUtils.h create mode 100644 QiniuSDK/Utils/QNUrlUtils.m diff --git a/QiniuSDK.xcodeproj/project.pbxproj b/QiniuSDK.xcodeproj/project.pbxproj index d02dc126..b4e5b596 100644 --- a/QiniuSDK.xcodeproj/project.pbxproj +++ b/QiniuSDK.xcodeproj/project.pbxproj @@ -344,6 +344,10 @@ 31FD09252487506300217848 /* QNRetryTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 31FD09232487506300217848 /* QNRetryTest.m */; }; 31FE6A0B25A8320200C02B27 /* QNConnectChecker.h in Headers */ = {isa = PBXBuildFile; fileRef = 31FE6A0925A8320200C02B27 /* QNConnectChecker.h */; }; 31FE6A0C25A8320200C02B27 /* QNConnectChecker.m in Sources */ = {isa = PBXBuildFile; fileRef = 31FE6A0A25A8320200C02B27 /* QNConnectChecker.m */; }; + 4511641A2B05C86900F2D9FC /* QNUrlUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 451164182B05C86900F2D9FC /* QNUrlUtils.h */; }; + 4511641B2B05C86900F2D9FC /* QNUrlUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 451164182B05C86900F2D9FC /* QNUrlUtils.h */; }; + 4511641C2B05C86900F2D9FC /* QNUrlUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 451164192B05C86900F2D9FC /* QNUrlUtils.m */; }; + 4511641D2B05C86900F2D9FC /* QNUrlUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 451164192B05C86900F2D9FC /* QNUrlUtils.m */; }; 451A36B624BD893D00754A15 /* QNReportConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 451A36B424BD893D00754A15 /* QNReportConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; 451A36B724BD893D00754A15 /* QNReportConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 451A36B524BD893D00754A15 /* QNReportConfig.m */; }; 451A36B824BD893D00754A15 /* QNReportConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 451A36B524BD893D00754A15 /* QNReportConfig.m */; }; @@ -591,6 +595,8 @@ 31FE6A0925A8320200C02B27 /* QNConnectChecker.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = QNConnectChecker.h; sourceTree = ""; }; 31FE6A0A25A8320200C02B27 /* QNConnectChecker.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = QNConnectChecker.m; sourceTree = ""; }; 32036F4A07041AC3410DBF2F /* Pods-QiniuSDK_Mac.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-QiniuSDK_Mac.release.xcconfig"; path = "Pods/Target Support Files/Pods-QiniuSDK_Mac/Pods-QiniuSDK_Mac.release.xcconfig"; sourceTree = ""; }; + 451164182B05C86900F2D9FC /* QNUrlUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = QNUrlUtils.h; sourceTree = ""; }; + 451164192B05C86900F2D9FC /* QNUrlUtils.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = QNUrlUtils.m; sourceTree = ""; }; 451A36B424BD893D00754A15 /* QNReportConfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = QNReportConfig.h; sourceTree = ""; }; 451A36B524BD893D00754A15 /* QNReportConfig.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = QNReportConfig.m; sourceTree = ""; }; 4543D6FE24D29B21006E28B1 /* QNDnsPrefetch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QNDnsPrefetch.h; sourceTree = ""; }; @@ -765,6 +771,8 @@ 3177B70325A30C4500C56293 /* QNSingleFlight.m */, 31E8EA1A2692AC1500BD6DBE /* QNMutableArray.h */, 31E8EA1B2692AC1500BD6DBE /* QNMutableArray.m */, + 451164182B05C86900F2D9FC /* QNUrlUtils.h */, + 451164192B05C86900F2D9FC /* QNUrlUtils.m */, ); path = Utils; sourceTree = ""; @@ -1174,6 +1182,7 @@ 318E2F022552AE05004EDE8C /* QNPHAssetResource.h in Headers */, 318E2F172552AE2B004EDE8C /* QNRequestTransaction.h in Headers */, 318E2F312552AE39004EDE8C /* QNConfiguration.h in Headers */, + 4511641B2B05C86900F2D9FC /* QNUrlUtils.h in Headers */, 318E2F132552AE2B004EDE8C /* QNUploadRegionInfo.h in Headers */, 318E2F192552AE2B004EDE8C /* QNHttpSingleRequest.h in Headers */, 318E2F352552AE39004EDE8C /* QNUploadManager.h in Headers */, @@ -1228,6 +1237,7 @@ 31259E3424E3D02C00CF7531 /* NSData+QNGZip.h in Headers */, 31A6985526DCDB3F00D84ABC /* QNServerConfigCache.h in Headers */, 3188D4FD264913B800183CAE /* QNUploadSourceStream.h in Headers */, + 4511641A2B05C86900F2D9FC /* QNUrlUtils.h in Headers */, 31304CB92563DA03001034D2 /* QNUploadRequestState.h in Headers */, 3177B70425A30C4500C56293 /* QNSingleFlight.h in Headers */, 31C2EEE3242DE86300713A33 /* QNUtils.h in Headers */, @@ -1585,6 +1595,7 @@ 31E8EA1E2692AC1500BD6DBE /* QNMutableArray.m in Sources */, 31C2EED5242CC52600713A33 /* QNDnsCacheFile.m in Sources */, 3149A1E02462A57400A2A15B /* QNUploadServer.m in Sources */, + 4511641C2B05C86900F2D9FC /* QNUrlUtils.m in Sources */, 31F553C12457FFB0000B66AD /* QNPipeline.m in Sources */, 4551E56024CE81DA00447285 /* QNInetAddress.m in Sources */, CC25135D244C7EB3003F4C65 /* QNBaseUpload.m in Sources */, @@ -1713,6 +1724,7 @@ 31E8EA1F2692AC1500BD6DBE /* QNMutableArray.m in Sources */, 31F553C22457FFB0000B66AD /* QNPipeline.m in Sources */, 3149A1E12462A57400A2A15B /* QNUploadServer.m in Sources */, + 4511641D2B05C86900F2D9FC /* QNUrlUtils.m in Sources */, 4551E56124CE81DA00447285 /* QNInetAddress.m in Sources */, 31F553AF2457D2E5000B66AD /* QNALAssetFile.m in Sources */, 313B380F2575E49400FBB57B /* QNPartsUploadPerformer.m in Sources */, diff --git a/QiniuSDK/Http/Request/QNHttpRegionRequest.m b/QiniuSDK/Http/Request/QNHttpRegionRequest.m index 26131811..fee44fb9 100644 --- a/QiniuSDK/Http/Request/QNHttpRegionRequest.m +++ b/QiniuSDK/Http/Request/QNHttpRegionRequest.m @@ -14,6 +14,7 @@ #import "QNHttpRegionRequest.h" #import "QNConfiguration.h" #import "QNUploadOption.h" +#import "QNUrlUtils.h" #import "NSURLRequest+QNRequest.h" #import "QNUploadRequestMetrics.h" @@ -138,9 +139,8 @@ - (void)performRequest:(id )server self.currentServer = server; - NSString *scheme = self.config.useHttps ? @"https://" : @"http://"; NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; - NSString *urlString = [NSString stringWithFormat:@"%@%@%@", scheme, serverHost, action ?: @""]; + NSString *urlString = [NSString stringWithFormat:@"%@%@", [QNUrlUtils setHostScheme:serverHost useHttps:self.config.useHttps], action ?: @""]; request.URL = [NSURL URLWithString:urlString]; request.HTTPMethod = method; [request setAllHTTPHeaderFields:headers]; diff --git a/QiniuSDK/Utils/QNUrlUtils.h b/QiniuSDK/Utils/QNUrlUtils.h new file mode 100644 index 00000000..af6090c2 --- /dev/null +++ b/QiniuSDK/Utils/QNUrlUtils.h @@ -0,0 +1,19 @@ +// +// QNUrlUtils.h +// QiniuSDK +// +// Created by yangsen on 2023/11/16. +// Copyright © 2023 Qiniu. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface QNUrlUtils : NSObject + ++ (NSString *)setHostScheme:(NSString *)host useHttps:(BOOL)useHttps; + +@end + +NS_ASSUME_NONNULL_END diff --git a/QiniuSDK/Utils/QNUrlUtils.m b/QiniuSDK/Utils/QNUrlUtils.m new file mode 100644 index 00000000..ed3ff46d --- /dev/null +++ b/QiniuSDK/Utils/QNUrlUtils.m @@ -0,0 +1,25 @@ +// +// QNUrlUtils.m +// QiniuSDK +// +// Created by yangsen on 2023/11/16. +// Copyright © 2023 Qiniu. All rights reserved. +// + +#import "QNUrlUtils.h" + +@implementation QNUrlUtils + ++ (NSString *)setHostScheme:(NSString *)host useHttps:(BOOL)useHttps { + if (host == nil || host.length == 0) { + return nil; + } + + if ([host hasPrefix:@"http://"] || [host hasPrefix:@"https://"]) { + return host; + } + + return [NSString stringWithFormat:@"%@%@", (useHttps ? @"https://" : @"http://"), host]; +} + +@end From e77a14a09bd8f18e63d2868b727c5933c3581f26 Mon Sep 17 00:00:00 2001 From: YangSen-qn Date: Thu, 23 Nov 2023 14:48:01 +0800 Subject: [PATCH 15/19] version to 8.7.1 --- CHANGELOG.md | 3 +++ Qiniu.podspec | 2 +- QiniuSDK/Utils/QNVersion.h | 2 +- README.md | 4 ++-- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f4d6f82..6ebf5e50 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,7 @@ #Changelog +## 8.7.1(2023-11-23) +- 查询区域的主备域名增加 uc.qiniuapi.com + ## 8.7.0(2023-10-23) - iOS 最低版本调整至 iOS9 - QNFixedZone 新增通过 RegionID 构造实例的方法 diff --git a/Qiniu.podspec b/Qiniu.podspec index b49d2a00..ee88e463 100755 --- a/Qiniu.podspec +++ b/Qiniu.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'Qiniu' - s.version = '8.7.0' + s.version = '8.7.1' s.summary = 'Qiniu Resource Storage SDK for iOS and Mac' s.homepage = 'https://github.com/qiniu/objc-sdk' s.social_media_url = 'http://weibo.com/qiniutek' diff --git a/QiniuSDK/Utils/QNVersion.h b/QiniuSDK/Utils/QNVersion.h index 45350979..56d5be71 100755 --- a/QiniuSDK/Utils/QNVersion.h +++ b/QiniuSDK/Utils/QNVersion.h @@ -11,4 +11,4 @@ /** * sdk 版本 */ -static NSString *const kQiniuVersion = @"8.7.0"; +static NSString *const kQiniuVersion = @"8.7.1"; diff --git a/README.md b/README.md index 11837321..c0f223ba 100755 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ 通过 CocoaPods ```ruby -pod "Qiniu", "~> 8.7.0" +pod "Qiniu", "~> 8.7.1" ``` 通过 Swift Package Manager (Xcode 11+) @@ -26,7 +26,7 @@ File -> Swift Packages -> Add Package Dependency,输入库链接,选择相 库对接: let package = Package( dependencies: [ - .package(url: "https://github.com/qiniu/objc-sdk", from: "8.7.0") + .package(url: "https://github.com/qiniu/objc-sdk", from: "8.7.1") ], // ... ) From c70d92ddcb2c8c670cedbb9d9fd650efb06be6ea Mon Sep 17 00:00:00 2001 From: YangSen-qn Date: Fri, 22 Mar 2024 17:04:14 +0800 Subject: [PATCH 16/19] add PrivacyInfo --- Qiniu.podspec | 3 +- QiniuDemo/QiniuDemo.xcodeproj/project.pbxproj | 32 +++++++++++++++ QiniuSDK.xcodeproj/project.pbxproj | 4 ++ QiniuSDK/PrivacyInfo.xcprivacy | 40 +++++++++++++++++++ QiniuSDK/info.plist | 26 ++++++++++++ 5 files changed, 104 insertions(+), 1 deletion(-) create mode 100644 QiniuSDK/PrivacyInfo.xcprivacy create mode 100644 QiniuSDK/info.plist diff --git a/Qiniu.podspec b/Qiniu.podspec index ee88e463..08e03d17 100755 --- a/Qiniu.podspec +++ b/Qiniu.podspec @@ -11,13 +11,14 @@ Pod::Spec.new do |s| s.osx.deployment_target = '10.15' s.source_files = 'QiniuSDK/BigData/**/*.{h,m}','QiniuSDK/Collect/**/*.{h,m}','QiniuSDK/Common/**/*.{h,m}','QiniuSDK/Http/**/*.{h,m}','QiniuSDK/Recorder/**/*.{h,m}','QiniuSDK/Storage/**/*.{h,m}','QiniuSDK/Transaction/**/*.{h,m}','QiniuSDK/Utils/**/*.{h,m}','QiniuSDK/QiniuSDK.h' + s.resource_bundle = {"Qiniu.privacy"=>"QiniuSDK/PrivacyInfo.xcprivacy"} s.requires_arc = true s.libraries = 'z' s.dependency 'HappyDNS', '~> 1.0.3' s.license = { :type => "MIT", :text => <<-LICENSE The MIT License (MIT) -Copyright (c) 2011-2020 qiniu.com +Copyright (c) 2011-2024 qiniu.com Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/QiniuDemo/QiniuDemo.xcodeproj/project.pbxproj b/QiniuDemo/QiniuDemo.xcodeproj/project.pbxproj index 50d6f833..6abd3b26 100644 --- a/QiniuDemo/QiniuDemo.xcodeproj/project.pbxproj +++ b/QiniuDemo/QiniuDemo.xcodeproj/project.pbxproj @@ -8,6 +8,7 @@ /* Begin PBXBuildFile section */ 26F62ADDD5B6306E978C9A3F /* libPods-QiniuDemoTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 14CB2139715DD7B6FD5B146E /* libPods-QiniuDemoTests.a */; }; + 4545D3142BAD7D0C00932C3F /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 4545D3132BAD7D0C00932C3F /* PrivacyInfo.xcprivacy */; }; 4561F02C28D9A6F80098A697 /* UploadResource_14M.zip in Resources */ = {isa = PBXBuildFile; fileRef = 4561F02B28D9A6F80098A697 /* UploadResource_14M.zip */; }; 45E6080929ADD57100634200 /* UploadResource_1G.zip in Resources */ = {isa = PBXBuildFile; fileRef = 45E6080829ADD57100634200 /* UploadResource_1G.zip */; }; 93D230241C86D7F700434F6D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 93D230231C86D7F700434F6D /* main.m */; }; @@ -42,6 +43,7 @@ 14CB2139715DD7B6FD5B146E /* libPods-QiniuDemoTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-QiniuDemoTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 24EE530BBB100BED89B08A3D /* Pods-QiniuDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-QiniuDemo.release.xcconfig"; path = "Pods/Target Support Files/Pods-QiniuDemo/Pods-QiniuDemo.release.xcconfig"; sourceTree = ""; }; 3189882026469145003CCA68 /* QiniuDemo.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = QiniuDemo.entitlements; sourceTree = ""; }; + 4545D3132BAD7D0C00932C3F /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = ""; }; 4561F02B28D9A6F80098A697 /* UploadResource_14M.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; path = UploadResource_14M.zip; sourceTree = ""; }; 4561F02F28D9AB090098A697 /* Configure.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Configure.h; sourceTree = ""; }; 45E6080829ADD57100634200 /* UploadResource_1G.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; path = UploadResource_1G.zip; sourceTree = ""; }; @@ -94,6 +96,14 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 37C097D5D636357AA82067EF /* Resources */ = { + isa = PBXGroup; + children = ( + ); + name = Resources; + path = QiniuDemo/Resources; + sourceTree = ""; + }; 4561F02A28D9A6F80098A697 /* DemoResource */ = { isa = PBXGroup; children = ( @@ -133,6 +143,7 @@ 93D230201C86D7F700434F6D /* Products */, 63D8EA8E5532E578D972E007 /* Pods */, 7E4EA7693FD8983C455E9490 /* Frameworks */, + 37C097D5D636357AA82067EF /* Resources */, ); sourceTree = ""; }; @@ -160,6 +171,7 @@ 93D230301C86D7F700434F6D /* LaunchScreen.storyboard */, 93D230331C86D7F700434F6D /* Info.plist */, 93D230221C86D7F700434F6D /* Supporting Files */, + 4545D3132BAD7D0C00932C3F /* PrivacyInfo.xcprivacy */, ); path = QiniuDemo; sourceTree = ""; @@ -201,6 +213,7 @@ 93D2301B1C86D7F700434F6D /* Sources */, 93D2301C1C86D7F700434F6D /* Frameworks */, 93D2301D1C86D7F700434F6D /* Resources */, + 75482DABF7ED9ABDE45EBF1C /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -296,6 +309,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 4545D3142BAD7D0C00932C3F /* PrivacyInfo.xcprivacy in Resources */, 93D230321C86D7F700434F6D /* LaunchScreen.storyboard in Resources */, 45E6080929ADD57100634200 /* UploadResource_1G.zip in Resources */, 4561F02C28D9A6F80098A697 /* UploadResource_14M.zip in Resources */, @@ -321,6 +335,24 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 75482DABF7ED9ABDE45EBF1C /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-QiniuDemo/Pods-QiniuDemo-resources.sh", + "${PODS_CONFIGURATION_BUILD_DIR}/Qiniu/Qiniu.privacy.bundle", + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Qiniu.privacy.bundle", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-QiniuDemo/Pods-QiniuDemo-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; 7BC7BFB54A15F4E854C3D84E /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; diff --git a/QiniuSDK.xcodeproj/project.pbxproj b/QiniuSDK.xcodeproj/project.pbxproj index b4e5b596..37b2a15c 100644 --- a/QiniuSDK.xcodeproj/project.pbxproj +++ b/QiniuSDK.xcodeproj/project.pbxproj @@ -601,6 +601,8 @@ 451A36B524BD893D00754A15 /* QNReportConfig.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = QNReportConfig.m; sourceTree = ""; }; 4543D6FE24D29B21006E28B1 /* QNDnsPrefetch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QNDnsPrefetch.h; sourceTree = ""; }; 4543D6FF24D29B21006E28B1 /* QNDnsPrefetch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QNDnsPrefetch.m; sourceTree = ""; }; + 4545D30B2BAD641500932C3F /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = ""; }; + 4545D30C2BAD64EE00932C3F /* info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = info.plist; sourceTree = ""; }; 4551E55D24CE81DA00447285 /* QNInetAddress.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = QNInetAddress.h; sourceTree = ""; }; 4551E55E24CE81DA00447285 /* QNInetAddress.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = QNInetAddress.m; sourceTree = ""; }; 4551E56524D0065100447285 /* NSData+QNMD5.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSData+QNMD5.h"; sourceTree = ""; }; @@ -984,6 +986,8 @@ DF2CDE4E19DAC6A400CE01FB /* Common */, DF2CDE5819DAC6A400CE01FB /* QiniuSDK.h */, DF2CDE5919DAC6A400CE01FB /* Storage */, + 4545D30B2BAD641500932C3F /* PrivacyInfo.xcprivacy */, + 4545D30C2BAD64EE00932C3F /* info.plist */, ); path = QiniuSDK; sourceTree = ""; diff --git a/QiniuSDK/PrivacyInfo.xcprivacy b/QiniuSDK/PrivacyInfo.xcprivacy new file mode 100644 index 00000000..6a4a08fd --- /dev/null +++ b/QiniuSDK/PrivacyInfo.xcprivacy @@ -0,0 +1,40 @@ + + + + + NSPrivacyTracking + + NSPrivacyCollectedDataTypes + + + NSPrivacyCollectedDataType + NSPrivacyCollectedDataTypeOtherDiagnosticData + NSPrivacyCollectedDataTypeLinked + + NSPrivacyCollectedDataTypeTracking + + NSPrivacyCollectedDataTypePurposes + + NSPrivacyCollectedDataTypePurposeAnalytics + + + + NSPrivacyTrackingDomains + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryDiskSpace + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryFileTimestamp + NSPrivacyAccessedAPITypeReasons + + C617.1 + + + + + diff --git a/QiniuSDK/info.plist b/QiniuSDK/info.plist new file mode 100644 index 00000000..ba9e346b --- /dev/null +++ b/QiniuSDK/info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 8.7.2 + CFBundleSignature + ???? + CFBundleVersion + 8.7.2 + NSPrincipalClass + + + From 79940c892180d08c50f235fc70b77c561c6e1421 Mon Sep 17 00:00:00 2001 From: YangSen-qn Date: Thu, 11 Apr 2024 12:00:23 +0800 Subject: [PATCH 17/19] version to v8.7.2 --- CHANGELOG.md | 3 +++ Qiniu.podspec | 4 ++-- QiniuSDK/PrivacyInfo.xcprivacy | 4 ---- QiniuSDK/Storage/QNUploadBlock.m | 2 +- QiniuSDK/Utils/QNVersion.h | 2 +- README.md | 4 ++-- 6 files changed, 9 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6ebf5e50..2f543faf 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,7 @@ #Changelog +## 8.7.2(2024-04-11) +- 增加 PrivacyInfo 文件 + ## 8.7.1(2023-11-23) - 查询区域的主备域名增加 uc.qiniuapi.com diff --git a/Qiniu.podspec b/Qiniu.podspec index 08e03d17..dc6487b9 100755 --- a/Qiniu.podspec +++ b/Qiniu.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'Qiniu' - s.version = '8.7.1' + s.version = '8.7.2' s.summary = 'Qiniu Resource Storage SDK for iOS and Mac' s.homepage = 'https://github.com/qiniu/objc-sdk' s.social_media_url = 'http://weibo.com/qiniutek' @@ -14,7 +14,7 @@ Pod::Spec.new do |s| s.resource_bundle = {"Qiniu.privacy"=>"QiniuSDK/PrivacyInfo.xcprivacy"} s.requires_arc = true s.libraries = 'z' - s.dependency 'HappyDNS', '~> 1.0.3' + s.dependency 'HappyDNS', '~> 1.0.4' s.license = { :type => "MIT", :text => <<-LICENSE The MIT License (MIT) diff --git a/QiniuSDK/PrivacyInfo.xcprivacy b/QiniuSDK/PrivacyInfo.xcprivacy index 6a4a08fd..9b24084f 100644 --- a/QiniuSDK/PrivacyInfo.xcprivacy +++ b/QiniuSDK/PrivacyInfo.xcprivacy @@ -23,10 +23,6 @@ NSPrivacyAccessedAPITypes - - NSPrivacyAccessedAPIType - NSPrivacyAccessedAPICategoryDiskSpace - NSPrivacyAccessedAPIType NSPrivacyAccessedAPICategoryFileTimestamp diff --git a/QiniuSDK/Storage/QNUploadBlock.m b/QiniuSDK/Storage/QNUploadBlock.m index 73fb85f5..3ef0fdf9 100644 --- a/QiniuSDK/Storage/QNUploadBlock.m +++ b/QiniuSDK/Storage/QNUploadBlock.m @@ -67,7 +67,7 @@ - (BOOL)isValid { } // 存在则有效期必须为过期 - return (self.expiredAt.doubleValue - 2*3600) > [[NSDate date] timeIntervalSince1970]; + return (self.expiredAt.doubleValue - 12*3600) > [[NSDate date] timeIntervalSince1970]; } - (BOOL)isCompleted{ diff --git a/QiniuSDK/Utils/QNVersion.h b/QiniuSDK/Utils/QNVersion.h index 56d5be71..8038f890 100755 --- a/QiniuSDK/Utils/QNVersion.h +++ b/QiniuSDK/Utils/QNVersion.h @@ -11,4 +11,4 @@ /** * sdk 版本 */ -static NSString *const kQiniuVersion = @"8.7.1"; +static NSString *const kQiniuVersion = @"8.7.2"; diff --git a/README.md b/README.md index c0f223ba..64548caa 100755 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ 通过 CocoaPods ```ruby -pod "Qiniu", "~> 8.7.1" +pod "Qiniu", "~> 8.7.2" ``` 通过 Swift Package Manager (Xcode 11+) @@ -26,7 +26,7 @@ File -> Swift Packages -> Add Package Dependency,输入库链接,选择相 库对接: let package = Package( dependencies: [ - .package(url: "https://github.com/qiniu/objc-sdk", from: "8.7.1") + .package(url: "https://github.com/qiniu/objc-sdk", from: "8.7.2") ], // ... ) From cf00aaa0cb7ec77662894e66150cf0b11b386640 Mon Sep 17 00:00:00 2001 From: YangSen-qn Date: Thu, 11 Apr 2024 14:06:44 +0800 Subject: [PATCH 18/19] change test token --- QiniuSDKTests/QNTestConfig.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/QiniuSDKTests/QNTestConfig.h b/QiniuSDKTests/QNTestConfig.h index 1c9a4e1f..347ff213 100755 --- a/QiniuSDKTests/QNTestConfig.h +++ b/QiniuSDKTests/QNTestConfig.h @@ -7,15 +7,15 @@ // #import // 华东上传凭证 -static NSString *const token_z0 = @"dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:p-qrZa0X1HIKHUb2CUimU-Gz1bU=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZTAtc3BhY2UiLCJkZWFkbGluZSI6MTcwMTg0NTQ4MCwgInJldHVybkJvZHkiOiJ7XCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpLCBcImZzaXplXCI6JChmc2l6ZSl9In0="; +static NSString *const token_z0 = @"dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:vOTAAiEjVihd1GsSHmxlAU8T6vM=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZTAtc3BhY2UiLCJkZWFkbGluZSI6MTcxNzk5OTUyNCwgInJldHVybkJvZHkiOiJ7XCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpLCBcImZzaXplXCI6JChmc2l6ZSl9In0="; // 华北上传凭证 -static NSString *const token_z1 = @"dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:5eSR6Vg2WePKVfMr2p7eXaaM7EU=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZTEtc3BhY2UiLCJkZWFkbGluZSI6MTcwMTg0NTQ4MCwgInJldHVybkJvZHkiOiJ7XCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpLCBcImZzaXplXCI6JChmc2l6ZSl9In0="; +static NSString *const token_z1 = @"dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:UDefrplLAoWDjRc_WPCA8ent6x4=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZTEtc3BhY2UiLCJkZWFkbGluZSI6MTcxNzk5OTUyNCwgInJldHVybkJvZHkiOiJ7XCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpLCBcImZzaXplXCI6JChmc2l6ZSl9In0="; // 华南上传凭证 -static NSString *const token_z2 = @"dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:Hym4cfOHK_RYdUSLqqGouc_AlTY=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZTItc3BhY2UiLCJkZWFkbGluZSI6MTcwMTg0NTQ4MCwgInJldHVybkJvZHkiOiJ7XCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpLCBcImZzaXplXCI6JChmc2l6ZSl9In0="; +static NSString *const token_z2 = @"dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:FVPdEs2eLOpONihNtlx3KB-3OIU=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZTItc3BhY2UiLCJkZWFkbGluZSI6MTcxNzk5OTUyNCwgInJldHVybkJvZHkiOiJ7XCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpLCBcImZzaXplXCI6JChmc2l6ZSl9In0="; // 北美上传凭证 -static NSString *const token_na0 = @"dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:nSIs92yDHj9V1iMkmrh12PLPoPU=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZS1uYTAtc3BhY2UiLCJkZWFkbGluZSI6MTcwMTg0NTQ4MCwgInJldHVybkJvZHkiOiJ7XCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpLCBcImZzaXplXCI6JChmc2l6ZSl9In0="; +static NSString *const token_na0 = @"dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:hvGD4q8SDrakpm_-ZRuMKfRxnk4=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZS1uYTAtc3BhY2UiLCJkZWFkbGluZSI6MTcxNzk5OTUyNCwgInJldHVybkJvZHkiOiJ7XCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpLCBcImZzaXplXCI6JChmc2l6ZSl9In0="; // 东南亚上传凭证 -static NSString *const token_as0 = @"dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:ja6Ihmi_8aiJZd3UO8QxKwMrOqc=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZS1hczAtc3BhY2UiLCJkZWFkbGluZSI6MTcwMTg0NTQ4MCwgInJldHVybkJvZHkiOiJ7XCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpLCBcImZzaXplXCI6JChmc2l6ZSl9In0="; +static NSString *const token_as0 = @"dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:SBE9cPtvW61dGpIFAtkCfZBGTIc=:eyJzY29wZSI6ImtvZG8tcGhvbmUtem9uZS1hczAtc3BhY2UiLCJkZWFkbGluZSI6MTcxNzk5OTUyNCwgInJldHVybkJvZHkiOiJ7XCJmb29cIjokKHg6Zm9vKSwgXCJiYXJcIjokKHg6YmFyKSwgXCJtaW1lVHlwZVwiOiQobWltZVR5cGUpLCBcImhhc2hcIjokKGV0YWcpLCBcImtleVwiOiQoa2V5KSwgXCJmbmFtZVwiOiQoZm5hbWUpLCBcImZzaXplXCI6JChmc2l6ZSl9In0="; // 华北浙江2上传凭证 -static NSString *const token_cn_east_2 = @"dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:7CPU3aGpEW6AcYa6iE0Ua8W6Bks=:eyJzY29wZSI6ImtvZG8tcGhvbmUtY24tZWFzdC0yIiwiZGVhZGxpbmUiOjE3MDE4NDU0ODAsICJyZXR1cm5Cb2R5Ijoie1wiZm9vXCI6JCh4OmZvbyksIFwiYmFyXCI6JCh4OmJhciksIFwibWltZVR5cGVcIjokKG1pbWVUeXBlKSwgXCJoYXNoXCI6JChldGFnKSwgXCJrZXlcIjokKGtleSksIFwiZm5hbWVcIjokKGZuYW1lKSwgXCJmc2l6ZVwiOiQoZnNpemUpfSJ9"; -static NSString *const invalidBucketToken = @"dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:mWQqNk5vkSnkB1S9Gti2vXBc8-o=:eyJzY29wZSI6InpvbmVfaW52YWxpZCIsImRlYWRsaW5lIjoxNzAxODQ1NDgwLCAicmV0dXJuQm9keSI6IntcImZvb1wiOiQoeDpmb28pLCBcImJhclwiOiQoeDpiYXIpLCBcIm1pbWVUeXBlXCI6JChtaW1lVHlwZSksIFwiaGFzaFwiOiQoZXRhZyksIFwia2V5XCI6JChrZXkpLCBcImZuYW1lXCI6JChmbmFtZSksIFwiZnNpemVcIjokKGZzaXplKX0ifQ=="; +static NSString *const token_cn_east_2 = @"dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:6VhwX-CEVo6tSFtJYuTQTStsfxc=:eyJzY29wZSI6ImtvZG8tcGhvbmUtY24tZWFzdC0yIiwiZGVhZGxpbmUiOjE3MTc5OTk1MjQsICJyZXR1cm5Cb2R5Ijoie1wiZm9vXCI6JCh4OmZvbyksIFwiYmFyXCI6JCh4OmJhciksIFwibWltZVR5cGVcIjokKG1pbWVUeXBlKSwgXCJoYXNoXCI6JChldGFnKSwgXCJrZXlcIjokKGtleSksIFwiZm5hbWVcIjokKGZuYW1lKSwgXCJmc2l6ZVwiOiQoZnNpemUpfSJ9"; +static NSString *const invalidBucketToken = @"dxVQk8gyk3WswArbNhdKIwmwibJ9nFsQhMNUmtIM:Dbn-bihW4WPkiIuIF0W_LYSKIZ0=:eyJzY29wZSI6InpvbmVfaW52YWxpZCIsImRlYWRsaW5lIjoxNzE3OTk5NTI0LCAicmV0dXJuQm9keSI6IntcImZvb1wiOiQoeDpmb28pLCBcImJhclwiOiQoeDpiYXIpLCBcIm1pbWVUeXBlXCI6JChtaW1lVHlwZSksIFwiaGFzaFwiOiQoZXRhZyksIFwia2V5XCI6JChrZXkpLCBcImZuYW1lXCI6JChmbmFtZSksIFwiZnNpemVcIjokKGZzaXplKX0ifQ=="; From 3f49fde783565828921a6debadad6f7cc0545a83 Mon Sep 17 00:00:00 2001 From: YangSen-qn Date: Thu, 11 Apr 2024 16:07:08 +0800 Subject: [PATCH 19/19] fix: test case --- QiniuSDKTests/QNCFHttpClientTest.m | 4 ++-- QiniuSDKTests/QNUploadErrorTest.m | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/QiniuSDKTests/QNCFHttpClientTest.m b/QiniuSDKTests/QNCFHttpClientTest.m index 221b4c06..7c4e17c2 100644 --- a/QiniuSDKTests/QNCFHttpClientTest.m +++ b/QiniuSDKTests/QNCFHttpClientTest.m @@ -85,7 +85,7 @@ - (void)testHttpPostByIP{ NSData *data = [@"This is a test" dataUsingEncoding:NSUTF8StringEncoding]; NSDictionary *params = @{@"token" : token_na0}; - NSURLRequest *request = [self postRequest:@"http://23.236.102.2" + NSURLRequest *request = [self postRequest:@"http://148.153.188.136" domain:@"up-na0.qiniup.com" param:params body:data]; @@ -95,7 +95,7 @@ - (void)testHttpPostByIP{ - (void)testHttpsPostByIP{ NSData *data = [@"This is a test" dataUsingEncoding:NSUTF8StringEncoding]; NSDictionary *params = @{@"token" : token_na0}; - NSURLRequest *request = [self postRequest:@"https://23.236.102.2" + NSURLRequest *request = [self postRequest:@"https://148.153.188.136" domain:@"up-na0.qiniup.com" param:params body:data]; diff --git a/QiniuSDKTests/QNUploadErrorTest.m b/QiniuSDKTests/QNUploadErrorTest.m index 6469df37..4d00d335 100644 --- a/QiniuSDKTests/QNUploadErrorTest.m +++ b/QiniuSDKTests/QNUploadErrorTest.m @@ -80,7 +80,7 @@ - (void)testError_414{ - (void)testError_614{ QNUploadErrorTestParam *param = [QNUploadErrorTestParam param]; - param.tempFile = [QNTempFile createTempFileWithSize:128]; + param.tempFile = [QNTempFile createTempFileWithSize:127]; __block BOOL isComplete = NO; [self upload:param complete:^(QNResponseInfo *i, NSString *k, NSDictionary *resp) {