Skip to content

Commit be23783

Browse files
author
erichmzhang
committed
架构更改和增加了脚手架工具
1 parent f3cfd32 commit be23783

27 files changed

+437
-176
lines changed

QCloudCOSXML/Classes/QCloudCOSXMLService+Configuration.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ - (instancetype) initWithConfiguration:(QCloudServiceConfiguration *)configurati
4444
return self;
4545
}
4646

47-
- (void) loadAuthorizationForBiz:(QCloudBizHTTPRequest *)bizRequest urlRequest:(NSURLRequest *)urlrequest compelete:(QCloudHTTPAuthentationContinueBlock)cotinueBlock
47+
- (void) loadAuthorizationForBiz:(QCloudBizHTTPRequest *)bizRequest urlRequest:(NSMutableURLRequest *)urlrequest compelete:(QCloudHTTPAuthentationContinueBlock)cotinueBlock
4848
{
4949
[self loadCOSXMLAuthorizationForBiz:bizRequest urlRequest:urlrequest compelete:cotinueBlock];
5050
}

QCloudCOSXML/Classes/QCloudCOSXMLUploadObjectRequest.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -431,7 +431,7 @@ - (void) cancel
431431
if (NULL != _queueSource) {
432432
dispatch_source_cancel(_queueSource);
433433
}
434-
for (QCloudBizHTTPRequest* request in self.requestCacheArray) {
434+
for (QCloudBizHTTPRequest* request in [self.requestCacheArray copy]) {
435435
[request cancel];
436436
}
437437
}

QCloudCOSXML/Classes/auto-generation/QCloudUploadPartRequest+Custom.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,5 @@
2929
#import <Foundation/Foundation.h>
3030
#import "QCloudUploadPartRequest.h"
3131
@interface QCloudUploadPartRequest (Custom)
32-
- (BOOL) customBuildRequestData:(NSError *__autoreleasing *)error;
32+
3333
@end

QCloudCOSXML/Classes/auto-generation/QCloudUploadPartRequest+Custom.m

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,6 @@
2727
#import "QCloudUploadPartRequest+Custom.h"
2828
#import "QCloudUploadpartRequestRetryHandler.h"
2929
@implementation QCloudUploadPartRequest (Custom)
30-
- (NSMutableURLRequest*) cachedBuildURLRequest:(NSError* __autoreleasing*)error
31-
{
32-
NSMutableURLRequest* request = [super cachedBuildURLRequest:error];
33-
request.timeoutInterval = 60;
34-
return request;
35-
36-
}
3730

