Skip to content

Commit 4cf09b2

Browse files
committed
feat: validator for http client
1 parent cc051b9 commit 4cf09b2

File tree

2 files changed

+47
-2
lines changed

2 files changed

+47
-2
lines changed

AVOS/Sources/Foundation/Request/LCPaasClient.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,17 @@ FOUNDATION_EXPORT NSString * const LCHeaderFieldNameProduction;
122122
failure:(void (^)(NSHTTPURLResponse *response, id responseObject, NSError *error))failureBlock;
123123

124124
- (void)performRequest:(NSURLRequest *)request
125+
validator:(BOOL (^)(NSHTTPURLResponse *response, id responseObject))validator
126+
success:(void (^)(NSHTTPURLResponse *response, id responseObject))successBlock
127+
failure:(void (^)(NSHTTPURLResponse *response, id responseObject, NSError *error))failureBlock;
128+
129+
- (void)performRequest:(NSURLRequest *)request
130+
success:(void (^)(NSHTTPURLResponse *response, id responseObject))successBlock
131+
failure:(void (^)(NSHTTPURLResponse *response, id responseObject, NSError *error))failureBlock
132+
wait:(BOOL)wait;
133+
134+
- (void)performRequest:(NSURLRequest *)request
135+
validator:(BOOL (^)(NSHTTPURLResponse *response, id responseObject))validator
125136
success:(void (^)(NSHTTPURLResponse *response, id responseObject))successBlock
126137
failure:(void (^)(NSHTTPURLResponse *response, id responseObject, NSError *error))failureBlock
127138
wait:(BOOL)wait;

AVOS/Sources/Foundation/Request/LCPaasClient.m

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -541,12 +541,37 @@ - (void)performRequest:(NSURLRequest *)request
541541
failure:(void (^)(NSHTTPURLResponse *response, id responseObject, NSError *error))failureBlock
542542
{
543543
[self performRequest:request
544+
validator:nil
545+
success:successBlock
546+
failure:failureBlock];
547+
}
548+
549+
- (void)performRequest:(NSURLRequest *)request
550+
validator:(BOOL (^)(NSHTTPURLResponse *, id))validator
551+
success:(void (^)(NSHTTPURLResponse *, id))successBlock
552+
failure:(void (^)(NSHTTPURLResponse *, id, NSError *))failureBlock
553+
{
554+
[self performRequest:request
555+
validator:validator
544556
success:successBlock
545557
failure:failureBlock
546558
wait:NO];
547559
}
548560

549561
- (void)performRequest:(NSURLRequest *)request
562+
success:(void (^)(NSHTTPURLResponse *, id))successBlock
563+
failure:(void (^)(NSHTTPURLResponse *, id, NSError *))failureBlock
564+
wait:(BOOL)wait
565+
{
566+
[self performRequest:request
567+
validator:nil
568+
success:successBlock
569+
failure:failureBlock
570+
wait:wait];
571+
}
572+
573+
- (void)performRequest:(NSURLRequest *)request
574+
validator:(BOOL (^)(NSHTTPURLResponse *, id))validator
550575
success:(void (^)(NSHTTPURLResponse *response, id responseObject))successBlock
551576
failure:(void (^)(NSHTTPURLResponse *response, id responseObject, NSError *error))failureBlock
552577
wait:(BOOL)wait
@@ -593,8 +618,17 @@ - (void)performRequest:(NSURLRequest *)request
593618
} else {
594619
NSTimeInterval costTime = -([operationEnqueueDate timeIntervalSinceNow] * 1000);
595620
LCLoggerDebug(LCLoggerDomainNetwork, LC_REST_RESPONSE_LOG_FORMAT, path, costTime, responseObject);
596-
if (successBlock) {
597-
successBlock(HTTPResponse, responseObject);
621+
if (validator && !validator(HTTPResponse, responseObject)) {
622+
if (failureBlock) {
623+
NSError *err = LCError(LCErrorInternalErrorCodeMalformedData,
624+
@"Malformed response data.",
625+
@{ @"responseObject" : responseObject ?: NSNull.null });
626+
failureBlock(HTTPResponse, responseObject, err);
627+
}
628+
} else {
629+
if (successBlock) {
630+
successBlock(HTTPResponse, responseObject);
631+
}
598632
}
599633
}
600634
if (wait) {

0 commit comments

Comments
 (0)