Skip to content

Commit 54e5bfe

Browse files
author
erichmzhang
committed
New COSV4 release
1 parent 73f1568 commit 54e5bfe

File tree

7 files changed

+126
-13
lines changed

7 files changed

+126
-13
lines changed

QCloudNewCOSV4/Pod/Classes/QCloudCOS.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
#ifndef QCloudCOS_h
1010
#define QCloudCOS_h
11-
#import "QCloudCOSVersion.h"
11+
#import "QCloudNewCOSV4Version.h"
1212
#import "QCloudCreateDirectoryRequest.h"
1313
#import "QCloudCOSV4Service.h"
1414
#import "QCloudDeleteDirectoryRequest.h"

QCloudNewCOSV4/Pod/Classes/QCloudCOSVersion.h

Lines changed: 0 additions & 8 deletions
This file was deleted.

QCloudNewCOSV4/Pod/Classes/QCloudCOSVersion.m

Lines changed: 0 additions & 4 deletions
This file was deleted.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
//
2+
// QCloud Terminal Lab --- service for developers
3+
//
4+
#import <Foundation/Foundation.h>
5+
#import <QCloudCore/QCloudCoreVersion.h>
6+
7+
#ifndef QCloudNewCOSV4ModuleVersion_h
8+
#define QCloudNewCOSV4ModuleVersion_h
9+
#define QCloudNewCOSV4ModuleVersionNumber 503002
10+
11+
//dependency
12+
#if QCloudCoreModuleVersionNumber != 503002
13+
#error "库QCloudNewCOSV4依赖QCloudCore最小版本号为5.3.2,当前引入的QCloudCore版本号过低,请及时升级后使用"
14+
#endif
15+
16+
//
17+
FOUNDATION_EXTERN NSString * const QCloudNewCOSV4ModuleVersion;
18+
FOUNDATION_EXTERN NSString * const QCloudNewCOSV4ModuleName;
19+
20+
#endif
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#import "QCloudNewCOSV4Version.h"
2+
NSString * const QCloudNewCOSV4ModuleVersion = @"5.3.2";
3+
NSString * const QCloudNewCOSV4ModuleName = @"QCloudNewCOSV4";
4+
@interface QCloudQCloudNewCOSV4Load : NSObject
5+
@end
6+
7+
@implementation QCloudQCloudNewCOSV4Load
8+
+ (void) load
9+
{
10+
Class cla = NSClassFromString(@"QCloudSDKModuleManager");
11+
if (cla) {
12+
NSMutableDictionary* module = [@{
13+
@"name" : QCloudNewCOSV4ModuleName,
14+
@"version" : QCloudNewCOSV4ModuleVersion
15+
} mutableCopy];
16+
17+
NSString* buglyID = @"";
18+
if (buglyID.length > 0) {
19+
module[@"crashID"] = buglyID;
20+
}
21+
22+
#pragma clang diagnostic push
23+
#pragma clang diagnostic ignored "-Wundeclared-selector"
24+
id share = [cla performSelector:@selector(shareInstance)];
25+
[share performSelector:@selector(registerModuleByJSON:) withObject:module];
26+
#pragma clang diagnostic pop
27+
}
28+
}
29+
@end
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
//
2+
// QCloudRequestData+NewCOSV4Version.h
3+
// Pods-QCloudNewCOSV4Demo
4+
//
5+
// Created by erichmzhang(张恒铭) on 08/03/2018.
6+
//
7+
8+
#import <QCloudCore/QCloudCore.h>
9+
10+
@interface QCloudRequestData (NewCOSV4Version)
11+
12+
@end
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
//
2+
// QCloudRequestData+NewCOSV4Version.m
3+
// Pods-QCloudNewCOSV4Demo
4+
//
5+
// Created by erichmzhang(张恒铭) on 08/03/2018.
6+
//
7+
8+
#import "QCloudRequestData+NewCOSV4Version.h"
9+
static NSString* const kCOSXMLModuleName = @"QCloudNewCOSV4";
10+
11+
@implementation QCloudRequestData (NewCOSV4Version)
12+
+ (void)load {
13+
static dispatch_once_t onceToken;
14+
dispatch_once(&onceToken, ^{
15+
Class class = [self class];
16+
17+
SEL originalSelector = @selector(loadDefaultHTTPHeaders);
18+
SEL swizzledSelector = @selector(swizzle_loadDefaultHTTPHeaders);
19+
20+
Method originalMethod = class_getInstanceMethod(class, originalSelector);
21+
Method swizzledMethod = class_getInstanceMethod(class, swizzledSelector);
22+
23+
BOOL didAddMethod =
24+
class_addMethod(class,
25+
originalSelector,
26+
method_getImplementation(swizzledMethod),
27+
method_getTypeEncoding(swizzledMethod));
28+
29+
if (didAddMethod) {
30+
class_replaceMethod(class,
31+
swizzledSelector,
32+
method_getImplementation(originalMethod),
33+
method_getTypeEncoding(originalMethod));
34+
} else {
35+
method_exchangeImplementations(originalMethod, swizzledMethod);
36+
}
37+
});
38+
}
39+
40+
- (void)swizzle_loadDefaultHTTPHeaders
41+
{
42+
[self swizzle_loadDefaultHTTPHeaders];
43+
static NSDictionary* httpHeaders;
44+
static dispatch_once_t onceToken;
45+
dispatch_once(&onceToken, ^{
46+
__block NSString* versionString ;
47+
NSArray* modules = [[QCloudSDKModuleManager shareInstance] allModules];
48+
[modules enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
49+
QCloudSDKModule* module = obj;
50+
if ([module.name isEqualToString:kCOSXMLModuleName]) {
51+
versionString = module.version;
52+
*stop = YES;
53+
}
54+
}];
55+
NSString* userAgent = [NSString stringWithFormat:@"cos-newV4-ios-sdk-v%@",versionString];
56+
httpHeaders = @{@"Connection":@"keep-alive",
57+
HTTPHeaderUserAgent : userAgent};
58+
59+
});
60+
[httpHeaders enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
61+
[self setValue:obj forHTTPHeaderField:key];
62+
}];
63+
}
64+
@end

0 commit comments

Comments
 (0)