3831
- (QCloudHTTPRetryHanlder*)retryPolicy {
3932
QCloudUploadPartRequestRetryHandler* retryHandler = [[QCloudUploadPartRequestRetryHandler alloc] initWithMaxCount:3 sleepTime:1];

QCloudCOSXML/README.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,42 @@ SDK中的请求需要用到签名,以确访问的用户的身份,也保障
246246

247247
```
248248

249+
其实到这一步,您已经可以生成签名正常使用SDK里面的接口。但为了方便您实现临时签名,从服务器端获取tempSecretKey等临时签名需要的信息,我们提供了脚手架工具可供使用。您可以依照前面的代码来生成签名,也可以通过我们的脚手架工具QCloudCredentailFenceQueue来方便地获取临时签名。QCloudCredentailFenceQueue提供了栅栏机制,也就是说您使用QCloudCredentailFenceQueue去获取签名的话,所有需要获取签名的请求会等待签名完成后再执行,免去了自己管理异步过程的烦恼。
250+
使用QCloudCredentailFenceQueue,我们需要先生成一个实例。
251+
```objective-c
252+
//AppDelegate.m
253+
//AppDelegate需遵循QCloudCredentailFenceQueueDelegate协议
254+
//
255+
- (BOOL)application:(UIApplication * )application didFinishLaunchingWithOptions:(NSDictionary * )launchOptions {
256+
// init step
257+
self.credentialFenceQueue = [QCloudCredentailFenceQueue new];
258+
self.credentialFenceQueue.delegate = self;
259+
return YES;
260+
}
261+
```
262+
然后调用QCloudCredentailFenceQueue的类需要遵循QCloudCredentailFenceQueueDelegate并实现协议内定义的方法:
263+
```objective-c
264+
- (void) fenceQueue:(QCloudCredentailFenceQueue * )queue requestCreatorWithContinue:(QCloudCredentailFenceQueueContinue)continueBlock
265+
```
266+
当通过QCloudCredentailFenceQueue去获取签名时,所有需要签名的SDK里的请求都会等待该协议定义的方法内拿到了签名所需的参数并生成有效的签名后执行。请看以下例子
267+
```objective-c
268+
//AppDelegate.m
269+
- (void) fenceQueue:(QCloudCredentailFenceQueue * )queue requestCreatorWithContinue:(QCloudCredentailFenceQueueContinue)continueBlock
270+
{
271+
QCloudCredential* credential = [QCloudCredential new];
272+
//在这里可以同步过程从服务器获取临时签名需要的secretID,secretKey,expiretionDate和token参数
273+
credential.secretID = @"****";
274+
credential.secretKey = @"****";
275+
credential.experationDate = [NSDate dateWithTimeIntervalSince1970:1504183628];
276+
credential.token = @"****";
277+
QCloudAuthentationV5Creator* creator = [[QCloudAuthentationV5Creator alloc] initWithCredential:credential];
278+
continueBlock(creator, nil);
279+
}
280+
281+
```
282+
至此,就可以通过我们提供的脚手架工具来生成临时签名了。当然您也可以自己去实现具体的签名过程
283+
284+
249285

250286

251287
## 存储桶操作

QCloudCore/Classes/QCLOUDRestNet/CoreRequest/QCloudHTTPRequest.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,6 @@ typedef void(^QCloudHTTPRequestConfigure)(QCloudRequestSerializer* requestSerial
7878

7979
- (void) setConfigureBlock:(void(^)(QCloudRequestSerializer* requestSerializer, QCloudResponseSerializer* responseSerializer))configBlock;
8080

81-
- (void) clearBuildCache;
82-
- (NSMutableURLRequest*) cachedBuildURLRequest:(NSError* __autoreleasing*)error;
8381
/**
8482
构架RequestData,加载自定义的参数
8583
*/
@@ -119,7 +117,7 @@ typedef void(^QCloudHTTPRequestConfigure)(QCloudRequestSerializer* requestSerial
119117

120118

121119

122-
- (NSURLRequest*) prepareInvokeURLRequest:(NSURLRequest *)urlRequest error:(NSError* __autoreleasing*)error;
120+
- (BOOL ) prepareInvokeURLRequest:(NSMutableURLRequest*)urlRequest error:(NSError* __autoreleasing*)error;
123121
@end
124122

125123

QCloudCore/Classes/QCLOUDRestNet/CoreRequest/QCloudHTTPRequest.m

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -128,29 +128,6 @@ - (void) clearBuildCache
128128
_cachedURLRequestBuildError = nil;
129129
}
130130

131-
- (NSMutableURLRequest*) cachedBuildURLRequest:(NSError* __autoreleasing*)error
132-
{
133-
NSError* localError = nil;
134-
if (self.cachedURLRequestBuildError) {
135-
if (NULL != error) {
136-
*error = localError;
137-
}
138-
return nil;
139-
}
140-
if (_cachedURLRequest) {
141-
return _cachedURLRequest;
142-
} else {
143-
_cachedURLRequest = [[self buildURLRequest:&localError] mutableCopy];
144-
if (localError) {
145-
if (NULL != error) {
146-
*error = localError;
147-
}
148-
}
149-
return _cachedURLRequest;
150-
}
151-
}
152-
153-
154131
- (NSURLRequest*) buildURLRequest:(NSError* __autoreleasing*)error
155132
{
156133
[self.benchMarkMan benginWithKey:kRNBenchmarkRTT];
@@ -218,9 +195,9 @@ - (void) onReciveRespone:(NSHTTPURLResponse *)response data:(NSData *)data
218195
}
219196
}
220197

221-
- (NSURLRequest*) prepareInvokeURLRequest:(NSURLRequest *)urlRequest error:(NSError* __autoreleasing*)error
198+
- (BOOL) prepareInvokeURLRequest:(NSMutableURLRequest*)urlRequest error:(NSError* __autoreleasing*)error
222199
{
223-
return urlRequest;
200+
return YES;
224201
}
225202

226203
- (void) cancel

QCloudCore/Classes/QCLOUDRestNet/CoreRequest/Serializer/QCloudResponseSerializer.m

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,12 @@ QCloudResponseSerializerBlock QCloudAcceptRespnseCodeBlock(NSSet* acceptCode, Cl
9393
} else {
9494
userInfo = map;
9595
}
96+
} else if ([contentType.lowercaseString containsString:@"application/xml"]) {
97+
QCloudXMLDictionaryParser* parser = [QCloudXMLDictionaryParser new];
98+
NSDictionary* output = [parser dictionaryWithData:inputData];
99+
if (output) {
100+
userInfo = output;
101+
}
96102
}
97103
}
98104

QCloudCore/Classes/QCLOUDRestNet/DNSCache/QCloudHttpDNS.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ extern NSString* const kQCloudHttpDNSHost;
3131
@param request 需要被重定向的URLRequest
3232
@return 如果改URLRequest原始指向的URL中的host对应的IP已经被解析了,则进行重定向操作,如果没有直接返回原始URLReqest
3333
*/
34-
- (NSURLRequest*) resolveURLRequestIfCan:(NSURLRequest*)request;
34+
- (NSMutableURLRequest*) resolveURLRequestIfCan:(NSMutableURLRequest*)request;
3535

3636
/**
3737
判断一个IP是否是被解析出来,且被信任的

QCloudCore/Classes/QCLOUDRestNet/DNSCache/QCloudHttpDNS.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ - (NSString*) queryIPForHost:(NSString*)host
8989
}
9090
return nil;
9191
}
92-
- (NSURLRequest*) resolveURLRequestIfCan:(NSURLRequest*)request
92+
- (NSMutableURLRequest*) resolveURLRequestIfCan:(NSMutableURLRequest*)request
9393
{
9494
if (!request) {
9595
return request;

0 commit comments

Comments
 (0)