@@ -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