|
12 | 12 | #import <React/RCTConvert.h> |
13 | 13 | #import <React/RCTLog.h> |
14 | 14 | #import <React/RCTNetworkTask.h> |
15 | | -#import <React/RCTNetworking.h> |
16 | 15 | #import <React/RCTUtils.h> |
17 | 16 |
|
18 | 17 | #import <React/RCTHTTPRequestHandler.h> |
19 | 18 | #import <react/featureflags/ReactNativeFeatureFlags.h> |
20 | 19 |
|
21 | 20 | #import "RCTInspectorNetworkReporter.h" |
22 | 21 | #import "RCTNetworkPlugins.h" |
| 22 | +#import "RCTNetworking+Internal.h" |
| 23 | +#import "RCTNetworking.h" |
23 | 24 |
|
24 | 25 | typedef RCTURLRequestCancellationBlock (^RCTHTTPQueryResult)(NSError *error, NSDictionary<NSString *, id> *result); |
25 | 26 |
|
@@ -153,6 +154,7 @@ @implementation RCTNetworking { |
153 | 154 | NSArray<id<RCTURLRequestHandler>> * (^_handlersProvider)(RCTModuleRegistry *); |
154 | 155 | NSMutableArray<id<RCTNetworkingRequestHandler>> *_requestHandlers; |
155 | 156 | NSMutableArray<id<RCTNetworkingResponseHandler>> *_responseHandlers; |
| 157 | + NSMutableArray<id<RCTNetworkingTextResponseHandler>> *_textResponseHandlers; |
156 | 158 | dispatch_queue_t _requestQueue; |
157 | 159 | } |
158 | 160 |
|
@@ -672,6 +674,18 @@ - (void)sendRequest:(NSURLRequest *)request |
672 | 674 | if (!(incrementalUpdates && [responseType isEqualToString:@"text"])) { |
673 | 675 | [strongSelf sendData:data responseType:responseType response:response forTask:task]; |
674 | 676 | } |
| 677 | + |
| 678 | + if ([responseType isEqualToString:@"text"]) { |
| 679 | + for (id<RCTNetworkingTextResponseHandler> handler in strongSelf->_textResponseHandlers) { |
| 680 | + if ([handler canHandleNetworkingTextResponseForRequest:task.request]) { |
| 681 | + NSString *responseString = [RCTNetworking decodeTextData:data |
| 682 | + fromResponse:task.response |
| 683 | + withCarryData:[NSMutableData new]]; |
| 684 | + [handler handleNetworkingResponseText:responseString request:task.request]; |
| 685 | + } |
| 686 | + } |
| 687 | + } |
| 688 | + |
675 | 689 | NSArray *responseJSON = |
676 | 690 | @[ task.requestID, RCTNullIfNil(error.localizedDescription), error.code == kCFURLErrorTimedOut ? @YES : @NO ]; |
677 | 691 |
|
@@ -727,6 +741,14 @@ - (void)addResponseHandler:(id<RCTNetworkingResponseHandler>)handler |
727 | 741 | [_responseHandlers addObject:handler]; |
728 | 742 | } |
729 | 743 |
|
| 744 | +- (void)addTextResponseHandler:(id<RCTNetworkingTextResponseHandler>)handler |
| 745 | +{ |
| 746 | + if (!_textResponseHandlers) { |
| 747 | + _textResponseHandlers = [NSMutableArray new]; |
| 748 | + } |
| 749 | + [_textResponseHandlers addObject:handler]; |
| 750 | +} |
| 751 | + |
730 | 752 | - (void)removeRequestHandler:(id<RCTNetworkingRequestHandler>)handler |
731 | 753 | { |
732 | 754 | [_requestHandlers removeObject:handler]; |
|
0 commit comments